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