trmv(3)
π trmv(3) β straight out of the Library Functions Manual β¨
okay bestie, buckle up, because this is the triangular matrix-vector multiply situation and it's genuinely iconic. no cap. π«Ά
πΈ NAME πΈ
trmv β trmv: triangular matrix-vector multiply. that's literally the whole thing, it does exactly what it says on the tin π
π SYNOPSIS π
β¨ Functions β¨
subroutine ctrmv (uplo, trans, diag, n, a, lda, x, incx)βCTRMVsubroutine dtrmv (uplo, trans, diag, n, a, lda, x, incx)βDTRMVsubroutine strmv (uplo, trans, diag, n, a, lda, x, incx)βSTRMVsubroutine ztrmv (uplo, trans, diag, n, a, lda, x, incx)βZTRMV
like, yes, it's the same argument list four times. that's the bit. four flavors of the same serve π
π Detailed Description π
(that's it, that's the whole description up here β the real tea is all in the function docs below, bestie π)
π Function Documentation π
π¦ subroutine ctrmv (character uplo, character trans, character diag, integer n, complex, dimension(lda,) a, integer lda, complex, dimension() x, integer incx) π¦
π CTRMV
β Purpose:
!>
!> CTRMV performs one of the matrix-vector operations
!>
!> x := A*x, or x := A**T*x, or x := A**H*x,
!>
!> where x is an n element vector and A is an n by n unit, or non-unit,
!> upper or lower triangular matrix.
!>
so it picks up your vector x and your triangular matrix A and multiplies them, and you get to choose whether A shows up as-is, transposed, or conjugate-transposed. main character energy, three ways to slay π₯
π― Parameters
UPLO
!> UPLO is CHARACTER*1
!> On entry, UPLO specifies whether the matrix is 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.
!>
TRANS
!> TRANS is CHARACTER*1
!> On entry, TRANS specifies the operation to be performed as
!> follows:
!>
!> TRANS = 'N' or 'n' x := A*x.
!>
!> TRANS = 'T' or 't' x := A**T*x.
!>
!> TRANS = 'C' or 'c' x := A**H*x.
!>
(okay this is the complex one, so 'C' gives you the conjugate transpose β A**H. clock that, bestie, it matters π)
DIAG
!> DIAG is CHARACTER*1
!> On entry, DIAG specifies whether or not 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.
!>
N
!> N is INTEGER
!> On entry, N specifies the order of the matrix A.
!> N must be at least zero.
!>
A
!> A is COMPLEX array, dimension ( LDA, N ).
!> Before entry with UPLO = 'U' or 'u', the leading n by n
!> upper triangular part of the array A must contain the upper
!> triangular matrix and the strictly lower triangular part of
!> A is not referenced.
!> Before entry with UPLO = 'L' or 'l', the leading n by n
!> lower triangular part of the array A must contain the lower
!> triangular matrix and the strictly upper triangular part of
!> A is not referenced.
!> Note that when DIAG = 'U' or 'u', the diagonal elements of
!> A are not referenced either, but are assumed to be unity.
!>
lowkey the vibe here is: the half of the matrix you didn't declare? not referenced. doesn't exist. we simply do not look at it π and if DIAG = 'U', the diagonal itself is also not referenced β it's just assumed to be unity. ghost diagonal. iconic.
LDA
!> LDA is INTEGER
!> On entry, LDA specifies the first dimension of A as declared
!> in the calling (sub) program. LDA must be at least
!> max( 1, n ).
!>
X
!> X is COMPLEX array, dimension at least
!> ( 1 + ( n - 1 )*abs( INCX ) ).
!> Before entry, the incremented array X must contain the n
!> element vector x. On exit, X is overwritten with the
!> transformed vector x.
!>
heads up: X gets overwritten on exit. it's not a "returns a new vector" situation, it's a "your vector now" situation. π
INCX
!> INCX is INTEGER
!> On entry, INCX specifies the increment for the elements of
!> X. INCX must not be zero.
!>
π«Ά Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Further Details:
!>
!> Level 2 Blas routine.
!> The vector and matrix arguments are not referenced when N = 0, or M = 0
!>
!> -- Written on 22-October-1986.
!> Jack Dongarra, Argonne National Lab.
!> Jeremy Du Croz, Nag Central Office.
!> Sven Hammarling, Nag Central Office.
!> Richard Hanson, Sandia National Labs.
!>
Definition at line 146 of file ctrmv.f.
π¦ subroutine dtrmv (character uplo, character trans, character diag, integer n, double precision, dimension(lda,) a, integer lda, double precision, dimension() x, integer incx) π¦
π DTRMV
β Purpose:
!>
!> DTRMV performs one of the matrix-vector operations
!>
!> x := A*x, or x := A**T*x,
!>
!> where x is an n element vector and A is an n by n unit, or non-unit,
!> upper or lower triangular matrix.
!>
note: only two options here, bestie. no A**H for the real one β there's literally nothing to conjugate πΈ
π― Parameters
UPLO
!> UPLO is CHARACTER*1
!> On entry, UPLO specifies whether the matrix is 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.
!>
TRANS
!> TRANS is CHARACTER*1
!> On entry, TRANS specifies the operation to be performed as
!> follows:
!>
!> TRANS = 'N' or 'n' x := A*x.
!>
!> TRANS = 'T' or 't' x := A**T*x.
!>
!> TRANS = 'C' or 'c' x := A**T*x.
!>
yup, for the double precision version 'C' and 'T' both mean x := A**T*x. same destination, different spelling β¨
DIAG
!> DIAG is CHARACTER*1
!> On entry, DIAG specifies whether or not 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.
!>
N
!> N is INTEGER
!> On entry, N specifies the order of the matrix A.
!> N must be at least zero.
!>
A
!> A is DOUBLE PRECISION array, dimension ( LDA, N )
!> Before entry with UPLO = 'U' or 'u', the leading n by n
!> upper triangular part of the array A must contain the upper
!> triangular matrix and the strictly lower triangular part of
!> A is not referenced.
!> Before entry with UPLO = 'L' or 'l', the leading n by n
!> lower triangular part of the array A must contain the lower
!> triangular matrix and the strictly upper triangular part of
!> A is not referenced.
!> Note that when DIAG = 'U' or 'u', the diagonal elements of
!> A are not referenced either, but are assumed to be unity.
!>
LDA
!> LDA is INTEGER
!> On entry, LDA specifies the first dimension of A as declared
!> in the calling (sub) program. LDA must be at least
!> max( 1, n ).
!>
X
!> X is DOUBLE PRECISION array, dimension at least
!> ( 1 + ( n - 1 )*abs( INCX ) ).
!> Before entry, the incremented array X must contain the n
!> element vector x. On exit, X is overwritten with the
!> transformed vector x.
!>
INCX
!> INCX is INTEGER
!> On entry, INCX specifies the increment for the elements of
!> X. INCX must not be zero.
!>
π«Ά Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Further Details:
!>
!> Level 2 Blas routine.
!> The vector and matrix arguments are not referenced when N = 0, or M = 0
!>
!> -- Written on 22-October-1986.
!> Jack Dongarra, Argonne National Lab.
!> Jeremy Du Croz, Nag Central Office.
!> Sven Hammarling, Nag Central Office.
!> Richard Hanson, Sandia National Labs.
!>
Definition at line 146 of file dtrmv.f.
π¦ subroutine strmv (character uplo, character trans, character diag, integer n, real, dimension(lda,) a, integer lda, real, dimension() x, integer incx) π¦
π STRMV
β Purpose:
!>
!> STRMV performs one of the matrix-vector operations
!>
!> x := A*x, or x := A**T*x,
!>
!> where x is an n element vector and A is an n by n unit, or non-unit,
!> upper or lower triangular matrix.
!>
single precision edition, same serve, still only the two operations π
π― Parameters
UPLO
!> UPLO is CHARACTER*1
!> On entry, UPLO specifies whether the matrix is 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.
!>
TRANS
!> TRANS is CHARACTER*1
!> On entry, TRANS specifies the operation to be performed as
!> follows:
!>
!> TRANS = 'N' or 'n' x := A*x.
!>
!> TRANS = 'T' or 't' x := A**T*x.
!>
!> TRANS = 'C' or 'c' x := A**T*x.
!>
DIAG
!> DIAG is CHARACTER*1
!> On entry, DIAG specifies whether or not 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.
!>
N
!> N is INTEGER
!> On entry, N specifies the order of the matrix A.
!> N must be at least zero.
!>
A
!> A is REAL array, dimension ( LDA, N )
!> Before entry with UPLO = 'U' or 'u', the leading n by n
!> upper triangular part of the array A must contain the upper
!> triangular matrix and the strictly lower triangular part of
!> A is not referenced.
!> Before entry with UPLO = 'L' or 'l', the leading n by n
!> lower triangular part of the array A must contain the lower
!> triangular matrix and the strictly upper triangular part of
!> A is not referenced.
!> Note that when DIAG = 'U' or 'u', the diagonal elements of
!> A are not referenced either, but are assumed to be unity.
!>
LDA β and okay bestie, this is exactly where part 1 of the page dips out π the LDA breakdown for strmv is literally next, and it picks right back up in part 2. don't go anywhere π
okay bestie we're back, still deep in the strmv parameter tea βπ
and the list literally keeps going β she's thorough, we respect it π
LDAβLDA is INTEGER. On entry,LDAspecifies the first dimension ofAas declared in the calling (sub) program.LDAmust be at leastmax( 1, n ). no pressure but also: respect themax( 1, n )π«ΆXβX is REAL array, dimension at least( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented arrayXmust contain thenelement vectorx. On exit,Xis overwritten with the transformed vectorx. she gets overwritten, no cap, so don't go looking for your original values after πINCXβINCX is INTEGER. On entry,INCXspecifies the increment for the elements ofX.INCXmust not be zero. literally it must not be zero, that's the whole rule, do not test her π«
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
the whole squad showed up for the credit line, iconic behaviour honestly π
π₯ Further Details:
Level 2 Blas routine.The vector and matrix arguments are not referenced when N = 0, or M = 0
and then the historical receipts, preserved word for word because these people are legends:
-- Written on 22-October-1986.Jack Dongarra, Argonne National Lab.Jeremy Du Croz, Nag Central Office.Sven Hammarling, Nag Central Office.Richard Hanson, Sandia National Labs.
1986 bestie. nineteen eighty six. they were out here doing linear algebra before some of us were even a glimmer β¨ absolute main character energy π
Definition at line 146 of file strmv.f.
π¦ ztrmv β the COMPLEX*16 one, she's giving double precision complex fantasy π
subroutine ztrmv (character uplo, character trans, character diag, integer
n, complex*16, dimension(lda,*) a, integer lda, complex*16, dimension(*)
x, integer incx)
ZTRMV β say it with me: zee-tee-are-em-vee. she's the complex cousin and she ate π
πΈ Purpose:
ZTRMVperforms one of the matrix-vector operationsx := A*x, or x := A**T*x, or x := A**H*x,wherexis annelement vector andAis annbynunit, or non-unit, upper or lower triangular matrix.
okay so like β pick your adventure: plain A*x, transpose A**T*x, or conjugate-transpose A**H*x. three vibes, one subroutine, we love a multitasker π
β¨
π Parameters
UPLOβUPLO is CHARACTER*1. On entry,UPLOspecifies whether the matrix is 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.
TRANSβTRANS is CHARACTER*1. On entry,TRANSspecifies the operation to be performed as follows:TRANS = 'N' or 'n'βx := A*x.TRANS = 'T' or 't'βx := A**T*x.TRANS = 'C' or 'c'βx := A**H*x.
the 'C' is the conjugate-transpose one, iykyk π₯
DIAGβDIAG is CHARACTER*1. On entry,DIAGspecifies whether or notAis 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.
NβN is INTEGER. On entry,Nspecifies the order of the matrixA.Nmust be at least zero. zero is allowed bestie, negative is not πAβA is COMPLEX*16 array, dimension( LDA, N ). Before entry withUPLO = 'U' or 'u', the leadingnbynupper 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 leadingnbynlower 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.
so half of your array is literally just vibing, untouched, not referenced, living its best life π¦
LDAβLDA is INTEGER. On entry,LDAspecifies the first dimension ofAas declared in the calling (sub) program.LDAmust be at leastmax( 1, n ).XβX is COMPLEX*16 array, dimension at least( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented arrayXmust contain thenelement vectorx. On exit,Xis overwritten with the transformed vectorx. again: overwritten, gone, replaced, she's transformed now π«INCXβINCX is INTEGER. On entry,INCXspecifies the increment for the elements ofX.INCXmust not be zero. same rule, same energy, do not pass zero π«π
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π₯ Further Details:
Level 2 Blas routine.The vector and matrix arguments are not referenced when N = 0, or M = 0
-- Written on 22-October-1986.Jack Dongarra, Argonne National Lab.Jeremy Du Croz, Nag Central Office.Sven Hammarling, Nag Central Office.Richard Hanson, Sandia National Labs.
same date, same legends, different precision. consistency is so underrated honestly π
Definition at line 146 of file ztrmv.f.
β¨ Author
Generated automatically by Doxygen for LAPACK from the source code.
not a human bestie, a whole documentation generator did this. respect the automation π§ββοΈ
and that's the whole page, we made it π take a sip of water, go outside, touch a triangular matrix. this was LAPACK, Version 3.12.0, page trmv(3) β section 3 of the manual, served fresh, slay π
ππ
π¦ 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