tfttp(3)

tfttp(3) πŸ’…βœ¨

Okay bestie, this is the tfttp page from the Library Functions Manual β€” and it's serving triangular matrix, RFP (tf) to packed (tp) realness. We're moving a triangular matrix out of rectangular full packed format (TF) and into standard packed format (TP). Four routines do the exact same glow-up for different data types. No cap. 🫢


✨ NAME ✨

tfttp β€” tfttp: triangular matrix, RFP (tf) to packed (tp)


🌸 SYNOPSIS 🌸

Functions

  • 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).
  • subroutine dtfttp (transr, uplo, n, arf, ap, info) β€” DTFTTP copies a triangular matrix from the rectangular full packed format (TF) to the standard packed format (TP).
  • subroutine stfttp (transr, uplo, n, arf, ap, info) β€” STFTTP copies a triangular matrix from the rectangular full packed format (TF) to the standard packed format (TP).
  • subroutine ztfttp (transr, uplo, n, arf, ap, info) β€” ZTFTTP copies a triangular matrix from the rectangular full packed format (TF) to the standard packed format (TP).

πŸ” Detailed Description πŸ”

This is the intro zone, bestie β€” the actual function tea is right below. πŸ’–


πŸ“š Function Documentation πŸ“š

subroutine ctfttp

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).

Purpose

The whole point: CTFTTP copies a triangular matrix A from rectangular full packed format (TF) to standard packed format (TP).

Parameters

  • TRANSR β€” TRANSR is CHARACTER*1.
    • = '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.
  • N β€” N is INTEGER. The order of the matrix A. N >= 0.
  • 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.
  • 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.
  • INFO β€” INFO is INTEGER.
    • = 0: successful exit
    • < 0: if INFO = -i, the i-th argument had an illegal value

Author

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

Further Details

First up: standard packed format when N is even. Example time: 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

Now let TRANSR = 'N'. RFP holds AP like this:

  • 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. 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: 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. 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

Definition at line 207 of file ctfttp.f.


subroutine dtfttp

subroutine dtfttp (character transr, character uplo, integer n, double precision, dimension( 0: * ) arf, double precision, dimension( 0: * ) ap, integer info)

DTFTTP copies a triangular matrix from the rectangular full packed format (TF) to the standard packed format (TP).

Purpose

DTFTTP copies a triangular matrix A from rectangular full packed format (TF) to standard packed format (TP).

Parameters

  • TRANSR β€” TRANSR is CHARACTER*1.
    • = 'N': ARF is in Normal format;
    • = 'T': ARF is in Transpose format;
  • UPLO β€” UPLO is CHARACTER*1.
    • = 'U': A is upper triangular;
    • = 'L': A is lower triangular.
  • N β€” N is INTEGER. The order of the matrix A. N >= 0.
  • ARF β€” ARF is DOUBLE PRECISION 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.
  • AP β€” AP is DOUBLE PRECISION 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.
  • INFO β€” INFO is INTEGER.
    • = 0: successful exit
    • < 0: if INFO = -i, the i-th argument had an illegal value

Author

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

Further Details:

okay so before we even touch the next subroutine, we gotta actually look at the RFP (Rectangular Full Packed) format with our own two eyes, because ngl it's giving geometry class but make it fashion πŸ’…βœ¨

the even-N situation, bestie (N = 6) πŸŽ€

so first we consider RFP format when N is even. Example time: 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, and I need you to lock in πŸ”’:

  • 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 the 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 the transpose of the last three columns of AP lower.

That 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 β€” plot twist β€” let TRANSR = 'T'. RFP A in both UPLO cases is just the transpose of RFP A above. So one therefore gets, and yes it's iconic:

         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

and now the odd-N one πŸ¦‹ (N = 5)

okay so then we consider RFP format when N is odd. Example: 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, no cap:

  • 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 the 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 the transpose of the last two columns of AP lower.

That 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

subroutine stfttp (character transr, character uplo, integer n, real, dimension( 0: * ) arf, real, dimension( 0: * ) ap, integer info)

