dpotri.f
来自「基于Blas CLapck的.用过的人知道是干啥的」· F 代码 · 共 102 行
F
102 行
SUBROUTINE DPOTRI( UPLO, N, A, LDA, INFO )** -- LAPACK routine (version 3.0) --* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,* Courant Institute, Argonne National Lab, and Rice University* March 31, 1993** -- Modified by R. Clint Whaley for ATLAS Fortran77 LAPACK interface,* 2001*** .. Scalar Arguments .. CHARACTER UPLO INTEGER INFO, LDA, N* ..* .. Array Arguments .. DOUBLE PRECISION A( LDA, * )* ..** Purpose* =======** DPOTRI computes the inverse of a real symmetric positive definite* matrix A using the Cholesky factorization A = U**T*U or A = L*L**T* computed by DPOTRF.** Arguments* =========** UPLO (input) CHARACTER*1* = 'U': Upper triangle of A is stored;* = 'L': Lower triangle of A is stored.** N (input) INTEGER* The order of the matrix A. N >= 0.** A (input/output) DOUBLE PRECISION array, dimension (LDA,N)* On entry, the triangular factor U or L from the Cholesky* factorization A = U**T*U or A = L*L**T, as computed by* DPOTRF.* On exit, the upper or lower triangle of the (symmetric)* inverse of A, overwriting the input factor U or L.** LDA (input) INTEGER* The leading dimension of the array A. LDA >= max(1,N).** INFO (output) INTEGER* = 0: successful exit* < 0: if INFO = -i, the i-th argument had an illegal value* > 0: if INFO = i, the (i,i) element of the factor U or L is* zero, and the inverse could not be computed.** =====================================================================** .. External Functions .. LOGICAL LSAME EXTERNAL LSAME* ..* .. External Subroutines .. EXTERNAL XERBLA, ZLAUUM, ZTRTRI* ..* .. Intrinsic Functions .. INTRINSIC MAX* ..* .. Executable Statements ..** Test the input parameters.* INFO = 0 IF( .NOT.LSAME( UPLO, 'U' ) .AND. .NOT.LSAME( UPLO, 'L' ) ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( LDA.LT.MAX( 1, N ) ) THEN INFO = -4 END IF IF( INFO.NE.0 ) THEN CALL XERBLA( 'DPOTRI', -INFO ) RETURN END IF** Quick return if possible* IF( N.EQ.0 ) $ RETURN** Invert the triangular Cholesky factor U or L.* CALL DTRTRI( UPLO, 'Non-unit', N, A, LDA, INFO ) IF( INFO.GT.0 ) $ RETURN** Form inv(U)*inv(U)' or inv(L)'*inv(L).* CALL DLAUUM( UPLO, N, A, LDA, INFO )* RETURN** End of DPOTRI* END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?