ZHESV_RK(3)
π ZHESV_RK(3) β the girlies' guide to solving A * X = B
okay so bestie, welcome to zhesv_rk.f from the Library Functions Manual. yes the file path in the header is like /home/abui.../zhesv_rk.f(3) and honestly the ... is doing a lot of heavy lifting there but we move π
This is the manpage for ZHESV_RK, a LAPACK subroutine, and she literally solves linear systems. main character energy fr fr π
β¨ SYNOPSIS β¨
π«Ά Functions/Subroutines π«Ά
subroutine ZHESV_RK (uplo, n, nrhs, a, lda, e, ipiv, b, ldb, work, lwork, info)β ZHESV_RK computes the solution to system of linear equationsA * X = Bfor SY matrices
π Function/Subroutine Documentation π
subroutine ZHESV_RK (character uplo, integer n, integer nrhs, complex*16,
dimension( lda, * ) a, integer lda, complex*16, dimension( * ) e,
integer, dimension( * ) ipiv, complex*16, dimension( ldb, * ) b, integer
ldb, complex*16, dimension( * ) work, integer lwork, integer info)
ZHESV_RK computes the solution to system of linear equations A * X = B for SY matrices β¨
πΈ Purpose πΈ
ZHESV_RK computes the solution to a complex system of linear equationsA * X = B, where A is an N-by-N Hermitian matrix and X and B are N-by-NRHS matrices. The bounded Bunch-Kaufman (rook) diagonal pivoting method is used to factor A asA = P*U*D*(U**H)*(P**T), if UPLO = 'U', or A = P*L*D*(L**H)*(P**T), if UPLO = 'L',where U (or L) is unit upper (or lower) triangular matrix, UH (or LH) is the conjugate of U (or L), P is a permutation matrix, P**T is the transpose of P, and D is Hermitian and block diagonal with 1-by-1 and 2-by-2 diagonal blocks. ZHETRF_RK is called to compute the factorization of a complex Hermitian matrix. The factored form of A is then used to solve the system of equationsA * X = Bby calling BLAS3 routine ZHETRS_3.
so like, she factors, she solves, she leaves π the whole glow-up happens in two steps and it's giving efficiency.
π¦ Parameters π¦
UPLO
UPLOisCHARACTER*1Specifies whether the upper or lower triangular part of the Hermitian matrix A is stored: ='U': Upper triangle of A is stored; ='L': Lower triangle of A is stored.
N
NisINTEGERThe number of linear equations, i.e., the order of the matrix A.N >= 0.
NRHS
NRHSisINTEGERThe number of right hand sides, i.e., the number of columns of the matrix B.NRHS >= 0.
A
AisCOMPLEX*16array, dimension(LDA,N)On entry, the Hermitian matrix A. IfUPLO = 'U': the leading N-by-N upper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced. IfUPLO = 'L': the leading N-by-N lower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced. On exit, ifINFO = 0, diagonal of the block diagonal matrix D and factors U or L as computed by ZHETRF_RK: a) ONLY diagonal elements of the Hermitian block diagonal matrix D on the diagonal of A, i.e.D(k,k) = A(k,k); (superdiagonal (or subdiagonal) elements of D are stored on exit in array E), and b) IfUPLO = 'U': factor U in the superdiagonal part of A. IfUPLO = 'L': factor L in the subdiagonal part of A. For more info see the description of ZHETRF_RK routine.
LDA
LDAisINTEGERThe leading dimension of the array A.LDA >= max(1,N).
E
EisCOMPLEX*16array, dimension(N)On exit, contains the output computed by the factorization routine ZHETRF_RK, i.e. the superdiagonal (or subdiagonal) elements of the Hermitian block diagonal matrix D with 1-by-1 or 2-by-2 diagonal blocks, where IfUPLO = 'U':E(i) = D(i-1,i),i=2:N,E(1)is set to 0; IfUPLO = 'L':E(i) = D(i+1,i),i=1:N-1,E(N)is set to 0. NOTE: For 1-by-1 diagonal block D(k), where1 <= k <= N, the elementE(k)is set to 0 in bothUPLO = 'U'orUPLO = 'L'cases. For more info see the description of ZHETRF_RK routine.
IPIV
IPIVisINTEGERarray, dimension(N)Details of the interchanges and the block structure of D, as determined by ZHETRF_RK. For more info see the description of ZHETRF_RK routine.
B
BisCOMPLEX*16array, dimension(LDB,NRHS)On entry, the N-by-NRHS right hand side matrix B. On exit, ifINFO = 0, the N-by-NRHS solution matrix X.
LDB
LDBisINTEGERThe leading dimension of the array B.LDB >= max(1,N).
WORK
WORKisCOMPLEX*16array, dimension( MAX(1,LWORK) ). Work array used in the factorization stage. On exit, ifINFO = 0,WORK(1)returns the optimal LWORK.
LWORK
LWORKisINTEGERThe length of WORK.LWORK >= 1. For best performance of factorization stageLWORK >= max(1,N*NB), where NB is the optimal blocksize for ZHETRF_RK. IfLWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array for factorization stage, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA.
INFO
INFOisINTEGER= 0: successful exit < 0: IfINFO = -k, the k-th argument had an illegal value > 0: IfINFO = k, the matrix A is singular, because: IfUPLO = 'U': column k in the upper triangular part of A contains all zeros. IfUPLO = 'L': column k in the lower triangular part of A contains all zeros. ThereforeD(k,k)is exactly zero, and superdiagonal elements of column k of U (or subdiagonal elements of column k of L ) are all zeros. The factorization has been completed, but the block diagonal matrix D is exactly singular, and division by zero will occur if it is used to solve a system of equations. NOTE: INFO only stores the first occurrence of a singularity, any subsequent occurrence of singularity is not stored in INFO even though the factorization always completes.
β οΈ bestie listen β INFO > 0 means the factorization finished but D is exactly singular, and division by zero will occur if you try to solve with it. that's not a vibe, that's an error. and INFO only keeps the first singularity, so the rest are just silently there. no cap, read your INFO. π
π Author π
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
β Contributors β
December 2016, Igor Kozachenko, Computer Science Division, University of California, Berkeley September 2007, Sven Hammarling, Nicholas J. Higham, Craig Lucas, School of Mathematics, University of Manchester
Definition at line 226 of file zhesv_rk.f.
π§ Author (the meta one) π§
Generated automatically by Doxygen for LAPACK from the source code.
and that's the whole page bestie!! π«Ά she's LAPACK, Version 3.12.0, filed under /home/abui.../zhesv_rk.f(3) β go forth, factor your Hermitian matrices, and remember: the rook pivoting is doing the most so you don't have to π
β¨π
π¦ 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