tfsm(3)

๐Ÿ’… tfsm(3) ๐Ÿ’…

okay bestie, this is the manual page for tfsm(3) โ€” literally tfsm: triangular-matrix solve, RFP format. It's giving BLAS energy, it's giving packed storage, and yes, we're gonna get through it together. ๐Ÿซถ

โœจ NAME โœจ

tfsm โ€” tfsm: triangular-matrix solve, RFP format ๐Ÿ’–

๐ŸŒธ SYNOPSIS ๐ŸŒธ

Functions

  • subroutine ctfsm (transr, side, uplo, trans, diag, m, n, alpha, a, b, ldb) โ€” CTFSM solves a matrix equation (one operand is a triangular matrix in RFP format).
  • subroutine dtfsm (transr, side, uplo, trans, diag, m, n, alpha, a, b, ldb) โ€” DTFSM solves a matrix equation (one operand is a triangular matrix in RFP format).
  • subroutine stfsm (transr, side, uplo, trans, diag, m, n, alpha, a, b, ldb) โ€” STFSM solves a matrix equation (one operand is a triangular matrix in RFP format).
  • subroutine ztfsm (transr, side, uplo, trans, diag, m, n, alpha, a, b, ldb) โ€” ZTFSM solves a matrix equation (one operand is a triangular matrix in RFP format).

๐Ÿฆ‹ Detailed Description ๐Ÿฆ‹

This is the lowkey overview: the whole page is about solving matrix equations where one operand is a triangular matrix in RFP format. The actual function docs are right below, no cap.

๐Ÿ‘‘ Function Documentation ๐Ÿ‘‘

subroutine ctfsm

   subroutine ctfsm (character transr, character side, character uplo,
       character trans, character diag, integer m, integer n, complex alpha,
       complex, dimension( 0: * ) a, complex, dimension( 0: ldb-1, 0: * ) b,
       integer ldb)

CTFSM solves a matrix equation (one operand is a triangular matrix in RFP format). Periodt.

๐Ÿ’– Purpose ๐Ÿ’–

Okay so it's a Level 3 BLAS like routine for A in RFP Format. CTFSM solves the matrix equation

op( A )*X = alpha*B  or  X*op( A ) = alpha*B

where alpha is a scalar, X and B are m by n matrices, A is a unit, or non-unit, upper or lower triangular matrix and op( A ) is one of

op( A ) = A   or   op( A ) = A**H.

A is in Rectangular Full Packed (RFP) Format. The matrix X is overwritten on B. Slay. โœจ

๐ŸŽ€ Parameters ๐ŸŽ€

  • TRANSR โ€” CHARACTER*1. Bestie, this tells you which form of RFP A is stored:
    • = 'N': The Normal Form of RFP A is stored;
    • = 'C': The Conjugate-transpose Form of RFP A is stored.
  • SIDE โ€” CHARACTER*1. On entry, SIDE specifies whether op( A ) appears on the left or right of X as follows:
    • SIDE = 'L' or 'l' โ†’ op( A )*X = alpha*B.
    • SIDE = 'R' or 'r' โ†’ X*op( A ) = alpha*B. Unchanged on exit.
  • UPLO โ€” CHARACTER*1. On entry, UPLO specifies whether the RFP matrix A came from an upper or lower triangular matrix as follows:
    • UPLO = 'U' or 'u' โ†’ RFP A came from an upper triangular matrix
    • UPLO = 'L' or 'l' โ†’ RFP A came from a lower triangular matrix Unchanged on exit.
  • TRANS โ€” CHARACTER*1. On entry, TRANS specifies the form of op( A ) to be used in the matrix multiplication as follows:
    • TRANS = 'N' or 'n' โ†’ op( A ) = A.
    • TRANS = 'C' or 'c' โ†’ op( A ) = conjg( A' ). Unchanged on exit.
  • DIAG โ€” CHARACTER*1. On entry, DIAG specifies whether or not RFP A is unit triangular as follows:
    • DIAG = 'U' or 'u' โ†’ A is assumed to be unit triangular.
    • DIAG = 'N' or 'n' โ†’ A is not assumed to be unit triangular. Unchanged on exit.
  • M โ€” INTEGER. On entry, M specifies the number of rows of B. M must be at least zero. Unchanged on exit.
  • N โ€” INTEGER. On entry, N specifies the number of columns of B. N must be at least zero. Unchanged on exit.
  • ALPHA โ€” COMPLEX. On entry, ALPHA specifies the scalar alpha. When alpha is zero then A is not referenced and B need not be set before entry. Unchanged on exit.
  • A โ€” COMPLEX array, dimension (NT). NT = N*(N+1)/2 if SIDE='R' and NT = M*(M+1)/2 otherwise. On entry, the matrix A in RFP Format. RFP Format is described by TRANSR, UPLO and N as follows:
    • 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 either in normal or conjugate-transpose Format.
    • If UPLO = 'L' the RFP A contains the NT elements of lower packed A either in normal or conjugate-transpose Format. 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 is N when is odd. See the Note below for more details. Unchanged on exit.
  • B โ€” COMPLEX array, dimension (LDB,N). Before entry, the leading m by n part of the array B must contain the right-hand side matrix B, and on exit is overwritten by the solution matrix X.
  • LDB โ€” INTEGER. On entry, LDB specifies the first dimension of B as declared in the calling (sub) program. LDB must be at least max( 1, m ). Unchanged on exit.

๐ŸŒˆ Author ๐ŸŒˆ

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

๐Ÿงš Further Details ๐Ÿงš

Okay this is the part where the packed storage gets explained, and honestly it's a lot. 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 297 of file ctfsm.f.

๐Ÿ’– dtfsm ๐Ÿ’–

subroutine dtfsm (character transr, character side, character uplo,
    character trans, character diag, integer m, integer n, double precision
    alpha, double precision, dimension( 0: * ) a, double precision,
    dimension( 0: ldb-1, 0: * ) b, integer ldb)

Okay so <pink>DTFSM</pink> solves a matrix equation where one of the operands is a triangular matrix in RFP format. That's the whole vibe. โœจ

๐ŸŽฏ Purpose

Level 3 BLAS like routine for A in RFP Format. Not "level 3 BLAS", not "level 3 BLAS-ish", literally like it โ€” write that down. ๐Ÿ’…

DTFSM solves the matrix equation

   op( A )*X = alpha*B  or  X*op( A ) = alpha*B

where alpha is a scalar, X and B are m by n matrices, A is a unit, or non-unit, upper or lower triangular matrix and op( A ) is one of

   op( A ) = A   or   op( A ) = A**T.

A is in Rectangular Full Packed (RFP) Format. ๐ŸŽ€

The matrix X is overwritten on B. No cap, it just eats B and leaves X there instead. ๐Ÿ˜ญ

๐Ÿงฎ Parameters

  • TRANSR โ€” TRANSR is CHARACTER*1, and it picks which flavour of RFP you handed us:
    • = 'N': The Normal Form of RFP A is stored
    • = 'T': The Transpose Form of RFP A is stored
  • SIDE โ€” SIDE is CHARACTER*1. On entry, SIDE specifies whether op( A ) appears on the left or right of X as follows:
    • SIDE = 'L' or 'l' โ†’ op( A )*X = alpha*B.
    • SIDE = 'R' or 'r' โ†’ X*op( A ) = alpha*B.

Unchanged on exit. ๐Ÿซถ

  • UPLO โ€” UPLO is CHARACTER*1. On entry, UPLO specifies whether the RFP matrix A came from an upper or lower triangular matrix as follows:
    • UPLO = 'U' or 'u' โ†’ RFP A came from an upper triangular matrix
    • UPLO = 'L' or 'l' โ†’ RFP A came from a lower triangular matrix

Unchanged on exit.

  • TRANS โ€” TRANS is CHARACTER*1. On entry, TRANS specifies the form of op( A ) to be used in the matrix multiplication as follows:
    • TRANS = 'N' or 'n' โ†’ op( A ) = A.
    • TRANS = 'T' or 't' โ†’ op( A ) = A'.

Unchanged on exit. โœจ

  • DIAG โ€” DIAG is CHARACTER*1. On entry, DIAG specifies whether or not RFP A is unit triangular as follows:
    • DIAG = 'U' or 'u' โ†’ A is assumed to be unit triangular.
    • DIAG = 'N' or 'n' โ†’ A is not assumed to be unit triangular.

Unchanged on exit.

  • M โ€” M is INTEGER. On entry, M specifies the number of rows of B. M must be at least zero. Unchanged on exit.
  • N โ€” N is INTEGER. On entry, N specifies the number of columns of B. N must be at least zero. Unchanged on exit.
  • ALPHA โ€” ALPHA is DOUBLE PRECISION. On entry, ALPHA specifies the scalar alpha. When alpha is zero then A is not referenced and B need not be set before entry. Unchanged on exit. ๐Ÿ‘‘
  • A โ€” A is DOUBLE PRECISION array, dimension (NT). NT = N*(N+1)/2 if SIDE='R' and NT = M*(M+1)/2 otherwise. On entry, the matrix A in RFP Format. RFP Format is described by TRANSR, UPLO and N as follows: 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 = 'T' then RFP is the 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 either in normal or transpose Format. If UPLO = 'L' the RFP A contains the NT elements of lower packed A either in normal or transpose Format. The LDA of RFP A is (N+1)/2 when TRANSR = 'T'. When TRANSR is 'N' the LDA is N+1 when N is even and is N when is odd. See the Note below for more details. Unchanged on exit. ๐Ÿฆ‹
  • B โ€” B is DOUBLE PRECISION array, dimension (LDB,N). Before entry, the leading m by n part of the array B must contain the right-hand side matrix B, and on exit is overwritten by the solution matrix X.
  • LDB โ€” LDB is INTEGER. On entry, LDB specifies the first dimension of B as declared in the calling (sub) program. LDB must be at least max( 1, m ). Unchanged on exit.

โœ๏ธ Author

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

๐Ÿ” Further Details

Bestie. This next bit is the whole RFP format explained with actual numbers. It's giving "math class but the teacher is hot". Sit down, we're going in. ๐Ÿงš

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 276 of file dtfsm.f.


๐Ÿฆ‹ stfsm ๐Ÿฆ‹

subroutine stfsm (character transr, character side, character uplo,
    character trans, character diag, integer m, integer n, real alpha, real,
    dimension( 0: * ) a, real, dimension( 0: ldb-1, 0: * ) b, integer ldb)

<pink>STFSM</pink> solves a matrix equation where one operand is a triangular matrix in RFP format โ€” literally the single-precision sibling of DTFSM, same energy, smaller floats. ๐Ÿ’…

๐ŸŽฏ Purpose

Level 3 BLAS like routine for A in RFP Format. ๐ŸŒˆ

STFSM solves the matrix equation

   op( A )*X = alpha*B  or  X*op( A ) = alpha*B

where alpha is a scalar, X and B are m by n matrices, A is a unit, or non-unit, upper or lower triangular matrix and op( A ) is one of

   op( A ) = A   or   op( A ) = A**T.

A is in Rectangular Full Packed (RFP) Format. ๐ŸŽ€

The matrix X is overwritten on B. Iconic behaviour, honestly.

๐Ÿงฎ Parameters

  • TRANSR โ€” TRANSR is CHARACTER*1:
    • = 'N': The Normal Form of RFP A is stored
    • = 'T': The Transpose Form of RFP A is stored
  • SIDE โ€” SIDE is CHARACTER*1. On entry, SIDE specifies whether op( A ) appears on the left or right of X as follows:
    • SIDE = 'L' or 'l' โ†’ op( A )*X = alpha*B.
    • SIDE = 'R' or 'r' โ†’ X*op( A ) = alpha*B.

Unchanged on exit. ๐Ÿซถ

  • UPLO โ€” UPLO is CHARACTER*1. On entry, UPLO specifies whether the RFP matrix A came from an upper or lower triangular matrix as follows:
    • UPLO = 'U' or 'u' โ†’ RFP A came from an upper triangular matrix
    • UPLO = 'L' or 'l' โ†’ RFP A came from a lower triangular matrix

Unchanged on exit.

  • TRANS โ€” TRANS is CHARACTER*1
  • TRANS โ€” it's a CHARACTER*1, and on entry it tells you which form of op( A ) is getting used in the multiplication, like:
    • TRANS = 'N' or 'n' โ†’ op( A ) = A.
    • TRANS = 'T' or 't' โ†’ op( A ) = A'.

Unchanged on exit. ๐Ÿ’…

  • DIAG โ€” bestie, this is CHARACTER*1 too, and it answers the question "is RFP A giving unit triangular energy or not":
    • DIAG = 'U' or 'u' โ†’ A is assumed to be unit triangular.
    • DIAG = 'N' or 'n' โ†’ A is not assumed to be unit triangular.

Unchanged on exit. โœจ

  • M โ€” INTEGER. On entry, M says how many rows B has. M must be at least zero. Unchanged on exit.
  • N โ€” INTEGER. On entry, N says how many columns B has. N must be at least zero too. Unchanged on exit.
  • ALPHA โ€” it's REAL. On entry, ALPHA is the scalar alpha, okurrr. And when alpha is zero then A is not referenced and B need not be set before entry โ€” so like, you literally don't even have to bother setting up B. Unchanged on exit. ๐ŸŽ€
  • A โ€” a REAL array, dimension (NT).

NT = N*(N+1)/2 if SIDE='R' and NT = M*(M+1)/2 otherwise. โœจ

On entry, it's the matrix A in RFP Format. RFP Format is described by TRANSR, UPLO and N as follows: 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 = 'T' then RFP is the 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 either in normal or transpose Format. If UPLO = 'L' the RFP A contains the NT elements of lower packed A either in normal or transpose Format. The LDA of RFP A is (N+1)/2 when TRANSR = 'T'. When TRANSR is 'N' the LDA is N+1 when N is even and is N when is odd. See the Note below for more details. Unchanged on exit. ๐Ÿฆ‹

  • B โ€” REAL array, dimension (LDB,N). Before entry, the leading m by n part of the array B must contain the right-hand side matrix B, and on exit is overwritten by the solution matrix X. It's giving main character transformation arc, honestly. ๐Ÿ”ฅ
  • LDB โ€” INTEGER. On entry, LDB specifies the first dimension of B as declared in the calling (sub) program. LDB must be at least max( 1, m ). Unchanged on exit. No notes, periodt.

๐Ÿซถ Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.


๐Ÿ“ Further Details:

Okay so 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 276 of file stfsm.f. ๐Ÿ“


๐Ÿฆ‹ subroutine ztfsm ๐Ÿ’œ

subroutine ztfsm (character transr, character side, character uplo,
    character trans, character diag, integer m, integer n, complex*16 alpha,
    complex*16, dimension( 0: * ) a, complex*16, dimension( 0: ldb-1, 0: * )
    b, integer ldb)

ZTFSM solves a matrix equation (one operand is a triangular matrix in RFP format). Iconic behaviour, no cap. ๐Ÿ‘‘

โœจ Purpose:

Level 3 BLAS like routine for A in RFP Format.

ZTFSM solves the matrix equation

   op( A )*X = alpha*B  or  X*op( A ) = alpha*B

where alpha is a scalar, X and B are m by n matrices, A is a unit, or non-unit, upper or lower triangular matrix and op( A ) is one of

   op( A ) = A   or   op( A ) = A**H.

A is in Rectangular Full Packed (RFP) Format.

The matrix X is overwritten on B. ๐Ÿ™ˆ

๐ŸŒˆ Parameters

  • TRANSR โ€” CHARACTER*1.
    • = 'N': The Normal Form of RFP A is stored;
    • = 'C': The Conjugate-transpose Form of RFP A is stored.
  • SIDE โ€” CHARACTER*1. On entry, SIDE specifies whether op( A ) appears on the left or right of X as follows:
    • SIDE = 'L' or 'l' โ†’ op( A )*X = alpha*B.
    • SIDE = 'R' or 'r' โ†’ X*op( A ) = alpha*B.

Unchanged on exit. ๐Ÿ’–

  • UPLO โ€” CHARACTER*1. On entry, UPLO specifies whether the RFP matrix A came from an upper or lower triangular matrix as follows: UPLO = 'U' or 'u' RFP A came from an upper triangular matrix UPLO = 'L' or 'l' RFP A came from a lower triangular matrix

Unchanged on exit. ๐ŸŽ€

  • TRANS โ€” CHARACTER*1. On entry, TRANS specifies the form of op( A ) to be used in the matrix multiplication as follows:
    • TRANS = 'N' or 'n' โ†’ op( A ) = A.
    • TRANS = 'C' or 'c' โ†’ op( A ) = conjg( A' ).

Unchanged on exit. (Not me noticing the complex version gets conjg โ€” she's fancy like that. ๐Ÿ’…)

  • DIAG โ€” CHARACTER*1. On entry, DIAG specifies whether or not RFP A is unit triangular as follows:
    • DIAG = 'U' or 'u' โ†’ A is assumed to be unit triangular.
    • DIAG = 'N' or 'n' โ†’ A is not assumed to be unit triangular.

Unchanged on exit. โญ

  • M โ€” INTEGER. On entry, M specifies the number of rows of B. M must be at least zero. Unchanged on exit.
  • N โ€” INTEGER. On entry, N specifies the number of columns of B. N must be at least zero. Unchanged on exit.
  • ALPHA โ€” COMPLEX*16. On entry, ALPHA specifies the scalar alpha. When alpha is zero then A is not referenced and B need not be set before entry. Unchanged on exit. ๐Ÿ˜ญ (free real estate, we love to see it)
  • A โ€”

so A is a COMPLEX*16 array, dimension (N*(N+1)/2) โœจ (yes bestie, that exact dimension). And NT = N*(N+1)/2 if SIDE='R', otherwise NT = M*(M+1)/2. On entry, the matrix A is in RFP Format. RFP Format is described by TRANSR, UPLO and N as follows: 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 either in normal or conjugate-transpose Format. If UPLO = 'L' the RFP A contains the NT elements of lower packed A either in normal or conjugate-transpose Format. 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 is N when is odd. ๐Ÿ‘‘ See the Note below for more details. Unchanged on exit.

B โ€” she's a COMPLEX*16 array, dimension (LDB,N) ๐Ÿฆ‹ Before entry, the leading m by n part of the array B must contain the right-hand side matrix B, and on exit is overwritten by the solution matrix X. ๐Ÿ’–

LDB โ€” INTEGER ๐ŸŒธ On entry, LDB specifies the first dimension of B as declared in the calling (sub) program. LDB must be at least max( 1, m ). Unchanged on exit. ๐Ÿ’…

๐Ÿ‘‘ Author ๐Ÿ‘‘

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

๐Ÿ” Further Details: ๐Ÿ”

okay this is the part where the diagrams go hard, no cap. Transcribed exactly so you don't miss a single -- ๐Ÿ’€:

           !>
           !>  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 297 of file ztfsm.f.

๐Ÿค– Author (the Doxygen one) ๐Ÿค–

Generated automatically by Doxygen for LAPACK from the source code.


and that's a wrap, bestie! ๐ŸŽ€ this page is from LAPACK, version 3.12.0, and the date? not in this footer, but the vibe is timeless โœจ source + version slayed, periodt ๐Ÿ’…

๐Ÿ“ฆ where this page comes from