Contents
dgetri - compute the inverse of a matrix using the LU fac-
torization computed by DGETRF
SUBROUTINE DGETRI(N, A, LDA, IPIVOT, WORK, LDWORK, INFO)
INTEGER N, LDA, LDWORK, INFO
INTEGER IPIVOT(*)
DOUBLE PRECISION A(LDA,*), WORK(*)
SUBROUTINE DGETRI_64(N, A, LDA, IPIVOT, WORK, LDWORK, INFO)
INTEGER*8 N, LDA, LDWORK, INFO
INTEGER*8 IPIVOT(*)
DOUBLE PRECISION A(LDA,*), WORK(*)
F95 INTERFACE
SUBROUTINE GETRI([N], A, [LDA], IPIVOT, [WORK], [LDWORK], [INFO])
INTEGER :: N, LDA, LDWORK, INFO
INTEGER, DIMENSION(:) :: IPIVOT
REAL(8), DIMENSION(:) :: WORK
REAL(8), DIMENSION(:,:) :: A
SUBROUTINE GETRI_64([N], A, [LDA], IPIVOT, [WORK], [LDWORK], [INFO])
INTEGER(8) :: N, LDA, LDWORK, INFO
INTEGER(8), DIMENSION(:) :: IPIVOT
REAL(8), DIMENSION(:) :: WORK
REAL(8), DIMENSION(:,:) :: A
C INTERFACE
#include <sunperf.h>
void dgetri(int n, double *a, int lda, int *ipivot, int
*info);
void dgetri_64(long n, double *a, long lda, long *ipivot,
long *info);
dgetri computes the inverse of a matrix using the LU factor-
ization computed by DGETRF.
This method inverts U and then computes inv(A) by solving
the system inv(A)*L = inv(U) for inv(A).
N (input) The order of the matrix A. N >= 0.
A (input/output)
On entry, the factors L and U from the factoriza-
tion A = P*L*U as computed by DGETRF. On exit, if
INFO = 0, the inverse of the original matrix A.
LDA (input)
The leading dimension of the array A. LDA >=
max(1,N).
IPIVOT (input)
The pivot indices from DGETRF; for 1<=i<=N, row i
of the matrix was interchanged with row IPIVOT(i).
WORK (workspace)
On exit, if INFO=0, then WORK(1) returns the
optimal LDWORK.
LDWORK (input)
The dimension of the array WORK. LDWORK >=
max(1,N). For optimal performance LDWORK >= N*NB,
where NB is the optimal blocksize returned by
ILAENV.
If LDWORK = -1, then a workspace query is assumed;
the routine only calculates the optimal size of
the WORK array, returns this value as the first
entry of the WORK array, and no error message
related to LDWORK is issued by XERBLA.
INFO (output)
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an ille-
gal value
> 0: if INFO = i, U(i,i) is exactly zero; the
matrix is singular and its inverse could not be
computed.