You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

36 lines
1.0 KiB

subroutine zlubksb(a,n,indx,bin,b)
c--- Adapted from Numerical Recipes
C--- back substitution for real a and complex b
c--- extended so that original vector b is not destroyed
implicit none
include 'lib/TensorReduction/Include/types.f'
integer n,indx(n)
real(dp):: a(n,n)
complex(dp):: b(n),bin(n),sum
integer i,ii,j,ll
b=bin
ii=0
do i=1,n
ll=indx(i)
sum=b(ll)
b(ll)=b(i)
if (ii.ne.0)then
do j=ii,i-1
sum=sum-cmplx(a(i,j),kind=dp)*b(j)
enddo ! 11
else if (sum.ne.cmplx(0._dp,0._dp,kind=dp)) then
ii=i
endif
b(i)=sum
enddo ! 12
do i=n,1,-1
sum=b(i)
if(i.lt.n)then
do j=i+1,n
sum=sum-cmplx(a(i,j),kind=dp)*b(j)
enddo ! 13
endif
b(i)=sum/cmplx(a(i,i),kind=dp)
enddo ! 14
return
end