LAPACK  3.10.0
LAPACK: Linear Algebra PACKage

◆ csytri2()

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

CSYTRI2

Download CSYTRI2 + dependencies [TGZ] [ZIP] [TXT]

Purpose:
 CSYTRI2 computes the inverse of a COMPLEX symmetric indefinite matrix
 A using the factorization A = U*D*U**T or A = L*D*L**T computed by
 CSYTRF. CSYTRI2 sets the LEADING DIMENSION of the workspace
 before calling CSYTRI2X 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 COMPLEX 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 CSYTRF.

          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 CSYTRF.
[out]WORK
          WORK is COMPLEX 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.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.

Definition at line 126 of file csytri2.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  COMPLEX 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 csytri, csytri2x, 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, 'CSYTRI2', 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( 'CSYTRI2', -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 csytri( uplo, n, a, lda, ipiv, work, info )
195  ELSE
196  CALL csytri2x( uplo, n, a, lda, ipiv, work, nbmax, info )
197  END IF
198  RETURN
199 *
200 * End of CSYTRI2
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 csytri(UPLO, N, A, LDA, IPIV, WORK, INFO)
CSYTRI
Definition: csytri.f:114
subroutine csytri2x(UPLO, N, A, LDA, IPIV, WORK, NB, INFO)
CSYTRI2X
Definition: csytri2x.f:120
Here is the call graph for this function:
Here is the caller graph for this function: