CTFTTP(3)
π CTFTTP π β a.k.a. the file at /home/abui...RC/ctfttp.f(3)
okay so bestie, this whole page lives in the Library Functions Manual, and it's literally all about one lil subroutine in ctfttp.f. no cap, that's it. let's get into it π«Ά
πΈ NAME πΈ
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/ctfttp.f
yes that's the whole name section. it's giving "my full government name" energy π iykyk.
β¨ SYNOPSIS β¨
π§ Functions/Subroutines
subroutine CTFTTP (transr, uplo, n, arf, ap, info)
CTFTTP copies a triangular matrix from the rectangular full packed format (TF) to the standard packed format (TP). that's the whole vibe, honestly β glow-up your triangle from one packing to a different packing π₯
π Function/Subroutine Documentation π
subroutine CTFTTP (character transr, character uplo, integer n, complex,
dimension( 0: * ) arf, complex, dimension( 0: * ) ap, integer info)
CTFTTP copies a triangular matrix from the rectangular full packed format (TF) to the standard packed format (TP). (yes, same sentence, bestie, the docs said it twice so we're saying it twice π
)
π Purpose
!>
!> CTFTTP copies a triangular matrix A from rectangular full packed
!> format (TF) to standard packed format (TP).
!>
so basically: matrix A walks in wearing TF, walks out wearing TP. a whole wardrobe change. iconic π
π¦ Parameters
π TRANSR
!> TRANSR is CHARACTER*1
!> = 'N': ARF is in Normal format;
!> = 'C': ARF is in Conjugate-transpose format;
!>
it's a CHARACTER*1, so one whole character, and it picks the format of ARF:
'N'βARFis in Normal format πΈ'C'βARFis in Conjugate-transpose format πΈ
π UPLO
!> UPLO is CHARACTER*1
!> = 'U': A is upper triangular;
!> = 'L': A is lower triangular.
!>
also CHARACTER*1. pick a side:
'U'βAis upper triangular β¬οΈ'L'βAis lower triangular β¬οΈ
π§ N
!> N is INTEGER
!> The order of the matrix A. N >= 0.
!>
N is INTEGER, it's the order of the matrix A, and it must satisfy N >= 0. no negative orders, that's not the move π
π ARF
!> ARF is COMPLEX array, dimension ( N*(N+1)/2 ),
!> On entry, the upper or lower triangular matrix A stored in
!> RFP format. For a further discussion see Notes below.
!>
ARF is a COMPLEX array with dimension ( N*(N+1)/2 ). On entry, it holds the upper or lower triangular matrix A stored in RFP format. for a further discussion, see Notes below π (it's the Further Details section, bestie, keep scrolling)
π
AP
!> AP is COMPLEX array, dimension ( N*(N+1)/2 ),
!> On exit, the upper or lower triangular 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.
!>
AP is a COMPLEX array with dimension ( N*(N+1)/2 ) too. On exit, it's the upper or lower triangular matrix A, packed columnwise in a linear array π€ the indexing is the main character here:
- 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
write those down, they will 100% show up on the exam π«
β INFO
!> INFO is INTEGER
!> = 0: successful exit
!> < 0: if INFO = -i, the i-th argument had an illegal value
!>
INFO is INTEGER and it's the vibe check on your whole call:
= 0β successful exit, we ate, no notes π< 0β ifINFO = -i, the i-th argument had an illegal value π something you passed was not it
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
four whole institutions co-signed this. the group project actually got finished, which is honestly aspirational π«Ά
π₯ Further Details:
okay bestie this is the part with the diagrams and they're genuinely kind of gorgeous, so I'm pasting the whole thing exactly β do not skip it, it's lowkey the best part π
!>
!> 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
!>
the -- marks are the conjugate indicators, btw. tiny little hats. adorable. π©
π«Ά Definition at line 207 of file ctfttp.f π
line 207, bestie. go look, it's right there β¨
π Author π
Generated automatically by Doxygen for LAPACK from the source code. (so nobody hand-wrote this, a robot did, and honestly? slay π€π )
and that's the whole page!! no cap, you now know everything CTFTTP has ever wanted to tell you. go forth and pack your triangles correctly π¦
LAPACK, Version 3.12.0 β and the file itself is /home/abui...RC/ctfttp.f(3). mwah, bye bestie ππβ¨
π¦ 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