SRC/dtfsm.f(3)
π NAME π
SRC/dtfsm.f β yes bestie, that's the whole name, and we're in the Library Functions Manual for LAPACK's DTFSM realness β¨
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine dtfsm (transr, side, uplo, trans, diag, m, n, alpha, a, b, ldb)βDTFSMsolves a matrix equation (one operand is a triangular matrix in RFP format).
π Function/Subroutine Documentation π
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)
DTFSM solves a matrix equation (one operand is a triangular matrix in RFP format).
π Purpose:
Okay so this is a Level 3 BLAS like routine for A in RFP Format.
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.
πΈ 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,
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.
- On entry,
UPLOβUPLO is CHARACTER*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.
- On entry,
TRANSβTRANS is 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 = 'T' or 't'βop( A ) = A'.- Unchanged on exit.
- On entry,
DIAGβDIAG is CHARACTER*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.
- On entry,
MβM is INTEGER- On entry,
Mspecifies the number of rows ofB.Mmust be at least zero. - Unchanged on exit.
- On entry,
NβN is INTEGER- On entry,
Nspecifies the number of columns ofB.Nmust be at least zero. - Unchanged on exit.
- On entry,
ALPHAβALPHA is DOUBLE PRECISION- On entry,
ALPHAspecifies the scalaralpha. Whenalphais zero thenAis not referenced andBneed not be set before entry. - Unchanged on exit.
- On entry,
AβA is DOUBLE PRECISION array, dimension (NT)NT = N*(N+1)/2ifSIDE='R'andNT = M*(M+1)/2otherwise.- On entry, the matrix
Ain RFP Format. - RFP Format is described by
TRANSR,UPLOandNas follows: - If
TRANSR='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βB is DOUBLE PRECISION array, dimension (LDB,N)- Before entry, the leading
mbynpart of the arrayBmust contain the right-hand side matrixB, and on exit is overwritten by the solution matrixX.
- Before entry, the leading
LDBβLDB is INTEGER- On entry,
LDBspecifies the first dimension ofBas declared in the calling (sub) program.LDBmust be at leastmax( 1, m ). - Unchanged on exit.
- On entry,
bestie,LDBmust be at leastmax( 1, m )β that's not a suggestion, it's the rule π
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π¦ Further Details π¦
Okay bestie, RFP format time. First up: RFP when N is even. Example where N = 6.
AP is Upper and AP is Lower:
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 trapezoidA(0:5,0:2)consists of the last three columns ofAPupper. The lower triangleA(4:6,0:2)consists of the transpose of the first three columns ofAPupper. - For
UPLO = 'L'the lower trapezoidA(1:6,0:2)consists of the first three columns ofAPlower. The upper triangleA(0:2,0:2)consists of the transpose of the last three columns ofAPlower.
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 RFP when N is odd. Example where N = 5.
AP is Upper and AP is Lower:
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 trapezoidA(0:4,0:2)consists of the last three columns ofAPupper. The lower triangleA(3:4,0:1)consists of the transpose of the first two columns ofAPupper. - For
UPLO = 'L'the lower trapezoidA(0:4,0:2)consists of the first three columns ofAPlower. The upper triangleA(0:1,1:2)consists of the transpose of the last two columns ofAPlower.
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. β that's the source coordinate, bestie π
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
π ok that's the whole page, bestie β footer vibes: LAPACK Version 3.12.0, page SRC/dtfsm.f(3), and the footer didn't give me a date so I'm not making one up. mwah πβ¨
π¦ 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