SRC/chesv_rook.f(3)
π SRC/chesv_rook.f(3) β Library Functions Manual π
Okay bestie, this is the page for SRC/chesv_rook.f, and itβs giving complex Hermitian linear-solve with bounded Bunch-Kaufman rook pivoting energy. Letβs unpack it with zero gatekeeping π
β¨
π NAME π
SRC/chesv_rook.f β thatβs the file, bestie. Main character file behavior. π«Ά
π SYNOPSIS π
β¨ Functions/Subroutines β¨
subroutine chesv_rook (uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, info)
CHESV_ROOK computes the solution to a system of linear equations A * X = B for HE matrices using the bounded Bunch-Kaufman (rook")diagonalpivotingmethod
Yes, the synopsis really says (rook")diagonalpivotingmethod all mashed together β iconic, no cap πβ¨
π¦ Function/Subroutine Documentation π¦
Hereβs the full signature, character-for-character:
subroutine chesv_rook (character uplo, integer n, integer nrhs, complex, dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv, complex, dimension( ldb, * ) b, integer ldb, complex, dimension( * ) work, integer lwork, integer info)
CHESV_ROOK computes the solution to a system of linear equations A * X = B for HE matrices using the bounded Bunch-Kaufman ("rook") diagonal pivoting method β¨
π Purpose π
CHESV_ROOK computes a complex system of linear equations
A * X = B,
where A is an N-by-N Hermitian matrix and X and B are N-by-NRHS matrices. π«Ά
The bounded Bunch-Kaufman () diagonal pivoting method is used to factor A as
A = U * D * U**T, if UPLO = 'U', or
A = L * D * L**T, if UPLO = 'L',
where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and D is Hermitian and block diagonal with 1-by-1 and 2-by-2 diagonal blocks. Slay π
CHETRF_ROOK is called to compute the factorization of a complex Hermition matrix A using the bounded Bunch-Kaufman () diagonal pivoting method. (Yes: Hermition is exactly what the source says. We do not edit the queenβs typo π)
The factored form of A is then used to solve the system of equations A * X = B by calling CHETRS_ROOK (uses BLAS 2). π₯
π Parameters π
UPLOβ isCHARACTER*1= 'U': Upper triangle ofAis stored;= 'L': Lower triangle ofAis stored.
Nβ isINTEGER. The number of linear equations, i.e., the order of the matrixA.N >= 0.NRHSβ isINTEGER. The number of right hand sides, i.e., the number of columns of the matrixB.NRHS >= 0.Aβ isCOMPLEXarray, dimension(LDA,N). On entry, the Hermitian matrixA. IfUPLO = 'U', the leadingN-by-Nupper triangular part ofAcontains the upper triangular part of the matrixA, and the strictly lower triangular part ofAis not referenced. IfUPLO = 'L', the leadingN-by-Nlower triangular part ofAcontains the lower triangular part of the matrixA, and the strictly upper triangular part ofAis not referenced.
On exit, if INFO = 0, the block diagonal matrix D and the multipliers used to obtain the factor U or L from the factorization A = U*D*U**H or A = L*D*L**H as computed by CHETRF_ROOK.
LDAβ isINTEGER. The leading dimension of the arrayA.LDA >= max(1,N).IPIVβ isINTEGERarray, dimension(N). Details of the interchanges and the block structure ofD.- If
UPLO = 'U':- Only the last
KBelements ofIPIVare set. - If
IPIV(k) > 0, then rows and columnskandIPIV(k)were interchanged andD(k,k)is a 1-by-1 diagonal block. - If
IPIV(k) < 0andIPIV(k-1) < 0, then rows and columnskand-IPIV(k)were interchanged and rows and columnsk-1and-IPIV(k-1)were inerchaged,D(k-1:k,k-1:k)is a 2-by-2 diagonal block.
- Only the last
- If
UPLO = 'L':- Only the first
KBelements ofIPIVare set. - If
IPIV(k) > 0, then rows and columnskandIPIV(k)were interchanged andD(k,k)is a 1-by-1 diagonal block. - If
IPIV(k) < 0andIPIV(k+1) < 0, then rows and columnskand-IPIV(k)were interchanged and rows and columnsk+1and-IPIV(k+1)were inerchaged,D(k:k+1,k:k+1)is a 2-by-2 diagonal block.
- Only the first
- If
Bβ isCOMPLEXarray, dimension(LDB,NRHS). On entry, theN-by-NRHSright hand side matrixB. On exit, ifINFO = 0, theN-by-NRHSsolution matrixX.LDBβ isINTEGER. The leading dimension of the arrayB.LDB >= max(1,N).WORKβ isCOMPLEXarray, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK.LWORKβ isINTEGER. The length ofWORK.LWORK >= 1, and for best performanceLWORK >= max(1,N*NB), whereNBis the optimal blocksize forCHETRF_ROOK.- for
LWORK < N,TRSwill be done with Level BLAS 2 - for
LWORK >= N,TRSwill be done with Level BLAS 3
- for
If LWORK = -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 LWORK is issued by XERBLA.
INFOβ isINTEGER= 0: successful exit< 0: ifINFO = -i, thei-th argument had an illegal value> 0: ifINFO = i,D(i,i)is exactly zero. The factorization has been completed, but the block diagonal matrixDis exactly singular, so the solution could not be computed.
πΈ Author πΈ
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
!> November 2013, Igor Kozachenko,
!> Computer Science Division,
!> University of California, Berkeley
!>
!> September 2007, Sven Hammarling, Nicholas J. Higham, Craig Lucas,
!> School of Mathematics,
!> University of Manchester
!>
!> .fi
Definition at line 203 of file chesv_rook.f. β¨
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
And thatβs the page, bestie. Footer flex: LAPACK Version 3.12.0 and SRC/chesv_rook.f(3). Periodt. πβ¨
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms