trsm(3)
๐ trsm(3) โ LAPACK ๐
okay bestie, sit DOWN, because we're about to talk about trsm, aka the triangular matrix-matrix solve ๐
โจ This is a LAPACK girlie and she is booked and busy solving matrix equations for you.
โจ NAME โจ
trsm โ it's giving triangular matrix-matrix solve ๐ no cap.
๐ฆ SYNOPSIS ๐ฆ
Functions
subroutine ctrsm (side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)โ CTRSM ๐subroutine dtrsm (side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)โ DTRSM ๐subroutine strsm (side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)โ STRSM ๐subroutine ztrsm (side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)โ ZTRSM ๐
๐ธ Detailed Description ๐ธ
(like, the whole breakdown lives down here, keep scrolling bestie ๐ซถ)
๐ Function Documentation ๐
๐ subroutine ctrsm
subroutine ctrsm (character side, character uplo, character transa,
character diag, integer m, integer n, complex alpha, complex,
dimension(lda,*) a, integer lda, complex, dimension(ldb,*) b, integer
ldb)
CTRSM โจ
๐ Purpose:
CTRSM solves one of the matrix equations, and yes she does it in ONE go:
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 or op( A ) = A**H.
The matrix X is overwritten on B. (iconic behaviour, honestly โ she does NOT ask permission, she just writes over it ๐)
๐ Parameters
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.
UPLOโUPLOisCHARACTER*1. On entry,UPLOspecifies whether the matrixAis an upper or lower triangular matrix as follows:
UPLO = 'U' or 'u' A is an upper triangular matrix.
UPLO = 'L' or 'l' A is a lower triangular matrix.
TRANSAโTRANSAisCHARACTER*1. On entry,TRANSAspecifies the form ofop( A )to be used in the matrix multiplication as follows:
TRANSA = 'N' or 'n' op( A ) = A.
TRANSA = 'T' or 't' op( A ) = A**T.
TRANSA = 'C' or 'c' op( A ) = A**H.
DIAGโDIAGisCHARACTER*1. On entry,DIAGspecifies whether or notAis 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.
MโMisINTEGER. On entry,Mspecifies the number of rows ofB.Mmust be at least zero.NโNisINTEGER. On entry,Nspecifies the number of columns ofB.Nmust be at least zero.ALPHAโALPHAisCOMPLEX. On entry,ALPHAspecifies the scalaralpha. Whenalphais zero thenAis not referenced andBneed not be set before entry. (she's literally like "no thoughts, no setup, just vibes" when alpha is zero ๐ญ)AโAisCOMPLEXarray, dimension( LDA, k ), wherekismwhenSIDE = 'L' or 'l'andkisnwhenSIDE = 'R' or 'r'. Before entry withUPLO = 'U' or 'u', the leadingkbykupper triangular part of the arrayAmust contain the upper triangular matrix and the strictly lower triangular part ofAis not referenced. Before entry withUPLO = 'L' or 'l', the leadingkbyklower triangular part of the arrayAmust contain the lower triangular matrix and the strictly upper triangular part ofAis not referenced. Note that whenDIAG = 'U' or 'u', the diagonal elements ofAare not referenced either, but are assumed to be unity.LDAโLDAisINTEGER. On entry,LDAspecifies the first dimension ofAas declared in the calling (sub) program. WhenSIDE = 'L' or 'l'thenLDAmust be at leastmax( 1, m ), whenSIDE = 'R' or 'r'thenLDAmust be at leastmax( 1, n ).BโBisCOMPLEXarray, 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 ).
๐ Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
๐ซ Further Details:
Level 3 Blas routine.
-- Written on 8-February-1989.
Jack Dongarra, Argonne National Laboratory.
Iain Duff, AERE Harwell.
Jeremy Du Croz, Numerical Algorithms Group Ltd.
Sven Hammarling, Numerical Algorithms Group Ltd.
Definition at line 179 of file ctrsm.f. ๐
๐ง subroutine dtrsm
subroutine dtrsm (character side, character uplo, character transa,
character diag, integer m, integer n, double precision alpha, double
precision, dimension(lda,*) a, integer lda, double precision,
dimension(ldb,*) b, integer ldb)
DTRSM โจ
๐ Purpose:
DTRSM solves one of the matrix equations:
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.
The matrix X is overwritten on B. (again โ no hesitation, she just does it ๐
)
๐ Parameters
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.
UPLOโUPLOisCHARACTER*1. On entry,UPLOspecifies whether the matrixAis an upper or lower triangular matrix as follows:
UPLO = 'U' or 'u' A is an upper triangular matrix.
UPLO = 'L' or 'l' A is a lower triangular matrix.
TRANSAโTRANSAisCHARACTER*1. On entry,TRANSAspecifies the form ofop( A )to be used in the matrix multiplication as follows:
TRANSA = 'N' or 'n' op( A ) = A.
TRANSA = 'T' or 't' op( A ) = A**T.
TRANSA = 'C' or 'c' op( A ) = A**T.
DIAGโDIAGisCHARACTER*1. On entry,DIAGspecifies whether or notAis 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.
MโMisINTEGER. On entry,Mspecifies the number of rows ofB.Mmust be at least zero.NโNisINTEGER. On entry,Nspecifies the number of columns ofB.Nmust be at least zero.ALPHAโALPHAisDOUBLE PRECISION. On entry,ALPHAspecifies the scalaralpha. Whenalphais zero thenAis not referenced andBneed not be set before entry.AโAisDOUBLE PRECISIONarray, dimension( LDA, k ), wherekismwhenSIDE = 'L' or 'l'andkisnwhenSIDE = 'R' or 'r'. Before entry withUPLO = 'U' or 'u', the leadingkbykupper triangular part of the arrayAmust contain the upper triangular matrix and the strictly lower triangular part ofAis not referenced. Before entry withUPLO = 'L' or 'l', the leadingkbyklower triangular part of the arrayAmust contain the lower triangular matrix and the strictly upper triangular part ofAis not referenced. Note that whenDIAG = 'U' or 'u', the diagonal elements ofAare not referenced either, but are assumed to be unity.LDAโLDAisINTEGER. On entry,LDAspecifies the first dimension ofAas declared in the calling (sub) program. WhenSIDE = 'L' or 'l'thenLDAmust be at leastmax( 1, m ), whenSIDE = 'R' or 'r'thenLDAmust be at leastmax( 1, n ).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 ).
๐ Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
๐ซ Further Details:
Level 3 Blas routine.
-- Written on 8-February-1989.
Jack Dongarra, Argonne National Laboratory.
Iain Duff, AERE Harwell.
Jeremy Du Croz, Numerical Algorithms Group Ltd.
Sven Hammarling, Numerical Algorithms Group Ltd.
Definition at line 180 of file dtrsm.f. ๐
๐ subroutine strsm
subroutine strsm (character side, character uplo, character transa,
character diag, integer m, integer n, real alpha, real, dimension(lda,*)
a, integer lda, real, dimension(ldb,*) b, integer ldb)
STRSM โจ
๐ Purpose:
STRSM solves one of the matrix equations:
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.
The matrix X is overwritten on B. (the audacity?? love that for her ๐ซถ)
๐ Parameters
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.
UPLOUPLOโCHARACTER*1. On entry,UPLOspecifies whether the matrixAis an upper or lower triangular matrix, and it's giving triangle realness ๐บ:UPLO = 'U'or'u'โAis an upper triangular matrix. โจUPLO = 'L'or'l'โAis a lower triangular matrix. ๐
TRANSAโCHARACTER*1. On entry,TRANSAspecifies the form ofop( A )to be used in the matrix multiplication, no cap ๐งฎ:TRANSA = 'N'or'n'โop( A ) = A.TRANSA = 'T'or't'โop( A ) = A**T.TRANSA = 'C'or'c'โop( A ) = A**T.
DIAGโCHARACTER*1. On entry,DIAGspecifies whether or notAis unit triangular, bestie ๐ซถ:DIAG = 'U'or'u'โAis assumed to be unit triangular.DIAG = 'N'or'n'โAis not assumed to be unit triangular.
MโINTEGER. On entry,Mspecifies the number of rows ofB.Mmust be at least zero. ๐NโINTEGER. On entry,Nspecifies the number of columns ofB.Nmust be at least zero. ๐ALPHAโREAL. On entry,ALPHAspecifies the scalar alpha. When alpha is zero thenAis not referenced andBneed not be set before entry. ๐ฅAโREALarray, dimension( LDA, k ), wherekismwhenSIDE = 'L'or'l', andkisnwhenSIDE = 'R'or'r'. Before entry withUPLO = 'U'or'u', the leadingkbykupper triangular part of the arrayAmust contain the upper triangular matrix, and the strictly lower triangular part ofAis not referenced. Before entry withUPLO = 'L'or'l', the leadingkbyklower triangular part of the arrayAmust contain the lower triangular matrix, and the strictly upper triangular part ofAis not referenced. Note that whenDIAG = 'U'or'u', the diagonal elements ofAare not referenced either, but are assumed to be unity. ๐LDAโINTEGER. On entry,LDAspecifies the first dimension ofAas declared in the calling (sub) program. WhenSIDE = 'L'or'l'thenLDAmust be at leastmax( 1, m ), whenSIDE = 'R'or'r'thenLDAmust be at leastmax( 1, n ). ๐BโREALarray, 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โINTEGER. On entry,LDBspecifies the first dimension ofBas declared in the calling (sub) program.LDBmust be at leastmax( 1, m ). ๐
๐ซถ Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
๐ฅ Further Details
Level 3 Blas routine.
-- Written on 8-February-1989.
Jack Dongarra, Argonne National Laboratory.
Iain Duff, AERE Harwell.
Jeremy Du Croz, Numerical Algorithms Group Ltd.
Sven Hammarling, Numerical Algorithms Group Ltd.
Definition at line 180 of file strsm.f.
๐ ZTRSM ๐
subroutine ztrsm (character side, character uplo, character transa,
character diag, integer m, integer n, complex*16 alpha, complex*16,
dimension(lda,*) a, integer lda, complex*16, dimension(ldb,*) b, integer
ldb)
๐ฏ Purpose
ZTRSM solves one of the matrix equations
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 or op( A ) = A**H.
The matrix X is overwritten on B.
๐ Parameters
SIDEโCHARACTER*1. On entry,SIDEspecifies whetherop( A )appears on the left or right ofX, and it's giving directional energy ๐งญ:SIDE = 'L'or'l'โop( A )*X = alpha*B.SIDE = 'R'or'r'โX*op( A ) = alpha*B.
UPLOโCHARACTER*1. On entry,UPLOspecifies whether the matrixAis an upper or lower triangular matrix, as follows:UPLO = 'U'or'u'โAis an upper triangular matrix.UPLO = 'L'or'l'โAis a lower triangular matrix.
TRANSAโCHARACTER*1. On entry,TRANSAspecifies the form ofop( A )to be used in the matrix multiplication, and it's lowkey important ๐งฎ:TRANSA = 'N'or'n'โop( A ) = A.TRANSA = 'T'or't'โop( A ) = A**T.TRANSA = 'C'or'c'โop( A ) = A**H.
DIAGโCHARACTER*1. On entry,DIAGspecifies whether or notAis unit triangular, fr fr:DIAG = 'U'or'u'โAis assumed to be unit triangular.DIAG = 'N'or'n'โAis not assumed to be unit triangular.
MโINTEGER. On entry,Mspecifies the number of rows ofB.Mmust be at least zero.NโINTEGER. On entry,Nspecifies the number of columns ofB.Nmust be at least zero.ALPHAโCOMPLEX*16. On entry,ALPHAspecifies the scalar alpha. When alpha is zero thenAis not referenced andBneed not be set before entry.AโCOMPLEX*16array, dimension( LDA, k ), wherekismwhenSIDE = 'L'or'l'andkisnwhenSIDE = 'R'or'r'. Before entry withUPLO = 'U'or'u', the leadingkbykupper triangular part of the arrayAmust contain the upper triangular matrix and the strictly lower triangular part ofAis not referenced. Before entry withUPLO = 'L'or'l', the leadingkbyklower triangular part of the arrayAmust contain the lower triangular matrix and the strictly upper triangular part ofAis not referenced. Note that whenDIAG = 'U'or'u', the diagonal elements ofAare not referenced either, but are assumed to be unity.LDAโINTEGER. On entry,LDAspecifies the first dimension ofAas declared in the calling (sub) program. WhenSIDE = 'L'or'l'thenLDAmust be at leastmax( 1, m ), whenSIDE = 'R'or'r'thenLDAmust be at leastmax( 1, n ).BโCOMPLEX*16array, 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โINTEGER. On entry,LDBspecifies the first dimension ofBas declared in the calling (sub) program.LDBmust be at leastmax( 1, m ).
๐ซถ Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
๐ฅ Further Details
Level 3 Blas routine.
-- Written on 8-February-1989.
Jack Dongarra, Argonne National Laboratory.
Iain Duff, AERE Harwell.
Jeremy Du Croz, Numerical Algorithms Group Ltd.
Sven Hammarling, Numerical Algorithms Group Ltd.
Definition at line 179 of file ztrsm.f.
Author
Generated automatically by Doxygen for LAPACK from the source code.
And that's the whole vibe, bestie! ๐ This page is from LAPACK version 3.12.0, dated Tue Nov 28 2023 12:08:43, and it's the trsm(3) manual page. Stay triangular, stay slay! โจ๐ฆ
๐ฆ where this page comes from
- centos-stream 10: lapack 3.12.0-7.el10 ยท BSD-3-Clause-Open-MPI
- fedora 43: lapack 3.12.0-10.fc43 ยท BSD-3-Clause-Open-MPI
- fedora 43: lapack 3.12.0-10.fc43 ยท BSD-3-Clause-Open-MPI
- fedora 44: lapack 3.12.0-11.fc44 ยท BSD-3-Clause-Open-MPI
- fedora 44: lapack 3.12.0-11.fc44 ยท BSD-3-Clause-Open-MPI
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms