CHESV_ROOK(3)
π NAME
okay so bestie, this page is literally the home of /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/chesv_rook.f β yes that's the whole path, she's got a long name and she's iconic for it π
β¨ 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
yeah that's how it got typeset, "rook")diagonalpivotingmethod, no spaces, she's a little scruffy but we love her π
π«Ά Function/Subroutine Documentation
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 the solution to 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.
!>
!> CHETRF_ROOK is called to compute the factorization of a complex
!> Hermition matrix A using the bounded Bunch-Kaufman () diagonal
!> pivoting method.
!>
!> The factored form of A is then used to solve the system
!> of equations A * X = B by calling CHETRS_ROOK (uses BLAS 2).
!>
so like, in human words: she takes your Hermitian matrix A and your right-hand-side B, factors A with the bounded Bunch-Kaufman ("rook") diagonal pivoting method into U*D*U**T (if UPLO = 'U') or L*D*L**T (if UPLO = 'L'), where U/L is a product of permutation and unit triangular matrices and D is Hermitian block diagonal with 1-by-1 and 2-by-2 diagonal blocks. then she solves for X. the factorization itself comes from CHETRF_ROOK, and the solve comes from CHETRS_ROOK (uses BLAS 2). two besties, one job β¨
(and yes, the original really does say "Hermition" β we're keeping it fr fr, typos are part of the lore π)
π Parameters
UPLOβUPLOisCHARACTER*1= 'U': Upper triangle ofAis stored;= 'L': Lower triangle ofAis stored.
NβNisINTEGER. The number of linear equations, i.e., the order of the matrixA.N >= 0.NRHSβNRHSisINTEGER. The number of right hand sides, i.e., the number of columns of the matrixB.NRHS >= 0.AβAisCOMPLEXarray, 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, ifINFO = 0, the block diagonal matrixDand the multipliers used to obtain the factorUorLfrom the factorizationA = U*D*U**HorA = L*D*L**Has computed byCHETRF_ROOK.LDAβLDAisINTEGER. The leading dimension of the arrayA.LDA >= max(1,N).IPIVβIPIVisINTEGERarray, 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 a1-by-1diagonal 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 a2-by-2diagonal 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 a1-by-1diagonal 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 a2-by-2diagonal block.
- Only the first
- If
ngl "inerchaged" is in the source too and it's giving typo era, but we do not gatekeep π«Ά
BβBisCOMPLEXarray, dimension(LDB,NRHS). On entry, theN-by-NRHSright hand side matrixB. On exit, ifINFO = 0, theN-by-NRHSsolution matrixX.LDBβLDBisINTEGER. The leading dimension of the arrayB.LDB >= max(1,N).WORKβWORKisCOMPLEXarray, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK.LWORKβLWORKisINTEGER. 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 IfLWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of theWORKarray, returns this value as the first entry of theWORKarray, and no error message related toLWORKis issued byXERBLA.
- for
INFOβINFOisINTEGER= 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.
bestie listen:INFO > 0meansDis exactly singular and the solution literally could not be computed. like, she finished the factorization, she did her part, but the answer is not coming. no cap, check your matrix π
π 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 whole vibe check, bestie π this page is LAPACK, Version 3.12.0 β mwah, stan her, periodt β¨ππ¦
π¦ 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