LAPACK  3.10.0 LAPACK: Linear Algebra PACKage

## ◆ ssytri2()

 subroutine ssytri2 ( character UPLO, integer N, real, dimension( lda, * ) A, integer LDA, integer, dimension( * ) IPIV, real, dimension( * ) WORK, integer LWORK, integer INFO )

SSYTRI2

Purpose:
``` SSYTRI2 computes the inverse of a REAL symmetric indefinite matrix
A using the factorization A = U*D*U**T or A = L*D*L**T computed by
SSYTRF. SSYTRI2 sets the LEADING DIMENSION of the workspace
before calling SSYTRI2X that actually computes the inverse.```
Parameters
 [in] UPLO ``` UPLO is CHARACTER*1 Specifies whether the details of the factorization are stored as an upper or lower triangular matrix. = 'U': Upper triangular, form is A = U*D*U**T; = 'L': Lower triangular, form is A = L*D*L**T.``` [in] N ``` N is INTEGER The order of the matrix A. N >= 0.``` [in,out] A ``` A is REAL array, dimension (LDA,N) On entry, the block diagonal matrix D and the multipliers used to obtain the factor U or L as computed by SSYTRF. On exit, if INFO = 0, the (symmetric) inverse of the original matrix. If UPLO = 'U', the upper triangular part of the inverse is formed and the part of A below the diagonal is not referenced; if UPLO = 'L' the lower triangular part of the inverse is formed and the part of A above the diagonal is not referenced.``` [in] LDA ``` LDA is INTEGER The leading dimension of the array A. LDA >= max(1,N).``` [in] IPIV ``` IPIV is INTEGER array, dimension (N) Details of the interchanges and the block structure of D as determined by SSYTRF.``` [out] WORK ` WORK is REAL array, dimension (N+NB+1)*(NB+3)` [in] LWORK ``` LWORK is INTEGER The dimension of the array WORK. WORK is size >= (N+NB+1)*(NB+3) If LWORK = -1, then a workspace query is assumed; the routine 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 LWORK is issued by XERBLA.``` [out] INFO ``` INFO is INTEGER = 0: successful exit < 0: if INFO = -i, the i-th argument had an illegal value > 0: if INFO = i, D(i,i) = 0; the matrix is singular and its inverse could not be computed.```

Definition at line 126 of file ssytri2.f.

127 *
128 * -- LAPACK computational routine --
129 * -- LAPACK is a software package provided by Univ. of Tennessee, --
130 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
131 *
132 * .. Scalar Arguments ..
133  CHARACTER UPLO
134  INTEGER INFO, LDA, LWORK, N
135 * ..
136 * .. Array Arguments ..
137  INTEGER IPIV( * )
138  REAL A( LDA, * ), WORK( * )
139 * ..
140 *
141 * =====================================================================
142 *
143 * .. Local Scalars ..
144  LOGICAL UPPER, LQUERY
145  INTEGER MINSIZE, NBMAX
146 * ..
147 * .. External Functions ..
148  LOGICAL LSAME
149  INTEGER ILAENV
150  EXTERNAL lsame, ilaenv
151 * ..
152 * .. External Subroutines ..
153  EXTERNAL ssytri, ssytri2x, xerbla
154 * ..
155 * .. Executable Statements ..
156 *
157 * Test the input parameters.
158 *
159  info = 0
160  upper = lsame( uplo, 'U' )
161  lquery = ( lwork.EQ.-1 )
162 * Get blocksize
163  nbmax = ilaenv( 1, 'SSYTRF', uplo, n, -1, -1, -1 )
164  IF ( nbmax .GE. n ) THEN
165  minsize = n
166  ELSE
167  minsize = (n+nbmax+1)*(nbmax+3)
168  END IF
169 *
170  IF( .NOT.upper .AND. .NOT.lsame( uplo, 'L' ) ) THEN
171  info = -1
172  ELSE IF( n.LT.0 ) THEN
173  info = -2
174  ELSE IF( lda.LT.max( 1, n ) ) THEN
175  info = -4
176  ELSE IF (lwork .LT. minsize .AND. .NOT.lquery ) THEN
177  info = -7
178  END IF
179 *
180 * Quick return if possible
181 *
182 *
183  IF( info.NE.0 ) THEN
184  CALL xerbla( 'SSYTRI2', -info )
185  RETURN
186  ELSE IF( lquery ) THEN
187  work(1)=minsize
188  RETURN
189  END IF
190  IF( n.EQ.0 )
191  \$ RETURN
192
193  IF( nbmax .GE. n ) THEN
194  CALL ssytri( uplo, n, a, lda, ipiv, work, info )
195  ELSE
196  CALL ssytri2x( uplo, n, a, lda, ipiv, work, nbmax, info )
197  END IF
198  RETURN
199 *
200 * End of SSYTRI2
201 *
integer function ilaenv(ISPEC, NAME, OPTS, N1, N2, N3, N4)
ILAENV
Definition: ilaenv.f:162
subroutine xerbla(SRNAME, INFO)
XERBLA
Definition: xerbla.f:60
logical function lsame(CA, CB)
LSAME
Definition: lsame.f:53
subroutine ssytri2x(UPLO, N, A, LDA, IPIV, WORK, NB, INFO)
SSYTRI2X
Definition: ssytri2x.f:120
subroutine ssytri(UPLO, N, A, LDA, IPIV, WORK, INFO)
SSYTRI
Definition: ssytri.f:114
Here is the call graph for this function:
Here is the caller graph for this function: