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 whetherop( 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 matrixUPLO = 'L' or 'l'โ RFP A came from a lower triangular matrix Unchanged on exit.
TRANSโCHARACTER*1. On entry, TRANS specifies the form ofop( 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 scalaralpha. Whenalphais 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)/2ifSIDE='R'andNT = M*(M+1)/2otherwise. 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 whenTRANSR = '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)/2whenTRANSR = 'C'. When TRANSR is'N'the LDA isN+1when N is even and isNwhen is odd. See the Note below for more details. Unchanged on exit.
- If
BโCOMPLEX array, dimension (LDB,N). Before entry, the leadingmbynpart 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 leastmax( 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โTRANSRisCHARACTER*1, and it picks which flavour of RFP you handed us:- =
'N': The Normal Form of RFPAis stored - =
'T': The Transpose Form of RFPAis stored
- =
SIDEโSIDEisCHARACTER*1. On entry,SIDEspecifies whetherop( A )appears on the left or right ofXas follows:SIDE = 'L' or 'l'โop( A )*X = alpha*B.SIDE = 'R' or 'r'โX*op( A ) = alpha*B.
Unchanged on exit. ๐ซถ
UPLOโUPLOisCHARACTER*1. On entry,UPLOspecifies whether the RFP matrixAcame from an upper or lower triangular matrix as follows:UPLO = 'U' or 'u'โ RFPAcame from an upper triangular matrixUPLO = 'L' or 'l'โ RFPAcame from a lower triangular matrix
Unchanged on exit.
TRANSโTRANSisCHARACTER*1. On entry,TRANSspecifies the form ofop( 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โDIAGisCHARACTER*1. On entry,DIAGspecifies whether or not RFPAis unit triangular as follows:DIAG = 'U' or 'u'โAis assumed to be unit triangular.DIAG = 'N' or 'n'โAis not assumed to be unit triangular.
Unchanged on exit.
MโMisINTEGER. On entry,Mspecifies the number of rows ofB.Mmust be at least zero. Unchanged on exit.NโNisINTEGER. On entry,Nspecifies the number of columns ofB.Nmust be at least zero. Unchanged on exit.ALPHAโALPHAisDOUBLE PRECISION. On entry,ALPHAspecifies the scalaralpha. Whenalphais zero thenAis not referenced andBneed not be set before entry. Unchanged on exit. ๐AโAisDOUBLE PRECISIONarray, dimension(NT).NT = N*(N+1)/2ifSIDE='R'andNT = M*(M+1)/2otherwise. On entry, the matrixAin RFP Format. RFP Format is described byTRANSR,UPLOandNas follows: IfTRANSR='N'then RFPAis(0:N,0:K-1)whenNis even;K=N/2. RFPAis(0:N-1,0:K)whenNis odd;K=N/2. IfTRANSR = 'T'then RFP is the transpose of RFPAas defined whenTRANSR = 'N'. The contents of RFPAare defined byUPLOas follows: IfUPLO = 'U'the RFPAcontains theNTelements of upper packedAeither in normal or transpose Format. IfUPLO = 'L'the RFPAcontains theNTelements of lower packedAeither in normal or transpose Format. TheLDAof RFPAis(N+1)/2whenTRANSR = 'T'. WhenTRANSRis'N'theLDAisN+1whenNis even and isNwhen is odd. See the Note below for more details. Unchanged on exit. ๐ฆBโBisDOUBLE PRECISIONarray, dimension(LDB,N). Before entry, the leadingmbynpart of the arrayBmust contain the right-hand side matrixB, and on exit is overwritten by the solution matrixX.LDBโLDBisINTEGER. On entry,LDBspecifies the first dimension ofBas declared in the calling (sub) program.LDBmust be at leastmax( 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โTRANSRisCHARACTER*1:- =
'N': The Normal Form of RFPAis stored - =
'T': The Transpose Form of RFPAis stored
- =
SIDEโSIDEisCHARACTER*1. On entry,SIDEspecifies whetherop( A )appears on the left or right ofXas follows:SIDE = 'L' or 'l'โop( A )*X = alpha*B.SIDE = 'R' or 'r'โX*op( A ) = alpha*B.
Unchanged on exit. ๐ซถ
UPLOโUPLOisCHARACTER*1. On entry,UPLOspecifies whether the RFP matrixAcame from an upper or lower triangular matrix as follows:UPLO = 'U' or 'u'โ RFPAcame from an upper triangular matrixUPLO = 'L' or 'l'โ RFPAcame from a lower triangular matrix
Unchanged on exit.
TRANSโTRANSisCHARACTER*1TRANSโ it's aCHARACTER*1, and on entry it tells you which form ofop( 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 isCHARACTER*1too, 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,Msays how many rows B has.Mmust be at least zero. Unchanged on exit.NโINTEGER. On entry,Nsays how many columns B has.Nmust be at least zero too. Unchanged on exit.ALPHAโ it'sREAL. On entry,ALPHAis 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โ aREALarray, 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โREALarray, 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,LDBspecifies the first dimension of B as declared in the calling (sub) program.LDBmust be at leastmax( 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,SIDEspecifies whetherop( 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,UPLOspecifies 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 matrixUPLO = 'L' or 'l'RFP A came from a lower triangular matrix
Unchanged on exit. ๐
TRANSโCHARACTER*1. On entry,TRANSspecifies the form ofop( 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,DIAGspecifies 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,Mspecifies the number of rows of B.Mmust be at least zero. Unchanged on exit.NโINTEGER. On entry,Nspecifies the number of columns of B.Nmust be at least zero. Unchanged on exit.ALPHAโCOMPLEX*16. On entry,ALPHAspecifies 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
- arch rolling: lapack-doc 3.12.1-2 ยท custom
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms