Contents


NAME

     sgetri - compute the inverse of a matrix using the  LU  fac-
     torization computed by SGETRF

SYNOPSIS

     SUBROUTINE SGETRI(N, A, LDA, IPIVOT, WORK, LDWORK, INFO)

     INTEGER N, LDA, LDWORK, INFO
     INTEGER IPIVOT(*)
     REAL A(LDA,*), WORK(*)

     SUBROUTINE SGETRI_64(N, A, LDA, IPIVOT, WORK, LDWORK, INFO)

     INTEGER*8 N, LDA, LDWORK, INFO
     INTEGER*8 IPIVOT(*)
     REAL A(LDA,*), WORK(*)

  F95 INTERFACE
     SUBROUTINE GETRI([N], A, [LDA], IPIVOT, [WORK], [LDWORK], [INFO])

     INTEGER :: N, LDA, LDWORK, INFO
     INTEGER, DIMENSION(:) :: IPIVOT
     REAL, DIMENSION(:) :: WORK
     REAL, DIMENSION(:,:) :: A

     SUBROUTINE GETRI_64([N], A, [LDA], IPIVOT, [WORK], [LDWORK], [INFO])

     INTEGER(8) :: N, LDA, LDWORK, INFO
     INTEGER(8), DIMENSION(:) :: IPIVOT
     REAL, DIMENSION(:) :: WORK
     REAL, DIMENSION(:,:) :: A

  C INTERFACE
     #include <sunperf.h>

     void sgetri(int n, float  *a,  int  lda,  int  *ipivot,  int
               *info);

     void sgetri_64(long n, float *a,  long  lda,  long  *ipivot,
               long *info);

PURPOSE

     sgetri computes the inverse of a matrix using the LU factor-
     ization computed by SGETRF.

     This method inverts U and then computes  inv(A)  by  solving
     the system inv(A)*L = inv(U) for inv(A).

ARGUMENTS

     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 SGETRF.  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 SGETRF; 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.