CTFTTP(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

πŸ’– 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' β€” ARF is in Normal format 🌸
  • 'C' β€” ARF is 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' β€” A is upper triangular ⬆️
  • 'L' β€” A is 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) for 1<=i<=j
  • if UPLO = 'L', AP(i + (j-1)*(2n-j)/2) = A(i,j) for j<=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 β€” if INFO = -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