C SUBROUTINE CHOLSK (IDA, NMAT, M, N, A, NRHS, IDB, B) C C CHOLESKY DECOMPOSITION/SUBSTITUTION SUBROUTINE. C C 11/28/84 D H BAILEY MODIFIED FOR NAS KERNEL TEST C REAL A(-M:0, 0:N, 0:IDA), B(0:N, 0:NRHS, 0:IDB), EPSS(0:256) DATA EPS/1E-13/ C C CHOLESKY DECOMPOSITION C DO L = 0, NMAT DO 1 J = 0, N I0 = MAX ( -M, -J ) C C OFF DIAGONAL ELEMENTS C DO 2 I = I0, -1 DO 3 JJ = I0 - I, -1 3 A(I,J,L) = A(I,J,L) - A(JJ,I+J,L) * A(I+JJ,J,L) 2 A(I,J,L) = A(I,J,L) * A(0,I+J,L) C C STORE INVERSE OF DIAGONAL ELEMENTS C 4 EPSS(L) = EPS * A(0,J,L) DO 5 JJ = I0, -1 5 A(0,J,L) = A(0,J,L) - A(JJ,J,L) ** 2 1 A(0,J,L) = 1. / SQRT ( ABS (EPSS(L) + A(0,J,L)) ) C C SOLUTION C DO 6 I = 0, NRHS DO 7 K = 0, N 8 B(K,I,L) = B(K,I,L) * A(0,K,L) DO 7 JJ = 1, MIN (M, N-K) 7 B(K+JJ,I,L) = B(K+JJ,I,L) - A(-JJ,K+JJ,L) * B(K,I,L) C DO 6 K = N, 0, -1 9 B(K,I,L) = B(K,I,L) * A(0,K,L) DO 6 JJ = 1, MIN (M, K) 6 B(K-JJ,I,L) = B(K-JJ,I,L) - A(-JJ,K,L) * B(K,I,L) ENDDO C RETURN END