/home/abui.../csytri2.f(3)
π csytri2.f(3) β like, the manual page
okay bestie, welcome to the csytri2.f(3) page from the Library Functions Manual β yes the actual file lives at /home/abui.../csytri2.f(3), and we're about to get so acquainted π«Ά
β¨ NAME β¨
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/csytri2.f
that's the whole name, no cap β it's literally just the full path to the source file, and honestly? iconic for that π
π¦ SYNOPSIS π¦
Functions/Subroutines
subroutine CSYTRI2 (uplo, n, a, lda, ipiv, work, lwork, info)β this is the one, the main character of this whole pageCSYTRI2
π Function/Subroutine Documentation π
subroutine CSYTRI2 (character uplo, integer n, complex, dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv, complex, dimension( * ) work, integer lwork, integer info)
CSYTRI2 β say it with me π
π 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.
!>
so like β it does the inverse thing, and then it hands the actual math off to CSYTRI2X after fixing up the leading dimension of the workspace first. lowkey a middle-manager routine but we respect the hustle β¨
π Parameters
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.
!>
it's one character and it decides everything: 'U' means upper triangular (form is A = U*D*U**T), 'L' means lower triangular (form is A = L*D*L**T). pick your fighter π₯
N
!> N is INTEGER
!> The order of the matrix A. N >= 0.
!>
the order of matrix A. and it must be N >= 0 β no negative girlies allowed π
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.
!>
COMPLEX array, dimension (LDA,N). on entry it's holding the block diagonal matrix D plus the multipliers that gave you U or L, as computed by CSYTRF. on exit β if INFO = 0 β it's the (symmetric) inverse of the original matrix π just know: if UPLO = 'U', only the upper triangular part of the inverse gets formed and everything below the diagonal is simply not referenced; if UPLO = 'L', it's the lower triangular part and everything above the diagonal is not referenced. it's giving "we only look at half the picture" and honestly? efficient π
LDA
!> LDA is INTEGER
!> The leading dimension of the array A. LDA >= max(1,N).
!>
leading dimension of A, and it's got a floor: LDA >= max(1,N) π₯
IPIV
!> IPIV is INTEGER array, dimension (N)
!> Details of the interchanges and the block structure of D
!> as determined by CSYTRF.
!>
INTEGER array, dimension (N) β the receipts for the interchanges and the block structure of D, all as determined by CSYTRF π§Ύ
WORK
!> WORK is COMPLEX array, dimension (N+NB+1)*(NB+3)
!>
COMPLEX array, dimension (N+NB+1)*(NB+3). that's the size, don't @ me π«Ά
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.
!>
INTEGER, the dimension of the array WORK, and WORK is size >= (N+NB+1)*(NB+3). now the fun part π β if LWORK = -1, a workspace query is assumed, and the routine:
- calculates the optimal size of the
WORKarray, and returns this value as the first entry of theWORKarray, - and no error message related to
LWORKis issued byXERBLA.
the -1 is basically the "just tell me what you need, bestie" mode β
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.
!>
the vibe check at the end:
= 0: successful exit, slay β¨< 0: ifINFO = -i, the i-th argument had an illegal value, someone fumbled π> 0: ifINFO = i, thenD(i,i) = 0β the matrix is singular and its inverse could not be computed. no inverse for you, periodt π
π§ Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
πΈ Definition at line 126 of file csytri2.f.
π Author (again, but the generated one)
Generated automatically by Doxygen for LAPACK from the source code. not a human, just vibes and a parser π
π quick reminder bestie:CSYTRI2sets the leading dimension of the workspace before callingCSYTRI2X, which is the one that actually computes the inverse β so don't go crediting the wrong subroutine, iykyk π«Ά
and that's the page!! LAPACK, Version 3.12.0, dated /home/abui.../csytri2.f(3) β catch you on the next man page, mwah π
π
π¦ where this page comes from
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms