hetf2_rook(3)
π NAME π
Manual name: hetf2_rook(3) β Library Functions Manual. The page is hetf2_rook and the family itβs documenting is {he,sy}tf2_rook: triangular factor, level 2. Bestie, this is the LAPACK page for the rook-pivoting triangular factorization routines β no cap, itβs a whole little squad of them. π
β¨ SYNOPSIS β¨
Hereβs the function lineup, with every signature exactly as it appears. π«Ά
subroutine chetf2_rook (uplo, n, a, lda, ipiv, info)β computes the factorization of a complex Hermitian indefinite matrix using the bounded Bunch-Kaufman ("rook") diagonal pivoting method (unblocked algorithm).subroutine csytf2_rook (uplo, n, a, lda, ipiv, info)β computes the factorization of a complex symmetric indefinite matrix using the bounded Bunch-Kaufman ("rook") diagonal pivoting method (unblocked algorithm).subroutine dsytf2_rook (uplo, n, a, lda, ipiv, info)β computes the factorization of a real symmetric indefinite matrix using the bounded Bunch-Kaufman ("rook") diagonal pivoting method (unblocked algorithm).subroutine ssytf2_rook (uplo, n, a, lda, ipiv, info)β computes the factorization of a real symmetric indefinite matrix using the bounded Bunch-Kaufman ("rook") diagonal pivoting method (unblocked algorithm).subroutine zhetf2_rook (uplo, n, a, lda, ipiv, info)β computes the factorization of a complex Hermitian indefinite matrix using the bounded Bunch-Kaufman ("rook") diagonal pivoting method (unblocked algorithm).subroutine zsytf2_rook (uplo, n, a, lda, ipiv, info)β computes the factorization of a complex symmetric indefinite matrix using the bounded Bunch-Kaufman ("rook") diagonal pivoting method (unblocked algorithm).
πΈ DETAILED DESCRIPTION πΈ
No extra preamble here, bestie β it goes straight into the function docs. β¨
π FUNCTION DOCUMENTATION π
π¦ subroutine chetf2_rook
subroutine chetf2_rook (character uplo, integer n, complex, dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv, integer info)
CHETF2_ROOK computes the factorization of a complex Hermitian indefinite matrix using the bounded Bunch-Kaufman ("rook") diagonal pivoting method (unblocked algorithm).
π Purpose:
Okay so this icon computes the factorization of a complex Hermitian matrix A using the bounded Bunch-Kaufman ("rook") diagonal pivoting method:
A = U*D*U**H or A = L*D*L**H
where U (or L) is a product of permutation and unit upper (lower) triangular matrices, U**H is the conjugate transpose of U, and D is Hermitian and block diagonal with 1-by-1 and 2-by-2 diagonal blocks. π«Ά
This is the unblocked version of the algorithm, calling Level 2 BLAS. Literally the unblocked one, periodt. π
πΈ Parameters
UPLOβUPLO is CHARACTER*1. It specifies whether the upper or lower triangular part of the Hermitian matrixAis stored:= 'U': Upper triangular= 'L': Lower triangular
NβN is INTEGER. The order of the matrixA.N >= 0.AβA is COMPLEX array, dimension (LDA,N).- On entry, the Hermitian matrix
A. IfUPLO = '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. IfUPLO = '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, the block diagonal matrix
Dand the multipliers used to obtain the factorUorL(see below for further details).
- On entry, the Hermitian matrix
LDAβLDA is INTEGER. The leading dimension of the arrayA.LDA >= max(1,N).IPIVβIPIV is INTEGER array, dimension (N). Details of the interchanges and the block structure ofD.- If
UPLO = 'U':- 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.
- If
- If
UPLO = 'L':- 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.
- If
- If
INFOβINFO is INTEGER.= 0: successful exit< 0: ifINFO = -k, the k-th argument had an illegal value> 0: ifINFO = k,D(k,k)is exactly zero. 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.
Bestie, that > 0 case is the βit finished, but the math is about to get real messyβ warning. Division by zero is giving chaos. π
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π₯ Further Details:
If UPLO = 'U', then A = U*D*U**H, where
U = P(n)*U(n)* ... *P(k)U(k)* ...,
i.e., U is a product of terms P(k)*U(k), where k decreases from n to 1 in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1 and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as defined by IPIV(k), and U(k) is a unit upper triangular matrix, such that if the diagonal block D(k) is of order s (s = 1 or 2), then
( I v 0 ) k-s
U(k) = ( 0 I 0 ) s
( 0 0 I ) n-k
k-s s n-k
If s = 1, D(k) overwrites A(k,k), and v overwrites A(1:k-1,k).
If s = 2, the upper triangle of D(k) overwrites A(k-1,k-1), A(k-1,k), and A(k,k), and v overwrites A(1:k-2,k-1:k).
If UPLO = 'L', then A = L*D*L**H, where
L = P(1)*L(1)* ... *P(k)*L(k)* ...,
i.e., L is a product of terms P(k)*L(k), where k increases from 1 to n in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1 and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as defined by IPIV(k), and L(k) is a unit lower triangular matrix, such that if the diagonal block D(k) is of order s (s = 1 or 2), then
( I 0 0 ) k-1
L(k) = ( 0 I 0 ) s
( 0 v I ) n-k-s+1
k-1 s n-k-s+1
If s = 1, D(k) overwrites A(k,k), and v overwrites A(k+1:n,k).
If s = 2, the lower triangle of D(k) overwrites A(k,k), A(k+1,k), and A(k+1,k+1), and v overwrites A(k+2:n,k:k+1).
π Contributors:
- 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
- 01-01-96 - Based on modifications by J. Lewis, Boeing Computer Services Company; A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
Definition at line 193 of file chetf2_rook.f.
π¦ subroutine csytf2_rook
subroutine csytf2_rook (character uplo, integer n, complex, dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv, integer info)
CSYTF2_ROOK computes the factorization of a complex symmetric indefinite matrix using the bounded Bunch-Kaufman ("rook") diagonal pivoting method (unblocked algorithm).
π Purpose:
This one computes the factorization of a complex symmetric matrix A using the bounded Bunch-Kaufman ("rook") diagonal pivoting method:
A = U*D*U**T or A = L*D*L**T
where U (or L) is a product of permutation and unit upper (lower) triangular matrices, U**T is the transpose of U, and D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks. π¦
This is the unblocked version of the algorithm, calling Level 2 BLAS. Same energy as before, but for the complex symmetric case. β¨
πΈ Parameters
UPLOβUPLO is CHARACTER*1. It specifies whether the upper or lower triangular part of the symmetric matrixAis stored:= 'U': Upper triangular= 'L': Lower triangular
NβN is INTEGER. The order of the matrixA.N >= 0.AβA is COMPLEX array, dimension (LDA,N).- On entry, the symmetric matrix
A. IfUPLO = '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. IfUPLO = '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, the block diagonal matrix
Dand the multipliers used to obtain the factorUorL(see below for further details).
- On entry, the symmetric matrix
LDAβLDA is INTEGER. The leading dimension of the arrayA.LDA >= max(1,N).
π IPIV
so IPIV? yeah it's an INTEGER array, dimension (N) and it's literally the receipts β¨ β it holds all the deets about the interchanges and the block structure of D. bestie, read it carefully because it's giving lore:
- if
UPLO = 'U':- 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, andD(k-1:k,k-1:k)is a 2-by-2 diagonal block. two-for-one, iconic π
- if
- if
UPLO = 'L':- if
IPIV(k) > 0, then rows and columnskandIPIV(k)were interchanged andD(k,k)is a 1-by-1 diagonal block. same energy, different triangle π¦ - 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, andD(k:k+1,k:k+1)is a 2-by-2 diagonal block. going down this time π«Ά
- if
INFOβINFO is INTEGER, and it's the vibe check at the end π= 0: successful exit, we ate, no crumbs π< 0: ifINFO = -k, thek-th argument had an illegal value β so somebody passed something unserious π> 0: ifINFO = k,D(k,k)is exactly zero. 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. bestie that's a whole crash, do NOT ignore it π
so yeah, INFO > 0 isn't an error in running the routine β the factorization finished β but the matrix D is straight-up singular. solving with it = division by zero. no cap. π
π Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
β¨ Further Details:
- if
UPLO = 'U', thenA = U*D*U**T, where
U = P(n)*U(n)* ... *P(k)U(k)* ...,
i.e., U is a product of terms P(k)*U(k), where k decreases from n to 1 in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1 and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as defined by IPIV(k), and U(k) is a unit upper triangular matrix, such that if the diagonal block D(k) is of order s (s = 1 or 2), then
( I v 0 ) k-s
U(k) = ( 0 I 0 ) s
( 0 0 I ) n-k
k-s s n-k
- if
s = 1,D(k)overwritesA(k,k), andvoverwritesA(1:k-1,k). one little cell, slay π - if
s = 2, the upper triangle ofD(k)overwritesA(k-1,k-1),A(k-1,k), andA(k,k), andvoverwritesA(1:k-2,k-1:k). two cells plus their little corner, still slay π - if
UPLO = 'L', thenA = L*D*L**T, where
L = P(1)*L(1)* ... *P(k)*L(k)* ...,
i.e., L is a product of terms P(k)*L(k), where k increases from 1 to n in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1 and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as defined by IPIV(k), and L(k) is a unit lower triangular matrix, such that if the diagonal block D(k) is of order s (s = 1 or 2), then
( I 0 0 ) k-1
L(k) = ( 0 I 0 ) s
( 0 v I ) n-k-s+1
k-1 s n-k-s+1
- if
s = 1,D(k)overwritesA(k,k), andvoverwritesA(k+1:n,k)πΈ - if
s = 2, the lower triangle ofD(k)overwritesA(k,k),A(k+1,k), andA(k+1,k+1), andvoverwritesA(k+2:n,k:k+1)π
π«Ά Contributors:
- 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
- 01-01-96 - Based on modifications by J. Lewis, Boeing Computer Services Company; A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville abd , USA
Definition at line 193 of file csytf2_rook.f.
π subroutine dsytf2_rook ( character uplo, integer n, double precision, dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv, integer info ) π
subroutine dsytf2_rook (character uplo, integer n, double precision,
dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv,
integer info)
DSYTF2_ROOK computes the factorization of a real symmetric indefinite matrix using the bounded Bunch-Kaufman ("rook") diagonal pivoting method (unblocked algorithm). okay double-precision bestie, this is your moment π§
β Purpose:
DSYTF2_ROOKcomputes the factorization of a real symmetric matrixAusing the bounded Bunch-Kaufman () diagonal pivoting method:
A = U*D*U**T or A = L*D*L**T
- where
U(orL) is a product of permutation and unit upper (lower) triangular matrices,U**Tis the transpose ofU, andDis symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks. - this is the unblocked version of the algorithm, calling Level 2 BLAS. no blocking, just vibes π₯
πΈ Parameters
UPLOβUPLO is CHARACTER*1, and it specifies whether the upper or lower triangular part of the symmetric matrixAis stored:= 'U': Upper triangular β¬οΈ= 'L': Lower triangular β¬οΈ
NβN is INTEGER, the order of the matrixA.N >= 0. (yes, zero is allowed, we don't judge π«Ά)AβA is DOUBLE PRECISION array, dimension (LDA,N)- on entry, the symmetric matrix
A. IfUPLO = '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. IfUPLO = '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. so only half the matrix is even invited to the party π - on exit, the block diagonal matrix
Dand the multipliers used to obtain the factorUorL(see below for further details). it comes back changed, main character energy β¨
- on entry, the symmetric matrix
LDAβLDA is INTEGER, the leading dimension of the arrayA.LDA >= max(1,N). don't skimp on it, fr frIPIVβIPIV is INTEGER array, dimension (N), details of the interchanges and the block structure ofD:- if
UPLO = 'U':- 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.
- if
- if
UPLO = 'L':- 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.
- if
- if
INFOβINFO is INTEGER= 0: successful exit π< 0: ifINFO = -k, thek-th argument had an illegal value π> 0: ifINFO = k,D(k,k)is exactly zero. 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. again: singular D, zero division, chaos π
π Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
β¨ Further Details:
- if
UPLO = 'U', thenA = U*D*U**T, where
U = P(n)*U(n)* ... *P(k)U(k)* ...,
i.e., U is a product of terms P(k)*U(k), where k decreases from n to 1 in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1 and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as defined by IPIV(k), and U(k) is a unit upper triangular matrix, such that if the diagonal block D(k) is of order s (s = 1 or 2), then
( I v 0 ) k-s
U(k) = ( 0 I 0 ) s
( 0 0 I ) n-k
k-s s n-k
- if
s = 1,D(k)overwritesA(k,k), andvoverwritesA(1:k-1,k). - if
s = 2, the upper triangle ofD(k)overwritesA(k-1,k-1),A(k-1,k), andA(k,k), andvoverwritesA(1:k-2,k-1:k). - if
UPLO = 'L', thenA = L*D*L**T, where
L = P(1)*L(1)* ... *P(k)*L(k)* ...,
i.e., L is a product of terms P(k)*L(k), where k increases from 1 to n in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1 and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as defined by IPIV(k), and L(k) is a unit lower triangular matrix, such that if the diagonal block D(k) is of order s (s = 1 or 2), then
( I 0 0 ) k-1
L(k) = ( 0 I 0 ) s
( 0 v I ) n-k-s+1
k-1 s n-k-s+1
- if
s = 1,D(k)overwritesA(k,k), andvoverwritesA(k+1:n,k). - if
s = 2, the lower triangle ofD(k)overwritesA(k,k),A(k+1,k), andA(k+1,k+1), andvoverwritesA(k+2:n,k:k+1).
π«Ά Contributors:
- 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
- 01-01-96 - Based on modifications by J. Lewis, Boeing Computer Services Company; A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville abd , USA
Definition at line 193 of file dsytf2_rook.f.
π¦ subroutine ssytf2_rook ( character uplo, integer n, real, dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv, integer info ) π¦
subroutine ssytf2_rook (character uplo, integer n, real, dimension( lda, * )
a, integer lda, integer, dimension( * ) ipiv, integer info)
SSYTF2_ROOK computes the factorization of a real symmetric indefinite matrix using the bounded Bunch-Kaufman ("rook") diagonal pivoting method (unblocked algorithm). single precision edition, same drama, half the bytes π
β Purpose:
okay so SSYTF2_ROOK is the real-symmetric bestie and it computes the factorization of a real symmetric matrix A using the bounded Bunch-Kaufman () diagonal pivoting method:
A = U*D*U**T or A = L*D*L**T
where U (or L) is a product of permutation and unit upper (lower) triangular matrices, U**T is the transpose of U, and D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
This is the unblocked version of the algorithm, calling Level 2 BLAS. no cap, itβs serving unblocked realness π
πΈ Parameters
UPLOβCHARACTER*1. Specifies whether the upper or lower triangular part of the symmetric matrixAis stored:= 'U': Upper triangular= 'L': Lower triangular
NβINTEGER. The order of the matrixA.N >= 0.AβREAL array, dimension (LDA,N).- On entry, the symmetric matrix
A. 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, the block diagonal matrix
Dand the multipliers used to obtain the factorUorL(see below for further details).
- On entry, the symmetric matrix
LDAβINTEGER. The leading dimension of the arrayA.LDA >= max(1,N).IPIVβINTEGER array, dimension (N). Details of the interchanges and the block structure ofD.- If
UPLO = 'U':- 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.
- If
- If
UPLO = 'L':- 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.
- If
- If
INFOβINTEGER.= 0: successful exit< 0: ifINFO = -k, thek-th argument had an illegal value> 0: ifINFO = k,D(k,k)is exactly zero. 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. π
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
β¨ Further Details:
If UPLO = 'U', then A = U*D*U**T, where
U = P(n)*U(n)* ... *P(k)U(k)* ...,
i.e., U is a product of terms P(k)*U(k), where k decreases from n to 1 in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1 and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as defined by IPIV(k), and U(k) is a unit upper triangular matrix, such that if the diagonal block D(k) is of order s (s = 1 or 2), then
( I v 0 ) k-s
U(k) = ( 0 I 0 ) s
( 0 0 I ) n-k
k-s s n-k
If s = 1, D(k) overwrites A(k,k), and v overwrites A(1:k-1,k). If s = 2, the upper triangle of D(k) overwrites A(k-1,k-1), A(k-1,k), and A(k,k), and v overwrites A(1:k-2,k-1:k).
If UPLO = 'L', then A = L*D*L**T, where
L = P(1)*L(1)* ... *P(k)*L(k)* ...,
i.e., L is a product of terms P(k)*L(k), where k increases from 1 to n in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1 and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as defined by IPIV(k), and L(k) is a unit lower triangular matrix, such that if the diagonal block D(k) is of order s (s = 1 or 2), then
( I 0 0 ) k-1
L(k) = ( 0 I 0 ) s
( 0 v I ) n-k-s+1
k-1 s n-k-s+1
If s = 1, D(k) overwrites A(k,k), and v overwrites A(k+1:n,k). If s = 2, the lower triangle of D(k) overwrites A(k,k), A(k+1,k), and A(k+1,k+1), and v overwrites A(k+2:n,k:k+1).
π Contributors:
- 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
01-01-96- Based on modifications by J. Lewis, Boeing Computer Services Company; A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville abd , USA
Definition at line 193 of file ssytf2_rook.f.
π¦ zhetf2_rook β complex Hermitian edition
subroutine zhetf2_rook (character uplo, integer n, complex*16, dimension(
lda, * ) a, integer lda, integer, dimension( * ) ipiv, integer info)
ZHETF2_ROOK computes the factorization of a complex Hermitian indefinite matrix using the bounded Bunch-Kaufman ("rook") diagonal pivoting method (unblocked algorithm). sheβs giving complex, sheβs giving Hermitian, sheβs giving unblocked π
β¨ Purpose:
ZHETF2_ROOK computes the factorization of a complex Hermitian matrix A using the bounded Bunch-Kaufman () diagonal pivoting method:
A = U*D*U**H or A = L*D*L**H
where U (or L) is a product of permutation and unit upper (lower) triangular matrices, U**H is the conjugate transpose of U, and D is Hermitian and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
This is the unblocked version of the algorithm, calling Level 2 BLAS.
πΈ Parameters
UPLOβCHARACTER*1. Specifies whether the upper or lower triangular part of the Hermitian matrixAis stored:= 'U': Upper triangular= 'L': Lower triangular
NβINTEGER. The order of the matrixA.N >= 0.AβCOMPLEX*16 array, dimension (LDA,N).- On entry, the Hermitian matrix
A. 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, the block diagonal matrix
Dand the multipliers used to obtain the factorUorL(see below for further details).
- On entry, the Hermitian matrix
LDAβINTEGER. The leading dimension of the arrayA.LDA >= max(1,N).IPIVβINTEGER array, dimension (N). Details of the interchanges and the block structure ofD.- If
UPLO = 'U':- 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.
- If
- If
UPLO = 'L':- 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.
- If
- If
INFOβINTEGER.= 0: successful exit< 0: ifINFO = -k, thek-th argument had an illegal value> 0: ifINFO = k,D(k,k)is exactly zero. 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. π
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Further Details:
okay bestie, back to zhetf2_rook for the final lore drop π
the factorization tea continues, and yes every overwrite rule is coming with us.
β¨ Further Details β¨
If UPLO = 'U', then A = U*D*U**H, where
U = P(n)*U(n)* ... *P(k)U(k)* ...,
i.e., U is a product of terms P(k)*U(k), where k decreases from n to 1 in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1 and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as defined by IPIV(k), and U(k) is a unit upper triangular matrix, such that if the diagonal block D(k) is of order s (s = 1 or 2), then
!> ( I v 0 ) k-s
!> U(k) = ( 0 I 0 ) s
!> ( 0 0 I ) n-k
!> k-s s n-k
If s = 1, D(k) overwrites A(k,k), and v overwrites A(1:k-1,k). If s = 2, the upper triangle of D(k) overwrites A(k-1,k-1), A(k-1,k), and A(k,k), and v overwrites A(1:k-2,k-1:k).
If UPLO = 'L', then A = L*D*L**H, where
L = P(1)*L(1)* ... *P(k)*L(k)* ...,
i.e., L is a product of terms P(k)*L(k), where k increases from 1 to n in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1 and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as defined by IPIV(k), and L(k) is a unit lower triangular matrix, such that if the diagonal block D(k) is of order s (s = 1 or 2), then
!> ( I 0 0 ) k-1
!> L(k) = ( 0 I 0 ) s
!> ( 0 v I ) n-k-s+1
!> k-1 s n-k-s+1
If s = 1, D(k) overwrites A(k,k), and v overwrites A(k+1:n,k). If s = 2, the lower triangle of D(k) overwrites A(k,k), A(k+1,k), and A(k+1,k+1), and v overwrites A(k+2:n,k:k+1).
Contributors π«Ά
November 2013β Igor Kozachenko, Computer Science Division, University of California, BerkeleySeptember 2007β Sven Hammarling, Nicholas J. Higham, Craig Lucas, School of Mathematics, University of Manchester01-01-96β Based on modifications by J. Lewis, Boeing Computer Services Company; A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
Definition at line 193 of file zhetf2_rook.f.
zsytf2_rook π¦
subroutine zsytf2_rook (character uplo, integer n, complex*16, dimension(
lda, * ) a, integer lda, integer, dimension( * ) ipiv, integer info)
ZSYTF2_ROOK computes the factorization of a complex symmetric indefinite matrix using the bounded Bunch-Kaufman "rook" diagonal pivoting method (unblocked algorithm).
Purpose π―
ZSYTF2_ROOK computes the factorization of a complex symmetric matrix A using the bounded Bunch-Kaufman () diagonal pivoting method:
A = U*D*U**T or A = L*D*L**T
where U (or L) is a product of permutation and unit upper (lower) triangular matrices, U**T is the transpose of U, and D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
This is the unblocked version of the algorithm, calling Level 2 BLAS.
Parameters π
UPLOβCHARACTER*1. Specifies whether the upper or lower triangular part of the symmetric matrixAis stored:'U': Upper triangular'L': Lower triangular
NβINTEGER. The order of the matrixA.N >= 0.AβCOMPLEX*16array, dimension(LDA,N). On entry, the symmetric 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, the block diagonal matrixDand the multipliers used to obtain the factorUorL(see below for further details).LDAβINTEGER. The leading dimension of the arrayA.LDA >= max(1,N).
bestie, do not play withLDAβ it has to be at leastmax(1,N)π
IPIVβINTEGERarray, dimension(N). Details of the interchanges and the block structure ofD.- If
UPLO = 'U':- 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)wereinerchagedβ yes, that is the exact source spelling π β andD(k-1:k,k-1:k)is a 2-by-2 diagonal block.
- If
- If
UPLO = 'L':- 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)wereinerchagedβ again, exact source spelling π β andD(k:k+1,k:k+1)is a 2-by-2 diagonal block.
- If
- If
INFOβINTEGER.= 0: successful exit< 0: ifINFO = -k, thek-th argument had an illegal value> 0: ifINFO = k,D(k,k)is exactly zero. 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.
INFO > 0is the βwe finished, butDis singularβ warning β solving with it is gonna divide by zero, no cap π
Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Further Details π
If UPLO = 'U', then A = U*D*U**T, where
U = P(n)*U(n)* ... *P(k)U(k)* ...,
i.e., U is a product of terms P(k)*U(k), where k decreases from n to 1 in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1 and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as defined by IPIV(k), and U(k) is a unit upper triangular matrix, such that if the diagonal block D(k) is of order s (s = 1 or 2), then
!> ( I v 0 ) k-s
!> U(k) = ( 0 I 0 ) s
!> ( 0 0 I ) n-k
!> k-s s n-k
If s = 1, D(k) overwrites A(k,k), and v overwrites A(1:k-1,k). If s = 2, the upper triangle of D(k) overwrites A(k-1,k-1), A(k-1,k), and A(k,k), and v overwrites A(1:k-2,k-1:k).
If UPLO = 'L', then A = L*D*L**T, where
L = P(1)*L(1)* ... *P(k)*L(k)* ...,
i.e., L is a product of terms P(k)*L(k), where k increases from 1 to n in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1 and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as defined by IPIV(k), and L(k) is a unit lower triangular matrix, such that if the diagonal block D(k) is of order s (s = 1 or 2), then
!> ( I 0 0 ) k-1
!> L(k) = ( 0 I 0 ) s
!> ( 0 v I ) n-k-s+1
!> k-1 s n-k-s+1
If s = 1, D(k) overwrites A(k,k), and v overwrites A(k+1:n,k). If s = 2, the lower triangle of D(k) overwrites A(k,k), A(k+1,k), and A(k+1,k+1), and v overwrites A(k+2:n,k:k+1).
Contributors π«Ά
November 2013β Igor Kozachenko, Computer Science Division, University of California, BerkeleySeptember 2007β Sven Hammarling, Nicholas J. Higham, Craig Lucas, School of Mathematics, University of Manchester01-01-96β Based on modifications by J. Lewis, Boeing Computer Services Company; A. Petitet, Computer Science Dept., Univ. of Tenn.,Knoxville abd , USAβ yep,abdis literally in the source π
Definition at line 193 of file zsytf2_rook.f.
Author β¨
Generated automatically by Doxygen for LAPACK from the source code.
okay that is the whole hetf2_rook(3) saga, bestie π the footer says source LAPACK, version 3.12.0, and the date/tag line is hetf2_rook(3) β mwah, go factor something safely π«Άβ¨
π¦ 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