STFTTR(3)

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

πŸ’… STFTTR

okay so bestie, we're in the LAPACK Library Functions Manual today and the file we're stanning is literally /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/stfttr.f β€” yes that's the whole path, i'm not typing it twice, it's giving "my home directory is a novel" πŸ’€


πŸŽ€ NAME

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/stfttr.f

like… that's the file. that's the whole name section. slay.


✨ SYNOPSIS

🌸 Functions/Subroutines

  • subroutine STFTTR (transr, uplo, n, arf, a, lda, info) β€” STFTTR copies a triangular matrix from the rectangular full packed format (TF) to the standard full format (TR).

🫢 Function/Subroutine Documentation

πŸ’– the actual subroutine

subroutine STFTTR (character transr, character uplo, integer n, real,
    dimension( 0: * ) arf, real, dimension( 0: lda-1, 0: * ) a, integer lda,
    integer info)

STFTTR copies a triangular matrix from the rectangular full packed format (TF) to the standard full format (TR). it's a glow-up in matrix form, no cap ✨

πŸ”₯ Purpose:

!>
!> STFTTR copies a triangular matrix A from rectangular full packed
!> format (TF) to standard full format (TR).
!>

like, it takes your triangle out of the squished RFP packaging and unfolds it into a normal, roomy array. unpacking haul vlog energy πŸŽ€


🌈 Parameters

πŸ’« TRANSR

!>          TRANSR is CHARACTER*1
!>          = 'N':  ARF is in Normal format;
!>          = 'T':  ARF is in Transpose format.
!>

so TRANSR tells us which way ARF is facing β€” 'N' = Normal format, 'T' = Transpose format. pick your fighter πŸ¦‹

πŸ¦‹ UPLO

!>          UPLO is CHARACTER*1
!>          = 'U':  A is upper triangular;
!>          = 'L':  A is lower triangular.
!>

'U' means A is upper triangular, 'L' means A is lower triangular. top half or bottom half, choose wisely bestie πŸ’…

⭐ N

!>          N is INTEGER
!>          The order of the matrices ARF and A. N >= 0.
!>

N is an INTEGER: the order of the matrices ARF and A, and N >= 0 is non-negotiable, fr fr.

πŸ“ ARF

!>          ARF is REAL array, dimension (N*(N+1)/2).
!>          On entry, the upper (if UPLO = 'U') or lower (if UPLO = 'L')
!>          matrix A in RFP format. See the  below for more
!>          details.
!>

ARF is a REAL array with dimension (N*(N+1)/2) β€” and yes, that's the input side. on entry it holds the upper (if UPLO = 'U') or lower (if UPLO = 'L') matrix A in RFP format. "See the below for more details" β€” the original literally says that, i'm not fixing it, i'm just reporting πŸ™ˆ (the details are down in Further Details, keep scrolling πŸ‘€)

🧚 A

!>          A is REAL array, dimension (LDA,N)
!>          On exit, the triangular matrix A.  If UPLO = 'U', the
!>          leading N-by-N upper triangular part of the array A contains
!>          the upper triangular matrix, and the strictly lower
!>          triangular part of A is not referenced.  If UPLO = 'L', the
!>          leading N-by-N lower triangular part of the array A contains
!>          the lower triangular matrix, and the strictly upper
!>          triangular part of A is not referenced.
!>

A is a REAL array, dimension (LDA,N), and on exit it's the triangular matrix, periodt. if UPLO = 'U', the leading N-by-N upper triangular part of A holds the upper triangular matrix, and the strictly lower triangular part of A is not referenced (so don't come for it, it's not part of the conversation 😭). if UPLO = 'L', the leading N-by-N lower triangular part of A holds the lower triangular matrix, and the strictly upper triangular part of A is not referenced. symmetrical queen behavior πŸ‘‘

πŸ’œ LDA

!>          LDA is INTEGER
!>          The leading dimension of the array A.  LDA >= max(1,N).
!>

LDA is an INTEGER: the leading dimension of the array A, and LDA >= max(1,N). that's max(1,N) bestie, do not skip the max, the 1 is load-bearing 🫢

πŸ”₯ INFO

!>          INFO is INTEGER
!>          = 0:  successful exit
!>          < 0:  if INFO = -i, the i-th argument had an illegal value
!>

INFO is an INTEGER and it's your little status report: = 0 means successful exit (we love a clean exit πŸŽ‰), < 0 means if INFO = -i, the i-th argument had an illegal value (somebody in the group chat misbehaved, and INFO is naming names πŸ’€).


πŸ‘‘ Author

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

the whole squad is credited, we love to see it 🫢


🌈 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
!>

okay so that block is a LOT but it's literally the whole "how does RFP packing actually look" lore and you're gonna read it because i said so 🧚 the even case first (N = 6), then TRANSR = 'N' vs TRANSR = 'T', then the odd case (N = 5) and the same two flavors. every index, every row, every column β€” it's all up there, i did not touch a single digit, i promise on my life πŸ’–


πŸ’« Definition at line 195 of file stfttr.f.


πŸ‘‘ Author

Generated automatically by Doxygen for LAPACK from the source code.

(yeah that's a second Author section, the original has two, i don't make the rules, i just vibe with them πŸ’…)


signing off 🫢 β€” this page came to you from LAPACK, Version 3.12.0, dated /home/abui...RC/stfttr.f(3), and honestly? iconic. drink some water, go to bed, and remember: LDA >= max(1,N). periodt 🌸✨

πŸ“¦ where this page comes from