|
|
@ -99,10 +99,10 @@ contains
|
|
|
|
integer :: i,j,k, ir, jc
|
|
|
|
integer :: i,j,k, ir, jc
|
|
|
|
complex(psb_spk_) :: acc
|
|
|
|
complex(psb_spk_) :: acc
|
|
|
|
|
|
|
|
|
|
|
|
if (alpha == dzero) then
|
|
|
|
if (alpha == czero) then
|
|
|
|
if (beta == dzero) then
|
|
|
|
if (beta == czero) then
|
|
|
|
do i = 1, m
|
|
|
|
do i = 1, m
|
|
|
|
y(i) = dzero
|
|
|
|
y(i) = czero
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
|
else
|
|
|
|
else
|
|
|
|
do i = 1, m
|
|
|
|
do i = 1, m
|
|
|
@ -115,21 +115,21 @@ contains
|
|
|
|
|
|
|
|
|
|
|
|
if ((.not.tra).and.(.not.ctra)) then
|
|
|
|
if ((.not.tra).and.(.not.ctra)) then
|
|
|
|
|
|
|
|
|
|
|
|
if (beta == dzero) then
|
|
|
|
if (beta == czero) then
|
|
|
|
|
|
|
|
|
|
|
|
if (alpha == done) then
|
|
|
|
if (alpha == cone) then
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc = dzero
|
|
|
|
acc = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
|
y(i) = acc
|
|
|
|
y(i) = acc
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
|
|
|
|
|
|
|
|
else if (alpha == -done) then
|
|
|
|
else if (alpha == -cone) then
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc = dzero
|
|
|
|
acc = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
@ -139,7 +139,7 @@ contains
|
|
|
|
else
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc = dzero
|
|
|
|
acc = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
@ -149,21 +149,21 @@ contains
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
else if (beta == done) then
|
|
|
|
else if (beta == cone) then
|
|
|
|
|
|
|
|
|
|
|
|
if (alpha == done) then
|
|
|
|
if (alpha == cone) then
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc = dzero
|
|
|
|
acc = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
|
y(i) = y(i) + acc
|
|
|
|
y(i) = y(i) + acc
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
|
|
|
|
|
|
|
|
else if (alpha == -done) then
|
|
|
|
else if (alpha == -cone) then
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc = dzero
|
|
|
|
acc = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
@ -173,7 +173,7 @@ contains
|
|
|
|
else
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc = dzero
|
|
|
|
acc = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
@ -182,21 +182,21 @@ contains
|
|
|
|
|
|
|
|
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
else if (beta == -done) then
|
|
|
|
else if (beta == -cone) then
|
|
|
|
|
|
|
|
|
|
|
|
if (alpha == done) then
|
|
|
|
if (alpha == cone) then
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc = dzero
|
|
|
|
acc = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
|
y(i) = -y(i) + acc
|
|
|
|
y(i) = -y(i) + acc
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
|
|
|
|
|
|
|
|
else if (alpha == -done) then
|
|
|
|
else if (alpha == -cone) then
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc = dzero
|
|
|
|
acc = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
@ -206,7 +206,7 @@ contains
|
|
|
|
else
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc = dzero
|
|
|
|
acc = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
@ -217,19 +217,19 @@ contains
|
|
|
|
|
|
|
|
|
|
|
|
else
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
|
|
if (alpha == done) then
|
|
|
|
if (alpha == cone) then
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc = dzero
|
|
|
|
acc = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
|
y(i) = beta*y(i) + acc
|
|
|
|
y(i) = beta*y(i) + acc
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
|
|
|
|
|
|
|
|
else if (alpha == -done) then
|
|
|
|
else if (alpha == -cone) then
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc = dzero
|
|
|
|
acc = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
@ -239,7 +239,7 @@ contains
|
|
|
|
else
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc = dzero
|
|
|
|
acc = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
acc = acc + val(j) * x(ja(j))
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
@ -252,13 +252,13 @@ contains
|
|
|
|
|
|
|
|
|
|
|
|
else if (tra) then
|
|
|
|
else if (tra) then
|
|
|
|
|
|
|
|
|
|
|
|
if (beta == dzero) then
|
|
|
|
if (beta == czero) then
|
|
|
|
do i=1, m
|
|
|
|
do i=1, m
|
|
|
|
y(i) = dzero
|
|
|
|
y(i) = czero
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
else if (beta == done) then
|
|
|
|
else if (beta == cone) then
|
|
|
|
! Do nothing
|
|
|
|
! Do nothing
|
|
|
|
else if (beta == -done) then
|
|
|
|
else if (beta == -cone) then
|
|
|
|
do i=1, m
|
|
|
|
do i=1, m
|
|
|
|
y(i) = -y(i)
|
|
|
|
y(i) = -y(i)
|
|
|
|
end do
|
|
|
|
end do
|
|
|
@ -268,7 +268,7 @@ contains
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
if (alpha == done) then
|
|
|
|
if (alpha == cone) then
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,n
|
|
|
|
do i=1,n
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
@ -277,7 +277,7 @@ contains
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
|
|
|
|
|
|
|
|
|
else if (alpha == -done) then
|
|
|
|
else if (alpha == -cone) then
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,n
|
|
|
|
do i=1,n
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
@ -299,13 +299,13 @@ contains
|
|
|
|
|
|
|
|
|
|
|
|
else if (ctra) then
|
|
|
|
else if (ctra) then
|
|
|
|
|
|
|
|
|
|
|
|
if (beta == dzero) then
|
|
|
|
if (beta == czero) then
|
|
|
|
do i=1, m
|
|
|
|
do i=1, m
|
|
|
|
y(i) = dzero
|
|
|
|
y(i) = czero
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
else if (beta == done) then
|
|
|
|
else if (beta == cone) then
|
|
|
|
! Do nothing
|
|
|
|
! Do nothing
|
|
|
|
else if (beta == -done) then
|
|
|
|
else if (beta == -cone) then
|
|
|
|
do i=1, m
|
|
|
|
do i=1, m
|
|
|
|
y(i) = -y(i)
|
|
|
|
y(i) = -y(i)
|
|
|
|
end do
|
|
|
|
end do
|
|
|
@ -315,7 +315,7 @@ contains
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
if (alpha == done) then
|
|
|
|
if (alpha == cone) then
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,n
|
|
|
|
do i=1,n
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
@ -324,7 +324,7 @@ contains
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
|
|
|
|
|
|
|
|
|
else if (alpha == -done) then
|
|
|
|
else if (alpha == -cone) then
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,n
|
|
|
|
do i=1,n
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
@ -451,10 +451,10 @@ contains
|
|
|
|
integer :: i,j,k, ir, jc
|
|
|
|
integer :: i,j,k, ir, jc
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (alpha == dzero) then
|
|
|
|
if (alpha == czero) then
|
|
|
|
if (beta == dzero) then
|
|
|
|
if (beta == czero) then
|
|
|
|
do i = 1, m
|
|
|
|
do i = 1, m
|
|
|
|
y(i,1:nc) = dzero
|
|
|
|
y(i,1:nc) = czero
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
|
else
|
|
|
|
else
|
|
|
|
do i = 1, m
|
|
|
|
do i = 1, m
|
|
|
@ -465,21 +465,21 @@ contains
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
if ((.not.tra).and.(.not.ctra)) then
|
|
|
|
if ((.not.tra).and.(.not.ctra)) then
|
|
|
|
if (beta == dzero) then
|
|
|
|
if (beta == czero) then
|
|
|
|
|
|
|
|
|
|
|
|
if (alpha == done) then
|
|
|
|
if (alpha == cone) then
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc(1:nc) = dzero
|
|
|
|
acc(1:nc) = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
|
y(i,1:nc) = acc(1:nc)
|
|
|
|
y(i,1:nc) = acc(1:nc)
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
|
|
|
|
|
|
|
|
else if (alpha == -done) then
|
|
|
|
else if (alpha == -cone) then
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc(1:nc) = dzero
|
|
|
|
acc(1:nc) = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
@ -489,7 +489,7 @@ contains
|
|
|
|
else
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc(1:nc) = dzero
|
|
|
|
acc(1:nc) = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
@ -499,21 +499,21 @@ contains
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
else if (beta == done) then
|
|
|
|
else if (beta == cone) then
|
|
|
|
|
|
|
|
|
|
|
|
if (alpha == done) then
|
|
|
|
if (alpha == cone) then
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc(1:nc) = dzero
|
|
|
|
acc(1:nc) = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
|
y(i,1:nc) = y(i,1:nc) + acc(1:nc)
|
|
|
|
y(i,1:nc) = y(i,1:nc) + acc(1:nc)
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
|
|
|
|
|
|
|
|
else if (alpha == -done) then
|
|
|
|
else if (alpha == -cone) then
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc(1:nc) = dzero
|
|
|
|
acc(1:nc) = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
@ -523,7 +523,7 @@ contains
|
|
|
|
else
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc(1:nc) = dzero
|
|
|
|
acc(1:nc) = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
@ -532,21 +532,21 @@ contains
|
|
|
|
|
|
|
|
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
else if (beta == -done) then
|
|
|
|
else if (beta == -cone) then
|
|
|
|
|
|
|
|
|
|
|
|
if (alpha == done) then
|
|
|
|
if (alpha == cone) then
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc(1:nc) = dzero
|
|
|
|
acc(1:nc) = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
|
y(i,1:nc) = -y(i,1:nc) + acc(1:nc)
|
|
|
|
y(i,1:nc) = -y(i,1:nc) + acc(1:nc)
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
|
|
|
|
|
|
|
|
else if (alpha == -done) then
|
|
|
|
else if (alpha == -cone) then
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc(1:nc) = dzero
|
|
|
|
acc(1:nc) = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
@ -556,7 +556,7 @@ contains
|
|
|
|
else
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc(1:nc) = dzero
|
|
|
|
acc(1:nc) = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
@ -567,19 +567,19 @@ contains
|
|
|
|
|
|
|
|
|
|
|
|
else
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
|
|
if (alpha == done) then
|
|
|
|
if (alpha == cone) then
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc(1:nc) = dzero
|
|
|
|
acc(1:nc) = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
|
y(i,1:nc) = beta*y(i,1:nc) + acc(1:nc)
|
|
|
|
y(i,1:nc) = beta*y(i,1:nc) + acc(1:nc)
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
|
|
|
|
|
|
|
|
else if (alpha == -done) then
|
|
|
|
else if (alpha == -cone) then
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc(1:nc) = dzero
|
|
|
|
acc(1:nc) = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
@ -589,7 +589,7 @@ contains
|
|
|
|
else
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,m
|
|
|
|
do i=1,m
|
|
|
|
acc(1:nc) = dzero
|
|
|
|
acc(1:nc) = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
acc(1:nc) = acc(1:nc) + val(j) * x(ja(j),1:nc)
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
@ -602,13 +602,13 @@ contains
|
|
|
|
|
|
|
|
|
|
|
|
else if (tra) then
|
|
|
|
else if (tra) then
|
|
|
|
|
|
|
|
|
|
|
|
if (beta == dzero) then
|
|
|
|
if (beta == czero) then
|
|
|
|
do i=1, m
|
|
|
|
do i=1, m
|
|
|
|
y(i,1:nc) = dzero
|
|
|
|
y(i,1:nc) = czero
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
else if (beta == done) then
|
|
|
|
else if (beta == cone) then
|
|
|
|
! Do nothing
|
|
|
|
! Do nothing
|
|
|
|
else if (beta == -done) then
|
|
|
|
else if (beta == -cone) then
|
|
|
|
do i=1, m
|
|
|
|
do i=1, m
|
|
|
|
y(i,1:nc) = -y(i,1:nc)
|
|
|
|
y(i,1:nc) = -y(i,1:nc)
|
|
|
|
end do
|
|
|
|
end do
|
|
|
@ -618,7 +618,7 @@ contains
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
if (alpha == done) then
|
|
|
|
if (alpha == cone) then
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,n
|
|
|
|
do i=1,n
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
@ -627,7 +627,7 @@ contains
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
|
|
|
|
|
|
|
|
|
else if (alpha == -done) then
|
|
|
|
else if (alpha == -cone) then
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,n
|
|
|
|
do i=1,n
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
@ -649,13 +649,13 @@ contains
|
|
|
|
|
|
|
|
|
|
|
|
else if (ctra) then
|
|
|
|
else if (ctra) then
|
|
|
|
|
|
|
|
|
|
|
|
if (beta == dzero) then
|
|
|
|
if (beta == czero) then
|
|
|
|
do i=1, m
|
|
|
|
do i=1, m
|
|
|
|
y(i,1:nc) = dzero
|
|
|
|
y(i,1:nc) = czero
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
else if (beta == done) then
|
|
|
|
else if (beta == cone) then
|
|
|
|
! Do nothing
|
|
|
|
! Do nothing
|
|
|
|
else if (beta == -done) then
|
|
|
|
else if (beta == -cone) then
|
|
|
|
do i=1, m
|
|
|
|
do i=1, m
|
|
|
|
y(i,1:nc) = -y(i,1:nc)
|
|
|
|
y(i,1:nc) = -y(i,1:nc)
|
|
|
|
end do
|
|
|
|
end do
|
|
|
@ -665,7 +665,7 @@ contains
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
if (alpha == done) then
|
|
|
|
if (alpha == cone) then
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,n
|
|
|
|
do i=1,n
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
@ -674,7 +674,7 @@ contains
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
|
|
|
|
|
|
|
|
|
else if (alpha == -done) then
|
|
|
|
else if (alpha == -cone) then
|
|
|
|
|
|
|
|
|
|
|
|
do i=1,n
|
|
|
|
do i=1,n
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
@ -762,10 +762,10 @@ subroutine psb_c_csr_cssv(alpha,a,x,beta,y,info,trans)
|
|
|
|
goto 9999
|
|
|
|
goto 9999
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
if (alpha == dzero) then
|
|
|
|
if (alpha == czero) then
|
|
|
|
if (beta == dzero) then
|
|
|
|
if (beta == czero) then
|
|
|
|
do i = 1, m
|
|
|
|
do i = 1, m
|
|
|
|
y(i) = dzero
|
|
|
|
y(i) = czero
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
|
else
|
|
|
|
else
|
|
|
|
do i = 1, m
|
|
|
|
do i = 1, m
|
|
|
@ -775,13 +775,13 @@ subroutine psb_c_csr_cssv(alpha,a,x,beta,y,info,trans)
|
|
|
|
return
|
|
|
|
return
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
if (beta == dzero) then
|
|
|
|
if (beta == czero) then
|
|
|
|
|
|
|
|
|
|
|
|
call inner_csrsv(tra,ctra,a%is_lower(),a%is_unit(),a%get_nrows(),&
|
|
|
|
call inner_csrsv(tra,ctra,a%is_lower(),a%is_unit(),a%get_nrows(),&
|
|
|
|
& a%irp,a%ja,a%val,x,y)
|
|
|
|
& a%irp,a%ja,a%val,x,y)
|
|
|
|
if (alpha == done) then
|
|
|
|
if (alpha == cone) then
|
|
|
|
! do nothing
|
|
|
|
! do nothing
|
|
|
|
else if (alpha == -done) then
|
|
|
|
else if (alpha == -cone) then
|
|
|
|
do i = 1, m
|
|
|
|
do i = 1, m
|
|
|
|
y(i) = -y(i)
|
|
|
|
y(i) = -y(i)
|
|
|
|
end do
|
|
|
|
end do
|
|
|
@ -833,7 +833,7 @@ contains
|
|
|
|
if (lower) then
|
|
|
|
if (lower) then
|
|
|
|
if (unit) then
|
|
|
|
if (unit) then
|
|
|
|
do i=1, n
|
|
|
|
do i=1, n
|
|
|
|
acc = dzero
|
|
|
|
acc = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc = acc + val(j)*y(ja(j))
|
|
|
|
acc = acc + val(j)*y(ja(j))
|
|
|
|
end do
|
|
|
|
end do
|
|
|
@ -841,7 +841,7 @@ contains
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
else if (.not.unit) then
|
|
|
|
else if (.not.unit) then
|
|
|
|
do i=1, n
|
|
|
|
do i=1, n
|
|
|
|
acc = dzero
|
|
|
|
acc = czero
|
|
|
|
do j=irp(i), irp(i+1)-2
|
|
|
|
do j=irp(i), irp(i+1)-2
|
|
|
|
acc = acc + val(j)*y(ja(j))
|
|
|
|
acc = acc + val(j)*y(ja(j))
|
|
|
|
end do
|
|
|
|
end do
|
|
|
@ -852,7 +852,7 @@ contains
|
|
|
|
|
|
|
|
|
|
|
|
if (unit) then
|
|
|
|
if (unit) then
|
|
|
|
do i=n, 1, -1
|
|
|
|
do i=n, 1, -1
|
|
|
|
acc = dzero
|
|
|
|
acc = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc = acc + val(j)*y(ja(j))
|
|
|
|
acc = acc + val(j)*y(ja(j))
|
|
|
|
end do
|
|
|
|
end do
|
|
|
@ -860,7 +860,7 @@ contains
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
else if (.not.unit) then
|
|
|
|
else if (.not.unit) then
|
|
|
|
do i=n, 1, -1
|
|
|
|
do i=n, 1, -1
|
|
|
|
acc = dzero
|
|
|
|
acc = czero
|
|
|
|
do j=irp(i)+1, irp(i+1)-1
|
|
|
|
do j=irp(i)+1, irp(i+1)-1
|
|
|
|
acc = acc + val(j)*y(ja(j))
|
|
|
|
acc = acc + val(j)*y(ja(j))
|
|
|
|
end do
|
|
|
|
end do
|
|
|
@ -1020,10 +1020,10 @@ subroutine psb_c_csr_cssm(alpha,a,x,beta,y,info,trans)
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (alpha == dzero) then
|
|
|
|
if (alpha == czero) then
|
|
|
|
if (beta == dzero) then
|
|
|
|
if (beta == czero) then
|
|
|
|
do i = 1, m
|
|
|
|
do i = 1, m
|
|
|
|
y(i,:) = dzero
|
|
|
|
y(i,:) = czero
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
|
else
|
|
|
|
else
|
|
|
|
do i = 1, m
|
|
|
|
do i = 1, m
|
|
|
@ -1033,7 +1033,7 @@ subroutine psb_c_csr_cssm(alpha,a,x,beta,y,info,trans)
|
|
|
|
return
|
|
|
|
return
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
if (beta == dzero) then
|
|
|
|
if (beta == czero) then
|
|
|
|
call inner_csrsm(tra,ctra,a%is_lower(),a%is_unit(),a%get_nrows(),nc,&
|
|
|
|
call inner_csrsm(tra,ctra,a%is_lower(),a%is_unit(),a%get_nrows(),nc,&
|
|
|
|
& a%irp,a%ja,a%val,x,size(x,1),y,size(y,1),info)
|
|
|
|
& a%irp,a%ja,a%val,x,size(x,1),y,size(y,1),info)
|
|
|
|
do i = 1, m
|
|
|
|
do i = 1, m
|
|
|
@ -1099,7 +1099,7 @@ contains
|
|
|
|
if (lower) then
|
|
|
|
if (lower) then
|
|
|
|
if (unit) then
|
|
|
|
if (unit) then
|
|
|
|
do i=1, nr
|
|
|
|
do i=1, nr
|
|
|
|
acc = dzero
|
|
|
|
acc = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc = acc + val(j)*y(ja(j),1:nc)
|
|
|
|
acc = acc + val(j)*y(ja(j),1:nc)
|
|
|
|
end do
|
|
|
|
end do
|
|
|
@ -1107,7 +1107,7 @@ contains
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
else if (.not.unit) then
|
|
|
|
else if (.not.unit) then
|
|
|
|
do i=1, nr
|
|
|
|
do i=1, nr
|
|
|
|
acc = dzero
|
|
|
|
acc = czero
|
|
|
|
do j=irp(i), irp(i+1)-2
|
|
|
|
do j=irp(i), irp(i+1)-2
|
|
|
|
acc = acc + val(j)*y(ja(j),1:nc)
|
|
|
|
acc = acc + val(j)*y(ja(j),1:nc)
|
|
|
|
end do
|
|
|
|
end do
|
|
|
@ -1118,7 +1118,7 @@ contains
|
|
|
|
|
|
|
|
|
|
|
|
if (unit) then
|
|
|
|
if (unit) then
|
|
|
|
do i=nr, 1, -1
|
|
|
|
do i=nr, 1, -1
|
|
|
|
acc = dzero
|
|
|
|
acc = czero
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
do j=irp(i), irp(i+1)-1
|
|
|
|
acc = acc + val(j)*y(ja(j),1:nc)
|
|
|
|
acc = acc + val(j)*y(ja(j),1:nc)
|
|
|
|
end do
|
|
|
|
end do
|
|
|
@ -1126,7 +1126,7 @@ contains
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
else if (.not.unit) then
|
|
|
|
else if (.not.unit) then
|
|
|
|
do i=nr, 1, -1
|
|
|
|
do i=nr, 1, -1
|
|
|
|
acc = dzero
|
|
|
|
acc = czero
|
|
|
|
do j=irp(i)+1, irp(i+1)-1
|
|
|
|
do j=irp(i)+1, irp(i+1)-1
|
|
|
|
acc = acc + val(j)*y(ja(j),1:nc)
|
|
|
|
acc = acc + val(j)*y(ja(j),1:nc)
|
|
|
|
end do
|
|
|
|
end do
|
|
|
@ -1271,10 +1271,10 @@ function psb_c_csr_csnmi(a) result(res)
|
|
|
|
logical, parameter :: debug=.false.
|
|
|
|
logical, parameter :: debug=.false.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
res = dzero
|
|
|
|
res = szero
|
|
|
|
|
|
|
|
|
|
|
|
do i = 1, a%get_nrows()
|
|
|
|
do i = 1, a%get_nrows()
|
|
|
|
acc = dzero
|
|
|
|
acc = szero
|
|
|
|
do j=a%irp(i),a%irp(i+1)-1
|
|
|
|
do j=a%irp(i),a%irp(i+1)-1
|
|
|
|
acc = acc + abs(a%val(j))
|
|
|
|
acc = acc + abs(a%val(j))
|
|
|
|
end do
|
|
|
|
end do
|
|
|
@ -1301,7 +1301,7 @@ function psb_c_csr_csnm1(a) result(res)
|
|
|
|
logical, parameter :: debug=.false.
|
|
|
|
logical, parameter :: debug=.false.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
res = -sone
|
|
|
|
res = szero
|
|
|
|
nnz = a%get_nzeros()
|
|
|
|
nnz = a%get_nzeros()
|
|
|
|
m = a%get_nrows()
|
|
|
|
m = a%get_nrows()
|
|
|
|
n = a%get_ncols()
|
|
|
|
n = a%get_ncols()
|
|
|
|