MODULE Lapack USE double CONTAINS SUBROUTINE CHOLESKY(A) IMPLICIT NONE INTEGER :: J, N REAL(KIND=dp) :: A(:, :), X N = UBOUND(A,1) DO J = 1, N X = SQRT(A(J,J)-DOT_PRODUCT(A(J, :J-1), A(J, :J-1))) A(J,J) = X IF (J < N) & A(J+1:, J) = (A(J+1:, J) - & MATMUL(A(J+1:, :J-1), A(J,: J-1))) / X END DO END SUBROUTINE CHOLESKY END MODULE Lapack