LUBKSB Subroutine

public subroutine LUBKSB(A, N, INDX, B)

Arguments

Type IntentOptional Attributes Name
double precision :: A(N,N)
integer :: N
integer :: INDX(N)
double precision :: B(N)

Source Code

 Subroutine LUBKSB(A,N,INDX,B)
 double precision        :: SUM, A(N,N),B(N)
 INTEGER                 :: INDX(N), N
 ! .. local ..
 integer                 :: II, LL, I, J
 
 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 - A(I,J)*B(J)
     END DO ! j loop
   ELSE IF(SUM.NE.0.d0) THEN
     II = I
   END IF
   B(I) = SUM
 END DO ! i loop

 DO I=N,1,-1
   SUM = B(I)
   IF(I < N) THEN
     DO J=I+1,N
       SUM = SUM - A(I,J)*B(J)
     END DO ! j loop
   END IF
   B(I) = SUM / A(I,I)
 END DO ! i loop

 RETURN
 END subroutine LUBKSB