pftri(3)
π pftri(3) π
okay so you're reading pftri(3) from the Library Functions Manual, bestie, and it's literally the "triangular inverse" page β four whole routines that undo a Cholesky factorization. buckle up π
β¨ NAME β¨
pftri β pftri: triangular inverse
no cap, that's the whole name section. the manpage authors were feeling minimal that day π«Ά
π¦ SYNOPSIS π¦
πΈ Functions
four flavors of the exact same vibe, one per precision, and they all take the same five arguments:
subroutine cpftri (transr, uplo, n, a, info)
CPFTRI
subroutine dpftri (transr, uplo, n, a, info)
DPFTRI
subroutine spftri (transr, uplo, n, a, info)
SPFTRI
subroutine zpftri (transr, uplo, n, a, info)
ZPFTRI
cpftriβ the complex one πdpftriβ the double precision onespftriβ the single precision onezpftriβ the double complex one
π Detailed Description π
okay so this section is literally empty in the original. like, nothing. blank. the icon that leaves the group chat on read π the actual content is all down in Function Documentation, so keep scrolling bestie.
π FUNCTION DOCUMENTATION π
π subroutine cpftri π
subroutine cpftri (character transr, character uplo, integer n, complex,
dimension( 0: * ) a, integer info)
CPFTRI
β Purpose
CPFTRI computes the inverse of a complex Hermitian positive definite matrix A using the Cholesky factorization A = U**H*U or A = L*L**H computed by CPFTRF. β¨
so like, CPFTRF does the factoring, and this one flips it inside out. iconic teamwork π«Ά
π§ Parameters
TRANSRβTRANSRisCHARACTER*1= 'N': The Normal TRANSR of RFP A is stored;= 'C': The Conjugate-transpose TRANSR of RFP A is stored.
UPLOβUPLOisCHARACTER*1= 'U': Upper triangle of A is stored;= 'L': Lower triangle of A is stored.
NβNisINTEGER- The order of the matrix
A.N >= 0.
- The order of the matrix
AβAisCOMPLEXarray, dimension( N*(N+1)/2 );- On entry, the Hermitian matrix
Ain RFP format. RFP format is described byTRANSR,UPLO, andNas follows: IfTRANSR = 'N'then RFP A is(0:N,0:k-1)whenNis even;k=N/2. RFP A is(0:N-1,0:k)whenNis odd;k=N/2. IFTRANSR = 'C'then RFP is the Conjugate-transpose of RFP A as defined whenTRANSR = 'N'. The contents of RFP A are defined byUPLOas follows: IfUPLO = 'U'the RFP A contains thentelements of upper packed A. IfUPLO = 'L'the RFP A contains the elements of lower packed A. The LDA of RFP A is(N+1)/2whenTRANSR = 'C'. WhenTRANSRis'N'the LDA isN+1whenNis even andNis odd. See the Note below for more details. - On exit, the Hermitian inverse of the original matrix, in the same storage format.
- On entry, the Hermitian matrix
INFOβINFOisINTEGER= 0: successful exit< 0: ifINFO = -i, the i-th argument had an illegal value> 0: ifINFO = i, the(i,i)element of the factorUorLis zero, and the inverse could not be computed.
β οΈ heads up: ifINFO > 0you literally do not have an inverse. the factorization hit a zero on the diagonal and it's giving "nope". checkINFOfr fr π
π Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
π¦ Further Details:
We first consider Standard Packed Format when N is even. We give an example where N = 6.
AP is Upper AP is Lower
00 01 02 03 04 05 00
11 12 13 14 15 10 11
22 23 24 25 20 21 22
33 34 35 30 31 32 33
44 45 40 41 42 43 44
55 50 51 52 53 54 55
Let TRANSR = 'N'. RFP holds AP as follows: For UPLO = 'U' the upper trapezoid A(0:5,0:2) consists of the last three columns of AP upper. The lower triangle A(4:6,0:2) consists of conjugate-transpose of the first three columns of AP upper. For UPLO = 'L' the lower trapezoid A(1:6,0:2) consists of the first three columns of AP lower. The upper triangle A(0:2,0:2) consists of conjugate-transpose of the last three columns of AP lower. To denote conjugate we place -- above the element. This covers the case N even and TRANSR = 'N'.
RFP A RFP A
-- -- --
03 04 05 33 43 53
-- --
13 14 15 00 44 54
--
23 24 25 10 11 55
33 34 35 20 21 22
--
00 44 45 30 31 32
-- --
01 11 55 40 41 42
-- -- --
02 12 22 50 51 52
Now let TRANSR = 'C'. RFP A in both UPLO cases is just the conjugate-transpose of RFP A above. One therefore gets:
RFP A RFP A
-- -- -- -- -- -- -- -- -- --
03 13 23 33 00 01 02 33 00 10 20 30 40 50
-- -- -- -- -- -- -- -- -- --
04 14 24 34 44 11 12 43 44 11 21 31 41 51
-- -- -- -- -- -- -- -- -- --
05 15 25 35 45 55 22 53 54 55 22 32 42 52
We next consider Standard Packed Format when N is odd. We give an example where N = 5.
AP is Upper AP is Lower
00 01 02 03 04 00
11 12 13 14 10 11
22 23 24 20 21 22
33 34 30 31 32 33
44 40 41 42 43 44
Let TRANSR = 'N'. RFP holds AP as follows: For UPLO = 'U' the upper trapezoid A(0:4,0:2) consists of the last three columns of AP upper. The lower triangle A(3:4,0:1) consists of conjugate-transpose of the first two columns of AP upper. For UPLO = 'L' the lower trapezoid A(0:4,0:2) consists of the first three columns of AP lower. The upper triangle A(0:1,1:2) consists of conjugate-transpose of the last two columns of AP lower. To denote conjugate we place -- above the element. This covers the case N odd and TRANSR = 'N'.
RFP A RFP A
-- --
02 03 04 00 33 43
--
12 13 14 10 11 44
22 23 24 20 21 22
--
00 33 34 30 31 32
-- --
01 11 44 40 41 42
Now let TRANSR = 'C'. RFP A in both UPLO cases is just the conjugate-transpose of RFP A above. One therefore gets:
RFP A RFP A
-- -- -- -- -- -- -- -- --
02 12 22 00 01 00 10 20 30 40 50
-- -- -- -- -- -- -- -- --
03 13 23 33 11 33 11 21 31 41 51
-- -- -- -- -- -- -- -- --
04 14 24 34 44 43 44 22 32 42 52
Definition at line 211 of file cpftri.f.
π subroutine dpftri π
subroutine dpftri (character transr, character uplo, integer n, double
precision, dimension( 0: * ) a, integer info)
DPFTRI
β Purpose
DPFTRI computes the inverse of a (real) symmetric positive definite matrix A using the Cholesky factorization A = U**T*U or A = L*L**T computed by DPFTRF. β¨
π§ Parameters
TRANSRβTRANSRisCHARACTER*1= 'N': The Normal TRANSR of RFP A is stored;= 'T': The Transpose TRANSR of RFP A is stored.
UPLOβUPLOisCHARACTER*1= 'U': Upper triangle of A is stored;= 'L': Lower triangle of A is stored.
NβNisINTEGER- The order of the matrix
A.N >= 0.
- The order of the matrix
AβAisDOUBLE PRECISIONarray, dimension( N*(N+1)/2 )- On entry, the symmetric matrix
Ain RFP format. RFP format is described byTRANSR,UPLO, andNas follows: IfTRANSR = 'N'then RFP A is(0:N,0:k-1)whenNis even;k=N/2. RFP A is(0:N-1,0:k)whenNis odd;k=N/2. IFTRANSR = 'T'then RFP is the transpose of RFP A as defined whenTRANSR = 'N'. The contents of RFP A are defined byUPLOas follows: IfUPLO = 'U'the RFP A contains thentelements of upper packed A. IfUPLO = 'L'the RFP A contains the elements of lower packed A. The LDA of RFP A is(N+1)/2whenTRANSR = 'T'. WhenTRANSRis'N'the LDA isN+1whenNis even andNis odd. See the Note below for more details. - On exit, the symmetric inverse of the original matrix, in the same storage format.
- On entry, the symmetric matrix
INFOβINFOisINTEGER= 0: successful exit< 0: ifINFO = -i, the i-th argument had an illegal value> 0: ifINFO = i, the(i,i)element of the factorUorLis zero, and the inverse could not be computed.
β οΈ same deal as before but for the real ones:INFO > 0means a zero landed on the(i,i)ofUorLand the inverse could not be computed. not slay. π
π Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
π¦ Further Details:
okay so the further details for dpftri start here and keep going β that's literally where this part of the page runs out, so hold that thought π
okay so we're still in dpftri's Further Details and it's literally the whole RFP lore. Buckle up, bestie, because this is giving "matrix storage but make it fashion" π
. No cap, every index matters.
First up: Rectangular Full Packed (RFP) Format when N is even. The example is N = 6.
AP is Upper AP is Lower
00 01 02 03 04 05 00
11 12 13 14 15 10 11
22 23 24 25 20 21 22
33 34 35 30 31 32 33
44 45 40 41 42 43 44
55 50 51 52 53 54 55
Let TRANSR = 'N'. RFP holds AP like this:
- For
UPLO = 'U'the upper trapezoidA(0:5,0:2)consists of the last three columns of AP upper. The lower triangleA(4:6,0:2)consists of the transpose of the first three columns of AP upper. - For
UPLO = 'L'the lower trapezoidA(1:6,0:2)consists of the first three columns of AP lower. The upper triangleA(0:2,0:2)consists of the transpose of the last three columns of AP lower.
This covers the case N even and TRANSR = 'N'.
RFP A RFP A
03 04 05 33 43 53
13 14 15 00 44 54
23 24 25 10 11 55
33 34 35 20 21 22
00 44 45 30 31 32
01 11 55 40 41 42
02 12 22 50 51 52
Now let TRANSR = 'T'. RFP A in both UPLO cases is just the transpose of RFP A above. One therefore gets:
RFP A RFP A
03 13 23 33 00 01 02 33 00 10 20 30 40 50
04 14 24 34 44 11 12 43 44 11 21 31 41 51
05 15 25 35 45 55 22 53 54 55 22 32 42 52
Then we consider RFP Format when N is odd. The example is N = 5.
AP is Upper AP is Lower
00 01 02 03 04 00
11 12 13 14 10 11
22 23 24 20 21 22
33 34 30 31 32 33
44 40 41 42 43 44
Let TRANSR = 'N'. RFP holds AP as follows:
- For
UPLO = 'U'the upper trapezoidA(0:4,0:2)consists of the last three columns of AP upper. The lower triangleA(3:4,0:1)consists of the transpose of the first two columns of AP upper. - For
UPLO = 'L'the lower trapezoidA(0:4,0:2)consists of the first three columns of AP lower. The upper triangleA(0:1,1:2)consists of the transpose of the last two columns of AP lower.
This covers the case N odd and TRANSR = 'N'.
RFP A RFP A
02 03 04 00 33 43
12 13 14 10 11 44
22 23 24 20 21 22
00 33 34 30 31 32
01 11 44 40 41 42
Now let TRANSR = 'T'. RFP A in both UPLO cases is just the transpose of RFP A above. One therefore gets:
RFP A RFP A
02 12 22 00 01 00 10 20 30 40 50
03 13 23 33 11 33 11 21 31 41 51
04 14 24 34 44 43 44 22 32 42 52
Definition at line 190 of file dpftri.f.
β¨ spftri β the single-precision sister
subroutine spftri (character transr, character uplo, integer n, real,
dimension( 0: * ) a, integer info)
The name is SPFTRI. She's the real single-precision version of the inverse-computing situation.
Purpose:
SPFTRI computes the inverse of a real (symmetric) positive definite matrix A using the Cholesky factorization A = U**T*U or A = L*L**T computed by SPFTRF. Obsessed, honestly.
π§Ύ Parameters
TRANSRβCHARACTER*1= 'N': The Normal TRANSR of RFP A is stored;= 'T': The Transpose TRANSR of RFP A is stored.
UPLOβCHARACTER*1= 'U': Upper triangle of A is stored;= 'L': Lower triangle of A is stored.
NβINTEGER- The order of the matrix A.
N >= 0.
- The order of the matrix A.
AβREALarray, dimension( N*(N+1)/2 )- On entry, the symmetric matrix A in RFP format. RFP format is described by
TRANSR,UPLO, andNas follows: IfTRANSR = 'N'then RFP A is(0:N,0:k-1)whenNis even;k=N/2. RFP A is(0:N-1,0:k)whenNis odd;k=N/2. IFTRANSR = 'T'then RFP is the transpose of RFP A as defined whenTRANSR = 'N'. The contents of RFP A are defined byUPLOas follows: IfUPLO = 'U'the RFP A contains thentelements of upper packed A. IfUPLO = 'L'the RFP A contains the elements of lower packed A. The LDA of RFP A is(N+1)/2whenTRANSR = 'T'. WhenTRANSRis'N'the LDA isN+1whenNis even andNis odd. See the Note below for more details. - On exit, the symmetric inverse of the original matrix, in the same storage format.
- On entry, the symmetric matrix A in RFP format. RFP format is described by
INFOβINTEGER= 0: successful exit< 0: ifINFO = -i, thei-th argument had an illegal value> 0: ifINFO = i, the(i,i)element of the factor U or L is zero, and the inverse could not be computed.
Author:
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
π« Further Details
yes, this is the exact same RFP dissertation as above β the manpage repeats it for spftri, and we do not skip. periodt.
We first consider Rectangular Full Packed (RFP) Format when N is even. We give an example where N = 6.
AP is Upper AP is Lower
00 01 02 03 04 05 00
11 12 13 14 15 10 11
22 23 24 25 20 21 22
33 34 35 30 31 32 33
44 45 40 41 42 43 44
55 50 51 52 53 54 55
Let TRANSR = 'N'. RFP holds AP as follows:
- For
UPLO = 'U'the upper trapezoidA(0:5,0:2)consists of the last three columns of AP upper. The lower triangleA(4:6,0:2)consists of the transpose of the first three columns of AP upper. - For
UPLO = 'L'the lower trapezoidA(1:6,0:2)consists of the first three columns of AP lower. The upper triangleA(0:2,0:2)consists of the transpose of the last three columns of AP lower.
This covers the case N even and TRANSR = 'N'.
RFP A RFP A
03 04 05 33 43 53
13 14 15 00 44 54
23 24 25 10 11 55
33 34 35 20 21 22
00 44 45 30 31 32
01 11 55 40 41 42
02 12 22 50 51 52
Now let TRANSR = 'T'. RFP A in both UPLO cases is just the transpose of RFP A above. One therefore gets:
RFP A RFP A
03 13 23 33 00 01 02 33 00 10 20 30 40 50
04 14 24 34 44 11 12 43 44 11 21 31 41 51
05 15 25 35 45 55 22 53 54 55 22 32 42 52
We then consider Rectangular Full Packed (RFP) Format when N is odd. We give an example where N = 5.
AP is Upper AP is Lower
00 01 02 03 04 00
11 12 13 14 10 11
22 23 24 20 21 22
33 34 30 31 32 33
44 40 41 42 43 44
Let TRANSR = 'N'. RFP holds AP as follows:
- For
UPLO = 'U'the upper trapezoidA(0:4,0:2)consists of the last three columns of AP upper. The lower triangleA(3:4,0:1)consists of the transpose of the first two columns of AP upper. - For
UPLO = 'L'the lower trapezoidA(0:4,0:2)consists of the first three columns of AP lower. The upper triangleA(0:1,1:2)consists of the transpose of the last two columns of AP lower.
This covers the case N odd and TRANSR = 'N'.
RFP A RFP A
02 03 04 00 33 43
12 13 14 10 11 44
22 23 24 20 21 22
00 33 34 30 31 32
01 11 44 40 41 42
Now let TRANSR = 'T'. RFP A in both UPLO cases is just the transpose of RFP A above. One therefore gets:
RFP A RFP A
02 12 22 00 01 00 10 20 30 40 50
03 13 23 33 11 33 11 21 31 41 51
04 14 24 34 44 43 44 22 32 42 52
Definition at line 190 of file spftri.f.
π¦ zpftri β complex Hermitian edition
subroutine zpftri (character transr, character uplo, integer n, complex*16,
dimension( 0: * ) a, integer info)
The name is ZPFTRI. She's the complex double-precision girlie, and she's Hermitian, so adjust your wig accordingly.
Purpose:
ZPFTRI computes the inverse of a complex Hermitian positive definite matrix A using the Cholesky factorization A = U**H*U or A = L*L**H computed by ZPFTRF. The **H is giving conjugate-transpose realness, iykyk.
π§Ύ Parameters
TRANSRβCHARACTER*1= 'N': The Normal TRANSR of RFP A is stored;= 'C': The Conjugate-transpose TRANSR of RFP A is stored.
UPLOβCHARACTER*1= 'U': Upper triangle of A is stored;= 'L': Lower triangle of A is stored.
NβINTEGER- The order of the matrix A.
N >= 0.
- The order of the matrix A.
A
and now for the A parameter for ZPFTRI, which is exactly where the page cuts off β hold that thought, bestie, because part 3 is picking it up right here. π«Ά
okay so A is a COMPLEX*16 array, dimension ( N*(N+1)/2 ) π
On entry, itβs the Hermitian matrix A in RFP format. RFP format is described by TRANSR, UPLO, and N like this: if TRANSR = 'N' then RFP A is (0:N,0:k-1) when N is even; k=N/2. RFP A is (0:N-1,0:k) when N is odd; k=N/2. IF TRANSR = 'C' then RFP is the Conjugate-transpose of RFP A as defined when TRANSR = 'N'. The contents of RFP A are defined by UPLO as follows: If UPLO = 'U' the RFP A contains the nt elements of upper packed A. If UPLO = 'L' the RFP A contains the elements of lower packed A. The LDA of RFP A is (N+1)/2 when TRANSR = 'C'. When TRANSR is 'N' the LDA is N+1 when N is even and N is odd. See the Note below for more details π
On exit, itβs the Hermitian inverse of the original matrix, in the same storage format. slay β¨
INFO π
INFO is INTEGER:
= 0: successful exit π< 0: ifINFO = -i, thei-th argument had an illegal value π¬> 0: ifINFO = i, the(i,i)element of the factorUorLis zero, and the inverse could not be computed π
Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Further Details πΈ
okay so letβs get into the β¨further detailsβ¨ because this storage format is a whole vibe and you deserve to understand it π
First up: Standard Packed Format when N is even. Example with N = 6:
AP is Upper AP is Lower
00 01 02 03 04 05 00
11 12 13 14 15 10 11
22 23 24 25 20 21 22
33 34 35 30 31 32 33
44 45 40 41 42 43 44
55 50 51 52 53 54 55
When TRANSR = 'N', RFP holds AP like this:
- For
UPLO = 'U', the upper trapezoidA(0:5,0:2)is literally the last three columns of AP upper. The lower triangleA(4:6,0:2)is the conjugate-transpose of the first three columns of AP upper. - For
UPLO = 'L', the lower trapezoidA(1:6,0:2)is the first three columns of AP lower. The upper triangleA(0:2,0:2)is the conjugate-transpose of the last three columns of AP lower.
To show conjugate we put -- above the element. This covers the case N even and TRANSR = 'N':
RFP A RFP A
-- -- --
03 04 05 33 43 53
-- --
13 14 15 00 44 54
--
23 24 25 10 11 55
33 34 35 20 21 22
--
00 44 45 30 31 32
-- --
01 11 55 40 41 42
-- -- --
02 12 22 50 51 52
Now let TRANSR = 'C'. RFP A in both UPLO cases is just the conjugate-transpose of RFP A above. So you get:
RFP A RFP A
-- -- -- -- -- -- -- -- -- --
03 13 23 33 00 01 02 33 00 10 20 30 40 50
-- -- -- -- -- -- -- -- -- --
04 14 24 34 44 11 12 43 44 11 21 31 41 51
-- -- -- -- -- -- -- -- -- --
05 15 25 35 45 55 22 53 54 55 22 32 42 52
Next: Standard Packed Format when N is odd. Example with N = 5:
AP is Upper AP is Lower
00 01 02 03 04 00
11 12 13 14 10 11
22 23 24 20 21 22
33 34 30 31 32 33
44 40 41 42 43 44
When TRANSR = 'N', RFP holds AP like this:
- For
UPLO = 'U', the upper trapezoidA(0:4,0:2)is the last three columns of AP upper. The lower triangleA(3:4,0:1)is the conjugate-transpose of the first two columns of AP upper. - For
UPLO = 'L', the lower trapezoidA(0:4,0:2)is the first three columns of AP lower. The upper triangleA(0:1,1:2)is the conjugate-transpose of the last two columns of AP lower.
To show conjugate we put -- above the element. This covers the case N odd and TRANSR = 'N':
RFP A RFP A
-- --
02 03 04 00 33 43
--
12 13 14 10 11 44
22 23 24 20 21 22
--
00 33 34 30 31 32
-- --
01 11 44 40 41 42
Now let TRANSR = 'C'. RFP A in both UPLO cases is just the conjugate-transpose of RFP A above. So you get:
RFP A RFP A
-- -- -- -- -- -- -- -- --
02 12 22 00 01 00 10 20 30 40 50
-- -- -- -- -- -- -- -- --
03 13 23 33 11 33 11 21 31 41 51
-- -- -- -- -- -- -- -- --
04 14 24 34 44 43 44 22 32 42 52
and thatβs the whole page, bestie! this is from LAPACK version 3.12.0, page pftri(3), so you know itβs official β¨π
π¦ 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