You are on page 1of 1

INTEGER N,NRHS

PARAMETER (N=5,NRHS=3)
INTEGER LDA,LDB
PARAMETER (LDA=N,LDB=N)
INTEGER INFO
INTEGER IPIV(N)
DOUBLE PRECISION A (LDA,N),B(LDB,NRHS)
EXTERNAL DGESV
EXTERNAL PRINT_MATRIX,PRINT_INT_VECTOR
WRITE (*,*) 'DGESV EXAMPLE PROGRAM RESULTS'
CALL DGESV (N,NRHS,A,LDA,IPIV,B,LDB,INFO)
IF (INFO.GT.0) then
WRITE (*,*) 'THE DIAGNOL ELEMENT OF THE TRIANGULAR FACTOR OF A,'
WRITE (*,*) 'U(',INFO,',',INFO,')IS ZERO, SO THAT'
WRITE (*,*) 'A IS SINGULAR;THE SOLUTION COULD NOT BE COMPUTED.'
stop
END if
CALL PRINT_MATRIX('SOLUTION',N,NRHS,B,LDB)
CALL PRINT_MATRIX('DETAILS OF LU FACTORIZATION',N,N,A,LDA)
CALL PRINT_INT_VECTOR ('PIVOT INDICES',N,IPIV)
stop
end
SUBROUTINE PRINT_MATRIX (DESC,M,N,A,LDA)
CHARACTER *(*) DESC
INTEGER M,N,LDA
DOUBLE PRECISION A(LDA,*)
INTEGER I,J
WRITE (*,*)
WRITE (*,*) DESC
DO I=1,M
WRITE (*,9998) (A(I,J),J=1,N)
END do
9998 FORMAT (11(:1X,F6.2))
return
END
SUBROUTINE PRINT_INT_VECTOR (DESC,N,A)
CHARACTER *(*) DESC
INTEGER N
INTEGER A(N)
INTEGER I
WRITE (*,*)
WRITE (*,*) DESC
WRITE (*,9999) (A(I),I=1,N)
9999 FORMAT (11(:,1X,I6))
return
end

You might also like