hesv_rk(3)
πΈ NAME πΈ
okay so this is the hesv_rk(3) page from the Library Functions Manual, and the name is literally:
hesv_rk β {he,sy}sv_rk: rook (v3) π
β¨ SYNOPSIS β¨
π§ Functions π§
chesv_rkβCHESV_RK computes the solution to system of linear equations A * X = B for SY matrices
subroutine chesv_rk (uplo, n, nrhs, a, lda, e, ipiv, b, ldb, work, lwork, info)
csysv_rkβCSYSV_RK computes the solution to system of linear equations A * X = B for SY matrices
subroutine csysv_rk (uplo, n, nrhs, a, lda, e, ipiv, b, ldb, work, lwork, info)
dsysv_rkβDSYSV_RK computes the solution to system of linear equations A * X = B for SY matrices
subroutine dsysv_rk (uplo, n, nrhs, a, lda, e, ipiv, b, ldb, work, lwork, info)
ssysv_rkβSSYSV_RK computes the solution to system of linear equations A * X = B for SY matrices
subroutine ssysv_rk (uplo, n, nrhs, a, lda, e, ipiv, b, ldb, work, lwork, info)
zhesv_rkβZHESV_RK computes the solution to system of linear equations A * X = B for SY matrices
subroutine zhesv_rk (uplo, n, nrhs, a, lda, e, ipiv, b, ldb, work, lwork, info)
zsysv_rkβZSYSV_RK computes the solution to system of linear equations A * X = B for SY matrices
subroutine zsysv_rk (uplo, n, nrhs, a, lda, e, ipiv, b, ldb, work, lwork, info)
π« Detailed Description π«
bestie, this section is literally just Detailed Description energy, and then the function docs come in right after. No side quests here. β¨
π₯ Function Documentation π₯
π subroutine chesv_rk ...
subroutine chesv_rk (character uplo, integer n, integer nrhs, complex, dimension( lda, * ) a, integer lda, complex, dimension( * ) e, integer, dimension( * ) ipiv, complex, dimension( ldb, * ) b, integer ldb, complex, dimension( * ) work, integer lwork, integer info)
CHESV_RK computes the solution to system of linear equations A * X = B for SY matrices
π Purpose π
okay so CHESV_RK 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. slay. π
The bounded Bunch-Kaufman (rook) diagonal pivoting method is used to factor A as
A = 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, U**H (or L**H) 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. π¦
CHETRF_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 equations A * X = B by calling BLAS3 routine CHETRS_3. π₯
π Parameters π
UPLOβCHARACTER*1. Specifies whether the upper or lower triangular part of the Hermitian matrixAis stored:= 'U': Upper triangle ofAis stored;= 'L': Lower triangle ofAis stored.
NβINTEGER. The number of linear equations, i.e., the order of the matrixA.N >= 0.NRHSβINTEGER. The number of right hand sides, i.e., the number of columns of the matrixB.NRHS >= 0.AβCOMPLEX array, dimension (LDA,N). On entry, the Hermitian matrixA.- If
UPLO = 'U': the leading N-by-N upper triangular part ofAcontains the upper triangular part of the matrixA, and the strictly lower triangular part ofAis not referenced. - If
UPLO = 'L': the leading N-by-N lower triangular part ofAcontains the lower triangular part of the matrixA, and the strictly upper triangular part ofAis not referenced. On exit, ifINFO = 0, diagonal of the block diagonal matrixDand factorsUorLas computed byCHETRF_RK:- a) ONLY diagonal elements of the Hermitian block diagonal matrix
Don the diagonal ofA, i.e.D(k,k) = A(k,k); (superdiagonal (or subdiagonal) elements ofDare stored on exit in arrayE), and - b) If
UPLO = 'U': factorUin the superdiagonal part ofA. IfUPLO = 'L': factorLin the subdiagonal part ofA. For more info see the description ofCHETRF_RKroutine.
- a) ONLY diagonal elements of the Hermitian block diagonal matrix
- If
LDAβINTEGER. The leading dimension of the arrayA.LDA >= max(1,N).EβCOMPLEX array, dimension (N). On exit, contains the output computed by the factorization routineCHETRF_RK, i.e. the superdiagonal (or subdiagonal) elements of the Hermitian block diagonal matrixDwith 1-by-1 or 2-by-2 diagonal blocks, where- If
UPLO = 'U':E(i) = D(i-1,i),i=2:N,E(1)is set to0; - If
UPLO = 'L':E(i) = D(i+1,i),i=1:N-1,E(N)is set to0.
- If
NOTE: For 1-by-1 diagonal blockD(k), where1 <= k <= N, the elementE(k)is set to0in bothUPLO = 'U'orUPLO = 'L'cases.
For more info see the description of CHETRF_RK routine.
IPIVβINTEGER array, dimension (N). Details of the interchanges and the block structure ofD, as determined byCHETRF_RK. For more info see the description ofCHETRF_RKroutine.BβCOMPLEX array, dimension (LDB,NRHS). On entry, the N-by-NRHS right hand side matrixB. On exit, ifINFO = 0, the N-by-NRHS solution matrixX.LDBβINTEGER. The leading dimension of the arrayB.LDB >= max(1,N).WORKβCOMPLEX array, dimension ( MAX(1,LWORK) ). Work array used in the factorization stage. On exit, ifINFO = 0,WORK(1)returns the optimalLWORK.LWORKβINTEGER. The length ofWORK.LWORK >= 1. For best performance of factorization stageLWORK >= max(1,N*NB), whereNBis the optimal blocksize forCHETRF_RK. IfLWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of theWORKarray for factorization stage, returns this value as the first entry of theWORKarray, and no error message related toLWORKis issued byXERBLA.INFOβINTEGER.= 0: successful exit.< 0: IfINFO = -k, thek-th argument had an illegal value.> 0: IfINFO = k, the matrixAis singular, because:- If
UPLO = 'U': columnkin the upper triangular part ofAcontains all zeros. - If
UPLO = 'L': columnkin the lower triangular part ofAcontains all zeros. ThereforeD(k,k)is exactly zero, and superdiagonal elements of columnkofU(or subdiagonal elements of columnkofL) are all zeros. The factorization has been completed, but the block diagonal matrixDis exactly singular, and division by zero will occur if it is used to solve a system of equations.
- If
NOTE:INFOonly stores the first occurrence of a singularity, any subsequent occurrence of singularity is not stored inINFOeven though the factorization always completes.
π Author π
Univ. of TennesseeUniv. of California BerkeleyUniv. of Colorado DenverNAG 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 chesv_rk.f.
π subroutine csysv_rk ...
subroutine csysv_rk (character uplo, integer n, integer nrhs, complex, dimension( lda, * ) a, integer lda, complex, dimension( * ) e, integer, dimension( * ) ipiv, complex, dimension( ldb, * ) b, integer ldb, complex, dimension( * ) work, integer lwork, integer info)
CSYSV_RK computes the solution to system of linear equations A * X = B for SY matrices
π Purpose π
CSYSV_RK computes the solution to a complex system of linear equations A * X = B, where A is an N-by-N symmetric matrix and X and B are N-by-NRHS matrices. β¨
The bounded Bunch-Kaufman (rook) diagonal pivoting method is used to factor A as
A = P*U*D*(U**T)*(P**T), if UPLO = 'U', or
A = P*L*D*(L**T)*(P**T), if UPLO = 'L',
where U (or L) is unit upper (or lower) triangular matrix, U**T (or L**T) is the transpose of U (or L), P is a permutation matrix, P**T is the transpose of P, and D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks. π¦
CSYTRF_RK is called to compute the factorization of a complex symmetric matrix. The factored form of A is then used to solve the system of equations A * X = B by calling BLAS3 routine CSYTRS_3. π₯
π Parameters π
UPLOβCHARACTER*1. Specifies whether the upper or lower triangular part of the symmetric matrixAis stored:= 'U': Upper triangle ofAis stored;= 'L': Lower triangle ofAis stored.
NβINTEGER. The number of linear equations, i.e., the order of the matrixA.N >= 0.NRHSβINTEGER. The number of right hand sides, i.e., the number of columns of the matrixB.NRHS >= 0.Aβ this is where part 1 cuts off, bestie β theAdescription continues in the next part πAβAisCOMPLEXarray, dimension(LDA,N). On entry, the symmetric matrixA.
If UPLO = '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.
If UPLO = '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, if INFO = 0, diagonal of the block diagonal matrix D and factors U or L as computed by CSYTRF_RK: a) ONLY diagonal elements of the symmetric 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) If UPLO = 'U': factor U in the superdiagonal part of A. If UPLO = 'L': factor L in the subdiagonal part of A.
For more info see the description of CSYTRF_RK routine.
LDAβLDAisINTEGER. The leading dimension of the arrayA.LDA >= max(1,N).EβEisCOMPLEXarray, dimension(N). On exit, contains the output computed by the factorization routineCSYTRF_RK, i.e. the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrixDwith 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 to0; IfUPLO = 'L':E(i) = D(i+1,i),i=1:N-1,E(N)is set to0.
NOTE: For 1-by-1 diagonal block D(k), where 1 <= k <= N, the element E(k) is set to 0 in both UPLO = 'U' or UPLO = 'L' cases.
For more info see the description of CSYTRF_RK routine.
IPIVβIPIVisINTEGERarray, dimension(N). Details of the interchanges and the block structure ofD, as determined byCSYTRF_RK.
For more info see the description of CSYTRF_RK routine.
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) ). Work array used in the factorization stage. On exit, ifINFO = 0,WORK(1)returns the optimalLWORK.LWORKβLWORKisINTEGER. The length ofWORK.LWORK >= 1. For best performance of factorization stageLWORK >= max(1,N*NB), whereNBis the optimal blocksize forCSYTRF_RK.
If LWORK = -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: If INFO = -k, the k-th argument had an illegal value
> 0: If INFO = k, the matrix A is singular, because: If UPLO = 'U': column k in the upper triangular part of A contains all zeros. If UPLO = 'L': column k in the lower triangular part of A contains all zeros.
Therefore D(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.
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 csysv_rk.f.
π¦ subroutine dsysv_rk
subroutine dsysv_rk (character uplo, integer n, integer nrhs, double
precision, dimension( lda, * ) a, integer lda, double precision,
dimension( * ) e, integer, dimension( * ) ipiv, double precision,
dimension( ldb, * ) b, integer ldb, double precision, dimension( * )
work, integer lwork, integer info)
DSYSV_RK computes the solution to system of linear equations A * X = B for SY matrices
Purpose π
okay so DSYSV_RK computes the solution to a real system of linear equations A * X = B, where A is an N-by-N symmetric matrix and X and B are N-by-NRHS matrices.
The bounded Bunch-Kaufman (rook) diagonal pivoting method is used to factor A as
A = P*U*D*(U**T)*(P**T), if UPLO = 'U', or
A = P*L*D*(L**T)*(P**T), if UPLO = 'L',
where U (or L) is unit upper (or lower) triangular matrix, U**T (or L**T) is the transpose of U (or L), P is a permutation matrix, P**T is the transpose of P, and D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
DSYTRF_RK is called to compute the factorization of a real symmetric matrix. The factored form of A is then used to solve the system of equations A * X = B by calling BLAS3 routine DSYTRS_3.
Parameters πΈ
UPLOβUPLOisCHARACTER*1. Specifies whether the upper or lower triangular part of the symmetric matrixAis stored:= '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βAisDOUBLE PRECISIONarray, dimension(LDA,N). On entry, the symmetric matrixA.
If UPLO = '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.
If UPLO = '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, if INFO = 0, diagonal of the block diagonal matrix D and factors U or L as computed by DSYTRF_RK: a) ONLY diagonal elements of the symmetric 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) If UPLO = 'U': factor U in the superdiagonal part of A. If UPLO = 'L': factor L in the subdiagonal part of A.
For more info see the description of DSYTRF_RK routine.
LDAβLDAisINTEGER. The leading dimension of the arrayA.LDA >= max(1,N).EβEisDOUBLE PRECISIONarray, dimension(N). On exit, contains the output computed by the factorization routineDSYTRF_RK, i.e. the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrixDwith 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 to0; IfUPLO = 'L':E(i) = D(i+1,i),i=1:N-1,E(N)is set to0.
NOTE: For 1-by-1 diagonal block D(k), where 1 <= k <= N, the element E(k) is set to 0 in both UPLO = 'U' or UPLO = 'L' cases.
For more info see the description of DSYTRF_RK routine.
IPIVβIPIVisINTEGERarray, dimension(N). Details of the interchanges and the block structure ofD, as determined byDSYTRF_RK.
For more info see the description of DSYTRF_RK routine.
BβBisDOUBLE PRECISIONarray, 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βWORKisDOUBLE PRECISIONarray, dimension( MAX(1,LWORK) ). Work array used in the factorization stage. On exit, ifINFO = 0,WORK(1)returns the optimalLWORK.LWORKβLWORKβINTEGER. It's the length ofWORK, andLWORK >= 1. Now, for the factorization stage to actually slay (peak performance, no lag), you wantLWORK >= max(1,N*NB), whereNBis the optimal blocksize forDSYTRF_RK. π
And the iconic shortcut: if LWORK = -1, the routine assumes a workspace query β it only calculates the optimal size of the WORK array for the factorization stage, returns that value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA. So you get the tea without committing to the whole array. β¨
INFOβINTEGER. Exit report card, and it's giving three moods:= 0: successful exit. we love a clean run π< 0: ifINFO = -k, the k-th argument had an illegal value. bestie, you passed something cursed π> 0: ifINFO = k, the matrixAis singular, because:- if
UPLO = 'U': columnkin the upper triangular part ofAcontains all zeros. - if
UPLO = 'L': columnkin the lower triangular part ofAcontains all zeros.
- if
Therefore D(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. π« like it finished the job but the vibes are catastrophic.
NOTE:INFOonly stores the first occurrence of a singularity β any subsequent occurrence of singularity is not stored inINFOeven though the factorization always completes. So it's not a full receipt, it's just the first red flag. π
π 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 dsysv_rk.f. π
π¦ ssysv_rk β the single-precision twin, no cap
subroutine ssysv_rk (character uplo, integer n, integer nrhs, real,
dimension( lda, * ) a, integer lda, real, dimension( * ) e, integer,
dimension( * ) ipiv, real, dimension( ldb, * ) b, integer ldb, real,
dimension( * ) work, integer lwork, integer info)
SSYSV_RK computes the solution to system of linear equations A * X = B for SY matrices. β¨
π Purpose:
So here's the whole vibe, bestie: SSYSV_RK computes the solution to a real system of linear equations A * X = B, where A is an N-by-N symmetric matrix and X and B are N-by-NRHS matrices. π«Ά
The bounded Bunch-Kaufman (rook) diagonal pivoting method is used to factor A as
A = P*U*D*(U**T)*(P**T), if UPLO = 'U', or
A = P*L*D*(L**T)*(P**T), if UPLO = 'L',
where U (or L) is unit upper (or lower) triangular matrix, U**T (or L**T) is the transpose of U (or L), P is a permutation matrix, P**T is the transpose of P, and D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks. literally the full main-character factorization. π
SSYTRF_RK is called to compute the factorization of a real symmetric matrix. The factored form of A is then used to solve the system of equations A * X = B by calling BLAS3 routine SSYTRS_3. two-step process, both steps ate. π₯
πΈ Parameters
UPLOβCHARACTER*1. Specifies whether the upper or lower triangular part of the symmetric matrixAis stored:= 'U': upper triangle ofAis stored= 'L': lower triangle ofAis stored
NβINTEGER. The number of linear equations, i.e., the order of the matrixA.N >= 0. πNRHSβINTEGER. The number of right hand sides, i.e., the number of columns of the matrixB.NRHS >= 0.AβREAL array, dimension (LDA,N). On entry, the symmetric matrixA.- If
UPLO = 'U': the leading N-by-N upper triangular part ofAcontains the upper triangular part of the matrixA, and the strictly lower triangular part ofAis not referenced. - If
UPLO = 'L': the leading N-by-N lower triangular part ofAcontains the lower triangular part of the matrixA, and the strictly upper triangular part ofAis not referenced. (half the matrix is just β¨not invitedβ¨ to the function.)
- If
On exit, if INFO = 0, diagonal of the block diagonal matrix D and factors U or L as computed by SSYTRF_RK:
- ONLY diagonal elements of the symmetric block diagonal matrix
Don the diagonal ofA, i.e.D(k,k) = A(k,k); (superdiagonal (or subdiagonal) elements ofDare stored on exit in arrayE), and - If
UPLO = 'U': factorUin the superdiagonal part ofA. IfUPLO = 'L': factorLin the subdiagonal part ofA.
For more info see the description of DSYTRF_RK routine. (yes, it really says DSYTRF_RK in the SSYSV_RK docs β that's what the source says, iykyk, don't come for me π)
LDAβINTEGER. The leading dimension of the arrayA.LDA >= max(1,N). πEβREAL array, dimension (N). On exit, contains the output computed by the factorization routineDSYTRF_RK, i.e. the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrixDwith 1-by-1 or 2-by-2 diagonal blocks, where:- If
UPLO = 'U':E(i) = D(i-1,i), i=2:N,E(1)is set to 0; - If
UPLO = 'L':E(i) = D(i+1,i), i=1:N-1,E(N)is set to 0.
- If
NOTE: For 1-by-1 diagonal blockD(k), where1 <= k <= N, the elementE(k)is set to 0 in bothUPLO = 'U'orUPLO = 'L'cases. zeroed out, respectfully π
For more info see the description of DSYTRF_RK routine.
IPIVβINTEGER array, dimension (N). Details of the interchanges and the block structure ofD, as determined bySSYTRF_RK. π¦
For more info see the description of DSYTRF_RK routine.
BβREAL array, dimension (LDB,NRHS). On entry, the N-by-NRHS right hand side matrixB. On exit, ifINFO = 0, the N-by-NRHS solution matrixX. glow-up complete β¨LDBβINTEGER. The leading dimension of the arrayB.LDB >= max(1,N).WORKβREAL array, dimension ( MAX(1,LWORK) ). Work array used in the factorization stage. On exit, ifINFO = 0,WORK(1)returns the optimalLWORK. πLWORKβINTEGER. The length ofWORK.LWORK >= 1. For best performance of factorization stageLWORK >= max(1,N*NB), whereNBis the optimal blocksize forDSYTRF_RK. π
If LWORK = -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βINTEGER. The whole report card, again:= 0: successful exit π< 0: IfINFO = -k, the k-th argument had an illegal value> 0: IfINFO = k, the matrixAis singular, because:- If
UPLO = 'U': columnkin the upper triangular part ofAcontains all zeros. - If
UPLO = 'L': columnkin the lower triangular part ofAcontains all zeros.
- If
Therefore D(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:INFOonly stores the first occurrence of a singularity, any subsequent occurrence of singularity is not stored inINFOeven though the factorization always completes.
π 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 ssysv_rk.f. π
π§ zhesv_rk β the complex*16 one, coming in hot
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
β¦and the rest of this one is literally in the next chunk, stay with me bestie π
okay so bestie, ZHESV_RK is literally here to solve 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 (rook) diagonal pivoting method is used to factor A as
A = 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, U**H (or L**H) 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. iconic. β¨
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 equations A * X = B by calling BLAS3 routine ZHETRS_3. no cap. π«Ά
π Parameters π
UPLOβUPLOisCHARACTER*1and says whether the upper or lower triangular part of the Hermitian matrixAis stored:= '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βAisCOMPLEX*16array, dimension(LDA,N). On entry, the Hermitian matrixA.- If
UPLO = 'U': the leading N-by-N upper triangular part ofAcontains the upper triangular part of the matrixA, and the strictly lower triangular part ofAis not referenced. - If
UPLO = 'L': the leading N-by-N lower triangular part ofAcontains the lower triangular part of the matrixA, and the strictly upper triangular part ofAis not referenced. - On exit, if
INFO = 0, diagonal of the block diagonal matrixDand factorsUorLas computed byZHETRF_RK:- a) ONLY diagonal elements of the Hermitian block diagonal matrix
Don the diagonal ofA, i.e.D(k,k) = A(k,k); (superdiagonal (or subdiagonal) elements ofDare stored on exit in arrayE), and - b) If
UPLO = 'U': factorUin the superdiagonal part ofA. IfUPLO = 'L': factorLin the subdiagonal part ofA.
- a) ONLY diagonal elements of the Hermitian block diagonal matrix
- For more info see the description of
ZHETRF_RKroutine.
- If
LDAβLDAisINTEGER; the leading dimension of the arrayA.LDA >= max(1,N).EβEisCOMPLEX*16array, dimension(N). On exit, contains the output computed by the factorization routineZHETRF_RK, i.e. the superdiagonal (or subdiagonal) elements of the Hermitian block diagonal matrixDwith 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_RKroutine.
- NOTE: For 1-by-1 diagonal block
IPIVβIPIVisINTEGERarray, dimension(N). Details of the interchanges and the block structure ofD, as determined byZHETRF_RK.- For more info see the description of
ZHETRF_RKroutine.
- For more info see the description of
BβBisCOMPLEX*16array, dimension(LDB,NRHS). On entry, the N-by-NRHS right hand side matrixB. On exit, ifINFO = 0, the N-by-NRHS solution matrixX.LDBβLDBisINTEGER; the leading dimension of the arrayB.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 optimalLWORK.LWORKβLWORKisINTEGER; the length ofWORK.LWORK >= 1. For best performance of factorization stageLWORK >= max(1,N*NB), whereNBis the optimal blocksize forZHETRF_RK.- If
LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of theWORKarray for factorization stage, returns this value as the first entry of theWORKarray, and no error message related toLWORKis issued byXERBLA.
- If
INFOβINFOisINTEGER= 0: successful exit< 0: IfINFO = -k, the k-th argument had an illegal value> 0: IfINFO = k, the matrixAis singular, because:- If
UPLO = 'U': column k in the upper triangular part ofAcontains all zeros. - If
UPLO = 'L': column k in the lower triangular part ofAcontains all zeros. - Therefore
D(k,k)is exactly zero, and superdiagonal elements of column k ofU(or subdiagonal elements of column k ofL) are all zeros. The factorization has been completed, but the block diagonal matrixDis exactly singular, and division by zero will occur if it is used to solve a system of equations. - NOTE:
INFOonly stores the first occurrence of a singularity, any subsequent occurrence of singularity is not stored inINFOeven though the factorization always completes.
- If
π 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.
π¦ zsysv_rk π¦
subroutine zsysv_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)
ZSYSV_RK computes the solution to system of linear equations A * X = B for SY matrices. π
β¨ Purpose β¨
ZSYSV_RK computes the solution to a complex system of linear equations A * X = B, where A is an N-by-N symmetric matrix and X and B are N-by-NRHS matrices.
The bounded Bunch-Kaufman (rook) diagonal pivoting method is used to factor A as
A = P*U*D*(U**T)*(P**T), if UPLO = 'U', or
A = P*L*D*(L**T)*(P**T), if UPLO = 'L',
where U (or L) is unit upper (or lower) triangular matrix, U**T (or L**T) is the transpose of U (or L), P is a permutation matrix, P**T is the transpose of P, and D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
ZSYTRF_RK is called to compute the factorization of a complex symmetric matrix. The factored form of A is then used to solve the system of equations A * X = B by calling BLAS3 routine ZSYTRS_3. π¦
π Parameters π
UPLOβUPLOisCHARACTER*1and says whether the upper or lower triangular part of the symmetric matrixAis stored:= '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βAisCOMPLEX*16array, dimension(LDA,N). On entry, the symmetric matrixA.- If
UPLO = 'U': the leading N-by-N upper triangular part ofAcontains the upper triangular part of the matrixA, and the strictly lower triangular part ofAis not referenced. - If
UPLO = 'L': the leading N-by-N lower triangular part ofAcontains the lower triangular part of the matrixA, and the strictly upper triangular part ofAis not referenced. - On exit, if
INFO = 0, diagonal of the block diagonal matrixDand factorsUorLas computed byZSYTRF_RK:- a) ONLY diagonal elements of the symmetric block diagonal matrix
Don the diagonal ofA, i.e.D(k,k) = A(k,k); (superdiagonal (or subdiagonal) elements ofDare stored on exit in arrayE), and - b) If
UPLO = 'U': factorUin the superdiagonal part ofA. IfUPLO = 'L': factorLin the subdiagonal part ofA.
- a) ONLY diagonal elements of the symmetric block diagonal matrix
- For more info see the description of
ZSYTRF_RKroutine.
- If
LDAβLDAisINTEGER; the leading dimension of the arrayA.LDA >= max(1,N).Eβ
Still in the parameter list, bestie β the rest of the cast is right here, no skips: β¨
EβCOMPLEX*16array, dimension(N). On exit, it contains the output computed by the factorization routineZSYTRF_RK, i.e. the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrixDwith1-by-1or2-by-2diagonal blocks, where ifUPLO = 'U':E(i) = D(i-1,i),i=2:N, andE(1)is set to0; ifUPLO = 'L':E(i) = D(i+1,i),i=1:N-1, andE(N)is set to0. NOTE: for1-by-1diagonal blockD(k), where1 <= k <= N, the elementE(k)is set to0in bothUPLO = 'U'orUPLO = 'L'cases. For more info see the description of theZSYTRF_RKroutine. π¦IPIVβINTEGERarray, dimension(N). Details of the interchanges and the block structure ofD, as determined byZSYTRF_RK. For more info see the description of theZSYTRF_RKroutine. πBβCOMPLEX*16array, dimension(LDB,NRHS). On entry, theN-by-NRHSright hand side matrixB. On exit, ifINFO = 0, theN-by-NRHSsolution matrixX. πLDBβINTEGER. The leading dimension of the arrayB.LDB >= max(1,N). β¨WORKβCOMPLEX*16array, dimension( MAX(1,LWORK) ). Work array used in the factorization stage. On exit, ifINFO = 0,WORK(1)returns the optimalLWORK. πLWORKβINTEGER. The length ofWORK.LWORK >= 1. For best performance of factorization stageLWORK >= max(1,N*NB), whereNBis the optimal blocksize forZSYTRF_RK. IfLWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of theWORKarray for factorization stage, returns this value as the first entry of theWORKarray, and no error message related toLWORKis issued byXERBLA. πΈINFOβINTEGER.= 0: successful exit.< 0: ifINFO = -k, the k-th argument had an illegal value.> 0: ifINFO = k, the matrixAis singular, because: ifUPLO = 'U': columnkin the upper triangular part ofAcontains all zeros; ifUPLO = 'L': columnkin the lower triangular part ofAcontains all zeros. ThereforeD(k,k)is exactly zero, and superdiagonal elements of columnkofU(or subdiagonal elements of columnkofL) are all zeros. The factorization has been completed, but the block diagonal matrixDis exactly singular, and division by zero will occur if it is used to solve a system of equations. NOTE:INFOonly stores the first occurrence of a singularity; any subsequent occurrence of singularity is not stored inINFOeven though the factorization always completes. π
Author π
The author squad is literally:
- 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 zsysv_rk.f.
Author π
Generated automatically by Doxygen for LAPACK from the source code. π§
And that's the whole page, bestie β the footer energy is LAPACK Version 3.12.0, and the page tag is hesv_rk(3). Go forth and factorize responsibly πβ¨
π¦ 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