ZPPTRF(3)
π¦ ZPPTRF(3) β the Cholesky glow-up for packed Hermitian matrices π
okay so this page lives in the Library Functions Manual, and the file it's documenting is literally:
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/zpptrf.f
yes bestie, that's the whole path, we're not shortening it, it's iconic in its own chaotic way π
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine ZPPTRF (uplo, n, ap, info)
ZPPTRF β that's her, that's the whole name π
πΈ Function/Subroutine Documentation πΈ
subroutine ZPPTRF (character uplo, integer n, complex*16, dimension( * ) ap,
integer info)
ZPPTRF. again. she contains multitudes π
π«Ά Purpose:
!>
!> ZPPTRF computes the Cholesky factorization of a complex Hermitian
!> positive definite matrix A stored in packed format.
!>
!> The factorization has the form
!> A = U**H * U, if UPLO = 'U', or
!> A = L * L**H, if UPLO = 'L',
!> where U is an upper triangular matrix and L is lower triangular.
!>
so basically: complex Hermitian, positive definite, packed format, and she factorizes it Cholesky-style. the two forms are A = U**H * U when UPLO = 'U', and A = L * L**H when UPLO = 'L' β U upper triangular, L lower triangular. no cap, that's the whole vibe check π₯
π§ Parameters
UPLO
!> UPLO is CHARACTER*1
!> = 'U': Upper triangle of A is stored;
!> = 'L': Lower triangle of A is stored.
!>
'U'β upper triangle ofAis the one being stored π'L'β lower triangle ofAis the one being stored πΈ
N
!> N is INTEGER
!> The order of the matrix A. N >= 0.
!>
it's the order of matrix A, and N >= 0 β the bar is on the floor but we respect it β
AP
!> AP is COMPLEX*16 array, dimension (N*(N+1)/2)
!> On entry, the upper or lower triangle of the Hermitian matrix
!> A, packed columnwise in a linear array. The j-th column of A
!> is stored in the array AP as follows:
!> if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;
!> if UPLO = 'L', AP(i + (j-1)*(2n-j)/2) = A(i,j) for j<=i<=n.
!> See below for further details.
!>
!> On exit, if INFO = 0, the triangular factor U or L from the
!> Cholesky factorization A = U**H*U or A = L*L**H, in the same
!> storage format as A.
!>
so AP is a COMPLEX*16 array, dimension (N*(N+1)/2), and here's the thing bestie β the indexing is doing the most:
- on entry it's the upper or lower triangle of the Hermitian matrix
A, packed columnwise in a linear array - the j-th column of
Alives inAPlike this:- if
UPLO = 'U'βAP(i + (j-1)*j/2) = A(i,j)for1<=i<=j - if
UPLO = 'L'βAP(i + (j-1)*(2n-j)/2) = A(i,j)forj<=i<=n
- if
- and yeah, "see below for further details" β we do go below, don't worry π«Ά
- on exit, if
INFO = 0, you get the triangular factorUorLfrom the Cholesky factorizationA = U**H*UorA = L*L**H, in the same storage format asAβ she keeps her silhouette π
INFO
!> INFO is INTEGER
!> = 0: successful exit
!> < 0: if INFO = -i, the i-th argument had an illegal value
!> > 0: if INFO = i, the leading principal minor of order i
!> is not positive, and the factorization could not be
!> completed.
!>
= 0β successful exit, we ate, nobody's crying π< 0βINFO = -imeans the i-th argument had an illegal value (so somebody handed her bad input, rude)> 0βINFO = imeans the leading principal minor of order i is not positive, and the factorization could not be completed β this is the "not positive definite" jumpscare π
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
the whole squad, credited, periodt π
π Further Details:
!>
!> The packed storage scheme is illustrated by the following example
!> when N = 4, UPLO = 'U':
!>
!> Two-dimensional storage of the Hermitian matrix A:
!>
!> a11 a12 a13 a14
!> a22 a23 a24
!> a33 a34 (aij = conjg(aji))
!> a44
!>
!> Packed storage of the upper triangle of A:
!>
!> AP = [ a11, a12, a22, a13, a23, a33, a14, a24, a34, a44 ]
!>
okay this is the part that makes packed storage click, fr fr. N = 4, UPLO = 'U':
the 2-D storage of the Hermitian matrix A looks like a little staircase because the lower half is just the conjugate β (aij = conjg(aji)) β so why store it twice?? we don't π
and then packed storage of the upper triangle is literally just:
AP = [ a11, a12, a22, a13, a23, a33, a14, a24, a34, a44 ]
columns, squished, boujeely efficient. she's giving "no wasted storage" π¦
π Definition at line 118 of file zpptrf.f.
π Author (of this whole rendering situation)
Generated automatically by Doxygen for LAPACK from the source code. not a human, just vibes and a parser π€β¨
π reminder bestie: every number, index, and INFO code above is exactly as the source says it. do not come for the math, the math did nothing wrong.
and that's the page!! π it's from LAPACK, Version 3.12.0, and the file it came from is /home/abui...RC/zpptrf.f(3) β mwah, thank you for reading, go factorize something positive definite πππ
π¦ 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