Skip to content

Commit 7e45901

Browse files
committed
sellc hermitian transpose
1 parent 5ceef37 commit 7e45901

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

src/stdlib_sparse_spmv.fypp

+37
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,43 @@ contains
504504
end do
505505
end associate
506506
end if
507+
508+
#:if t1.startswith('complex')
509+
else if( storage == sparse_full .and. op_==sparse_op_hermitian ) then
510+
511+
select case(cs)
512+
#:for chunk in CHUNKS
513+
case(${chunk}$)
514+
do i = 1, num_chunks
515+
nz = ia(i+1) - ia(i)
516+
rowidx = (i - 1)*${chunk}$ + 1
517+
associate(col => ja(1:${chunk}$,ia(i):ia(i)+nz-1), mat => data(1:${chunk}$,ia(i):ia(i)+nz-1), &
518+
& x => vec_x(rowidx:rowidx+${chunk}$-1), y => vec_y )
519+
do j = 1, nz
520+
do k = 1, ${chunk}$
521+
if(col(k,j) > 0) y(col(k,j)) = y(col(k,j)) + alpha_ * conjg(mat(k,j)) * x(k)
522+
end do
523+
end do
524+
end associate
525+
end do
526+
#:endfor
527+
end select
528+
529+
! remainder
530+
if(rm>0)then
531+
i = num_chunks + 1
532+
nz = ia(i+1) - ia(i)
533+
rowidx = (i - 1)*cs + 1
534+
associate(col => ja(1:cs,ia(i):ia(i)+nz-1), mat => data(1:cs,ia(i):ia(i)+nz-1), &
535+
& x => vec_x(rowidx:rowidx+rm-1), y => vec_y )
536+
do j = 1, nz
537+
do k = 1, rm
538+
if(col(k,j) > 0) y(col(k,j)) = y(col(k,j)) + alpha_ * conjg(mat(k,j)) * x(k)
539+
end do
540+
end do
541+
end associate
542+
end if
543+
#:endif
507544
else
508545
print *, "error: sellc format for spmv operation not yet supported."
509546
return

0 commit comments

Comments
 (0)