subroutine stfttp (character transr, character uplo, integer n, real,
    dimension( 0: * ) arf, real, dimension( 0: * ) ap, integer info)

STFTTP copies a triangular matrix from the rectangular full packed format (TF) to the standard packed format (TP). Basically a glow-up from one storage format to another, and she ate πŸ”₯

Purpose:

STFTTP copies a triangular matrix A from rectangular full packed format (TF) to standard packed format (TP). That's it, that's the whole mission, periodt πŸ’…

Parameters

  • TRANSR β€” it's a CHARACTER*1:
    • = 'N': ARF is in Normal format;
    • = 'T': ARF is in Transpose format;
  • UPLO β€” also a CHARACTER*1:
    • = 'U': A is upper triangular;
    • = 'L': A is lower triangular.
  • N β€” INTEGER, the order of the matrix A. Constraint bestie: N >= 0.
  • ARF β€” REAL 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. πŸ‘€
  • AP β€” REAL 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.
  • INFO β€” INTEGER:
    • = 0: successful exit 🌈
    • < 0: if INFO = -i, the i-th argument had an illegal value πŸ’€

Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Further Details:

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 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 the 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 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 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 the 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 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 186 of file stfttp.f.


subroutine ztfttp (character transr, character uplo, integer n, complex*16, dimension( 0: * ) arf, complex*16, dimension( 0: * ) ap, integer info)

subroutine ztfttp (character transr, character uplo, integer n, complex*16,
    dimension( 0: * ) arf, complex*16, dimension( 0: * ) ap, integer info)

ZTFTTP</purl> β€” okay fixing that, ZTFTTP copies a triangular matrix from the rectangular full packed format (TF) to the standard packed format (TP). Same errand as stfttp but she's complex now, main character energy πŸ‘‘

Purpose:

ZTFTTP copies a triangular matrix A from rectangular full packed format (TF) to standard packed format (TP).

Parameters

  • TRANSR β€” CHARACTER*1, and note bestie, this one's different from the real version:
    • = 'N': ARF is in Normal format;
    • = 'C': ARF is in Conjugate-transpose format;
  • UPLO β€” CHARACTER*1:
    • = 'U': A is upper triangular;
    • = 'L': A is lower triangular.
  • N β€” INTEGER, the order of the matrix A. N >= 0.
  • ARF β€” COMPLEX*16 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.
  • AP β€” COMPLEX*16 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.
  • INFO is INTEGER β€” the vibe check at the end, and she never lies πŸ’…
    • = 0: successful exit β€” we ate, zero crumbs, glowing skin ✨
    • < 0: if INFO = -i, the i-th argument had an illegal value β€” so like, argument number i showed up to the function in the wrong outfit 😭 bestie go fix it

πŸ‘‘ Author

Okay so this whole thing was a group project and honestly they carried:

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

Four institutions, one matrix format, no drama. Iconic behavior fr fr 🫢


πŸ” Further Details

Grab a snack, bestie, this is the part where the packed format gets explained with, like, actual diagrams. It's giving math lecture but make it cute. πŸ“

So first we're considering Standard Packed Format when N is even. Example time: 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

Now 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'. Look at her go πŸ¦‹

         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 β€” and yes the little --s moved, she's flexible like that πŸ’…

           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 we consider Standard Packed Format when N is odd. Example where N = 5. Same energy, different number πŸ”₯

     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'. Periodt. ✨

         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 207 of file ztfttp.f. πŸŽ€ (yes she lives in a .f file, we respect the Fortran queen)


πŸŽ€ Author (the auto-generated one)

Generated automatically by Doxygen for LAPACK from the source code. Not a human, just a little robot doing its best πŸ€–πŸ’–


And that's the whole page, bestie! You read all three parts, you understood the trapezoids, you survived the -- notation β€” genuinely main character energy. πŸ”₯πŸ‘‘

Signed, sealed, delivered: this was LAPACK, Version 3.12.0, page tfttp(3). Go forth and pack your matrices responsibly πŸ¦‹πŸŒΈπŸ’œ

πŸ“¦ where this page comes from