pbstf(3)
π pbstf(3) π
okay so bestie, welcome to pbstf β that's the pbstf(3) page from the Library Functions Manual, and honestly? she's a whole vibe. this is the split Cholesky factor situation, and the key thing to remember is that you use her with hbgst. iykyk π
she's not one function, she's a little family of four: cpbstf, dpbstf, spbstf and zpbstf. same energy, different precisions. we love a consistent queen π
β¨ SYNOPSIS β¨
π Functions
subroutine cpbstf (uplo, n, kd, ab, ldab, info)β CPBSTFsubroutine dpbstf (uplo, n, kd, ab, ldab, info)β DPBSTFsubroutine spbstf (uplo, n, kd, ab, ldab, info)β SPBSTFsubroutine zpbstf (uplo, n, kd, ab, ldab, info)β ZPBSTF
π¦ DESCRIPTION π¦
Detailed Description
π Function Documentation π
πΈ subroutine cpbstf (character uplo, integer n, integer kd, complex, dimension( ldab, * ) ab, integer ldab, integer info)
subroutine cpbstf (character uplo, integer n, integer kd, complex, dimension( ldab, * ) ab, integer ldab, integer info)
CPBSTF
okay so here's the Purpose, and she is important:
CPBSTF computes a split Cholesky factorization of a complex Hermitian positive definite band matrix A. no cap, that's the whole job π
this routine is literally designed to be used in conjunction with CHBGST β they're a package deal, besties π«Ά
the factorization has the form A = S**H*S where S is a band matrix of the same bandwidth as A and has the following structure:
S = ( U )
( M L )
where U is upper triangular of order m = (n+kd)/2, and L is lower triangular of order n-m. iconic structure tbh β¨
π Parameters
UPLO
UPLO is CHARACTER*1
= 'U': Upper triangle ofAis stored;= 'L': Lower triangle ofAis stored.
N
N is INTEGER
The order of the matrix A. N >= 0.
KD
KD is INTEGER
The number of superdiagonals of the matrix A if UPLO = 'U', or the number of subdiagonals if UPLO = 'L'. KD >= 0.
AB
AB is COMPLEX array, dimension (LDAB,N)
On entry, the upper or lower triangle of the Hermitian band matrix A, stored in the first kd+1 rows of the array. The j-th column of A is stored in the j-th column of the array AB as follows:
- if
UPLO = 'U',AB(kd+1+i-j,j) = A(i,j)formax(1,j-kd)<=i<=j; - if
UPLO = 'L',AB(1+i-j,j) = A(i,j)forj<=i<=min(n,j+kd).
On exit, if INFO = 0, the factor S from the split Cholesky factorization A = S**H*S. See Further Details. (yes queen, the array gets overwritten β that's the whole point π)
LDAB
LDAB is INTEGER
The leading dimension of the array AB. LDAB >= KD+1.
INFO
INFO is INTEGER
= 0: successful exit π< 0: ifINFO = -i, thei-th argument had an illegal value> 0: ifINFO = i, the factorization could not be completed, because the updated elementa(i,i)was negative; the matrixAis not positive definite.
π¨ real talk: an INFO > 0 means your matrix is not positive definite. that's not a "try again" situation, that's a "your matrix said no" situation π
π Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
π§ Further Details
the band storage scheme is illustrated by the following example, when N = 7, KD = 2:
S = ( s11 s12 s13 )
( s22 s23 s24 )
( s33 s34 )
( s44 )
( s53 s54 s55 )
( s64 s65 s66 )
( s75 s76 s77 )
If UPLO = 'U', the array AB holds:
on entry: on exit:
* * a13 a24 a35 a46 a57 * * s13 s24 s53**H s64**H s75**H
* a12 a23 a34 a45 a56 a67 * s12 s23 s34 s54**H s65**H s76**H
a11 a22 a33 a44 a55 a66 a77 s11 s22 s33 s44 s55 s66 s77
If UPLO = 'L', the array AB holds:
on entry: on exit:
a11 a22 a33 a44 a55 a66 a77 s11 s22 s33 s44 s55 s66 s77
a21 a32 a43 a54 a65 a76 * s12**H s23**H s34**H s54 s65 s76 *
a31 a42 a53 a64 a64 * * s13**H s24**H s53 s64 s75 * *
array elements marked * are not used by the routine; s12**H denotes conjg(s12); the diagonal elements of S are real. periodt π
π definition at line 152 of file cpbstf.f.
π subroutine dpbstf (character uplo, integer n, integer kd, double precision, dimension( ldab, * ) ab, integer ldab, integer info)
subroutine dpbstf (character uplo, integer n, integer kd, double precision, dimension( ldab, * ) ab, integer ldab, integer info)
DPBSTF
Purpose:
DPBSTF computes a split Cholesky factorization of a real symmetric positive definite band matrix A. same deal, double precision, still slaying β¨
this routine is designed to be used in conjunction with DSBGST π
the factorization has the form A = S**T*S where S is a band matrix of the same bandwidth as A and the following structure:
S = ( U )
( M L )
where U is upper triangular of order m = (n+kd)/2, and L is lower triangular of order n-m.
π Parameters
UPLO
UPLO is CHARACTER*1
= 'U': Upper triangle ofAis stored;= 'L': Lower triangle ofAis stored.
N
N is INTEGER
The order of the matrix A. N >= 0.
KD
KD is INTEGER
The number of superdiagonals of the matrix A if UPLO = 'U', or the number of subdiagonals if UPLO = 'L'. KD >= 0.
AB
AB is DOUBLE PRECISION array, dimension (LDAB,N)
On entry, the upper or lower triangle of the symmetric band matrix A, stored in the first kd+1 rows of the array. The j-th column of A is stored in the j-th column of the array AB as follows:
- if
UPLO = 'U',AB(kd+1+i-j,j) = A(i,j)formax(1,j-kd)<=i<=j; - if
UPLO = 'L',AB(1+i-j,j) = A(i,j)forj<=i<=min(n,j+kd).
On exit, if INFO = 0, the factor S from the split Cholesky factorization A = S**T*S. See Further Details.
LDAB
LDAB is INTEGER
The leading dimension of the array AB. LDAB >= KD+1.
INFO
INFO is INTEGER
= 0: successful exit π< 0: ifINFO = -i, thei-th argument had an illegal value> 0: ifINFO = i, the factorization could not be completed, because the updated elementa(i,i)was negative; the matrixAis not positive definite.
π¨ again for the people in the back:INFO > 0=Ais not positive definite. no fixing that with vibes π
π Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
π§ Further Details
the band storage scheme is illustrated by the following example, when N = 7, KD = 2:
S = ( s11 s12 s13 )
( s22 s23 s24 )
( s33 s34 )
( s44 )
( s53 s54 s55 )
( s64 s65 s66 )
( s75 s76 s77 )
If UPLO = 'U', the array AB holds:
on entry: on exit:
* * a13 a24 a35 a46 a57 * * s13 s24 s53 s64 s75
* a12 a23 a34 a45 a56 a67 * s12 s23 s34 s54 s65 s76
a11 a22 a33 a44 a55 a66 a77 s11 s22 s33 s44 s55 s66 s77
If UPLO = 'L', the array AB holds:
on entry: on exit:
a11 a22 a33 a44 a55 a66 a77 s11 s22 s33 s44 s55 s66 s77
a21 a32 a43 a54 a65 a76 * s12 s23 s34 s54 s65 s76 *
a31 a42 a53 a64 a64 * * s13 s24 s53 s64 s75 * *
array elements marked * are not used by the routine. (no **H here β she's real, not complex, and we respect that πΈ)
π definition at line 151 of file dpbstf.f.
π¦ subroutine spbstf (character uplo, integer n, integer kd, real, dimension( ldab, * ) ab, integer ldab, integer info)
subroutine spbstf (character uplo, integer n, integer kd, real, dimension( ldab, * ) ab, integer ldab, integer info)
SPBSTF
Purpose:
SPBSTF computes a split Cholesky factorization of a real symmetric positive definite band matrix A. same routine as DPBSTF but single precision β she's the lowkey version and she still ate π
this routine is designed to be used in conjunction with SSBGST π«Ά
the factorization has the form A = S**T*S where S is a band matrix of the same bandwidth as A and the following structure:
S = ( U )
( M L )
where U is upper triangular of order m = (n+kd)/2, and L is lower triangular of order n-m.
π Parameters
UPLO
UPLO is CHARACTER*1
= 'U': Upper triangle ofAis stored;= 'L': Lower triangle ofAis stored.
N
N is INTEGER
The order of the matrix A. N >= 0.
KD
KD is INTEGER
The number of superdiagonals of the matrix A if UPLO = 'U', or the number of subdiagonals if UPLO = 'L'. KD >= 0.
AB
AB is REAL array, dimension (LDAB,N)
On entry, the upper or lower triangle of the symmetric band matrix A, stored in the first kd+1 rows of the array. The j-th column of A is stored in the j-th column of the array AB as follows:
- if
UPLO = 'U',AB(kd+1+i-j,j) = A(i,j)formax(1,j-kd)<=i<=j; - if
UPLO = 'L',AB(1+i-j,j) = A(i,j)forj<=i<=min(n,j+kd).
On exit, if INFO = 0, the factor S from the split Cholesky factorization A = S**T*S. See Further Details.
LDAB
LDAB is INTEGER
The leading dimension of the array AB. LDAB >= KD+1.
INFO
INFO is INTEGER
= 0: successful exit π< 0: ifINFO = -i, thei-th argument had an illegal value> 0: ifINFO = i, the factorization could not be completed, because the updated elementa(i,i)was negative; the matrixAis not positive definite.
π¨ yes, same warning, because same rule:INFO > 0= negative updated diagonal =Ais not positive definite. it's giving "the math said no" π
π Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd. β yes bestie, weβre still in the author credits and NAG Ltd. is right there too π
β¨ Further Details β¨
Okay so the band storage scheme is a whole vibe, and hereβs the example from the source when N = 7, KD = 2:
S = ( s11 s12 s13 )
( s22 s23 s24 )
( s33 s34 )
( s44 )
( s53 s54 s55 )
( s64 s65 s66 )
( s75 s76 s77 )
If UPLO = 'U', the array AB holds:
on entry: on exit:
* * a13 a24 a35 a46 a57 * * s13 s24 s53 s64 s75
* a12 a23 a34 a45 a56 a67 * s12 s23 s34 s54 s65 s76
a11 a22 a33 a44 a55 a66 a77 s11 s22 s33 s44 s55 s66 s77
If UPLO = 'L', the array AB holds:
on entry: on exit:
a11 a22 a33 a44 a55 a66 a77 s11 s22 s33 s44 s55 s66 s77
a21 a32 a43 a54 a65 a76 * s12 s23 s34 s54 s65 s76 *
a31 a42 a53 a64 a64 * * s13 s24 s53 s64 s75 * *
Array elements marked * are not used by the routine. Not used, not invited, not on the guest list π«β¨
Definition at line 151 of file spbstf.f.
π¦ subroutine zpbstf β aka ZPBSTF
subroutine zpbstf (character uplo, integer n, integer kd, complex*16,
dimension( ldab, * ) ab, integer ldab, integer info)
ZPBSTF
π Purpose
Okay so ZPBSTF computes a split Cholesky factorization of a complex Hermitian positive definite band matrix A. Itβs giving βband matrix but make it split Choleskyβ energy π₯
This routine is designed to be used in conjunction with ZHBGST. Bestie, theyβre a package deal.
The factorization has the form A = S**H*S where S is a band matrix of the same bandwidth as A and the following structure:
S = ( U )
( M L )
where U is upper triangular of order m = (n+kd)/2, and L is lower triangular of order n-m.
πΈ Parameters
UPLOβUPLOisCHARACTER*1.= 'U': Upper triangle ofAis stored;= 'L': Lower triangle ofAis stored.NβNisINTEGER. The order of the matrixA.N >= 0.KDβKDisINTEGER. The number of superdiagonals of the matrixAifUPLO = 'U', or the number of subdiagonals ifUPLO = 'L'.KD >= 0.ABβABisCOMPLEX*16 array, dimension (LDAB,N). On entry, the upper or lower triangle of the Hermitian band matrixA, stored in the firstkd+1rows of the array. The j-th column ofAis stored in the j-th column of the arrayABas follows: ifUPLO = 'U',AB(kd+1+i-j,j) = A(i,j)formax(1,j-kd)<=i<=j; ifUPLO = 'L',AB(1+i-j,j) = A(i,j)forj<=i<=min(n,j+kd). On exit, ifINFO = 0, the factorSfrom the split Cholesky factorizationA = S**H*S. See Further Details.LDABβLDABisINTEGER. The leading dimension of the arrayAB.LDAB >= KD+1.INFOβINFOisINTEGER.= 0: successful exit.< 0: ifINFO = -i, the i-th argument had an illegal value.> 0: ifINFO = i, the factorization could not be completed, because the updated elementa(i,i)was negative; the matrixAis not positive definite.
The INFO > 0 case is the βnope, not positive definiteβ alarm, bestie. Donβt ignore it π¨
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
β¨ Further Details β¨
The band storage scheme is illustrated by the following example, when N = 7, KD = 2:
S = ( s11 s12 s13 )
( s22 s23 s24 )
( s33 s34 )
( s44 )
( s53 s54 s55 )
( s64 s65 s66 )
( s75 s76 s77 )
If UPLO = 'U', the array AB holds:
on entry: on exit:
* * a13 a24 a35 a46 a57 * * s13 s24 s53**H s64**H s75**H
* a12 a23 a34 a45 a56 a67 * s12 s23 s34 s54**H s65**H s76**H
a11 a22 a33 a44 a55 a66 a77 s11 s22 s33 s44 s55 s66 s77
If UPLO = 'L', the array AB holds:
on entry: on exit:
a11 a22 a33 a44 a55 a66 a77 s11 s22 s33 s44 s55 s66 s77
a21 a32 a43 a54 a65 a76 * s12**H s23**H s34**H s54 s65 s76 *
a31 a42 a53 a64 a64 * * s13**H s24**H s53 s64 s75 * *
Array elements marked * are not used by the routine; s12**H denotes conjg(s12); the diagonal elements of S are real.
Definition at line 152 of file zpbstf.f.
Author (auto-gen edition)
Generated automatically by Doxygen for LAPACK from the source code.
That footer, bestie: LAPACK, Version 3.12.0, pbstf(3) β no date printed on the line, and thatβs the whole page. Mwah ππ
π¦ 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