BLAS/SRC/strmv.f(3)
π BLAS/SRC/strmv.f(3) β Library Functions Manual π¦
okay so bestie, we're in BLAS/SRC/strmv.f territory and honestly? this one's a whole vibe. it's a Level 2 BLAS girlie and she's about to multiply a triangular matrix by a vector, no cap. let's get into it β¨
πΈ NAME πΈ
BLAS/SRC/strmv.f β literally the file, that's the name, we love a self-explanatory icon π
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine strmv (uplo, trans, diag, n, a, lda, x, incx)β STRMV π«Ά
π Function/Subroutine Documentation π
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.
!>
so yeah β she takes your triangular matrix and she does the math. either x := A*x or x := A**T*x, your choice, main character energy all around π
π 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.
!>
which triangle are we working with, bestie? 'U'/'u' = upper, 'L'/'l' = lower. pick one, lowercase or uppercase, she's not picky π
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.
!>
the operation selector! 'N'/'n' gives you x := A*x, and both 'T'/'t' and 'C'/'c' give you x := A**T*x. yes, 'T' and 'C' do the exact same thing here β iconic behavior, no notes π
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.
!>
is the diagonal all ones or not? 'U'/'u' means A is assumed unit triangular, 'N'/'n' means it's not assumed unit triangular. simple as π«Ά
N
!> N is INTEGER
!> On entry, N specifies the order of the matrix A.
!> N must be at least zero.
!>
the order of matrix A. N must be at least zero β zero is allowed, negative is not, we do not do negative here π«
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.
!>
the matrix itself, dimension ( LDA, N ). with UPLO = 'U'/'u' you fill the leading n by n upper triangular part and the strictly lower triangular part is not referenced (she's ignoring that half, respectfully). with UPLO = 'L'/'l' it's the opposite β leading n by n lower triangular part, strictly upper triangular part not referenced.
and heads up bestie: when DIAG = 'U'/'u', the diagonal elements of A are not referenced either, they're just assumed to be unity. so don't stress about writing them π
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 ).
!>
leading dimension of A as declared in the calling (sub) program. must be at least max( 1, n ) β yes, including that 1, she's being safe π§
X
!> X is REAL 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.
!>
the vector! dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). before entry it holds the n element vector x, and on exit X is overwritten with the transformed vector x. she ate and left no crumbs π₯
INCX
!> INCX is INTEGER
!> On entry, INCX specifies the increment for the elements of
!> X. INCX must not be zero.
!>
the stride for X's elements. and INCX must not be zero β like actually, do not do that π
π 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.
!>
Level 2 BLAS routine, periodt. the vector and matrix arguments are not referenced when N = 0, or M = 0 (that's exactly what it says, we're keeping it exactly as it says π). written on 22-October-1986 by Jack Dongarra (Argonne National Lab), Jeremy Du Croz (Nag Central Office), Sven Hammarling (Nag Central Office), and Richard Hanson (Sandia National Labs) β literal legends, we stan π
π Definition at line 146 of file strmv.f. π
π¦ Author π¦
Generated automatically by Doxygen for LAPACK from the source code. (the robots did this part, slay π€β¨)
ok that's the whole page bestie, every flag, every !> line, every last detail β nothing skipped, nothing invented π
LAPACK Β· Version 3.12.0 Β· BLAS/SRC/strmv.f(3) β mwah, go forth and multiply your triangular matrices responsibly ππ
π¦ 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