BLAS/SRC/dtbmv.f(3)

πŸ’– BLAS/SRC/dtbmv.f πŸ’–

okay bestie, gather round, because we're about to get into BLAS/SRC/dtbmv.f β€” yes it's a LAPACK file, yes it's Fortran, yes it's iconic, and yes you're gonna understand it. no cap. πŸ¦‹


✨ SYNOPSIS ✨

🌸 Functions/Subroutines

subroutine dtbmv (uplo, trans, diag, n, k, a, lda, x, incx)
    DTBMV

πŸ‘‘ Function/Subroutine Documentation πŸ‘‘

πŸŽ€ subroutine dtbmv

subroutine dtbmv (character uplo, character trans, character diag, integer
    n, integer k, double precision, dimension(lda,*) a, integer lda, double
    precision, dimension(*) x, integer incx)

DTBMV β€” that's the name, that's the whole vibe, we move.

⭐ Purpose

okay so here's the tea: DTBMV 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 band matrix, with ( k + 1 ) diagonals. that's it, that's the whole job. she's a band matrix girlie and she ate. πŸ’…

πŸ’œ Parameters

  • UPLO β€” bestie, this is CHARACTER*1. on entry, UPLO says whether the matrix is an upper or lower triangular matrix, like so:
    • UPLO = 'U' or 'u' β€” A is an upper triangular matrix.
    • UPLO = 'L' or 'l' β€” A is a lower triangular matrix.
  • TRANS β€” also CHARACTER*1. on entry, TRANS says which operation we're doing, fr fr:
    • TRANS = 'N' or 'n' β€” x := A*x.
    • TRANS = 'T' or 't' β€” x := A**T*x.
    • TRANS = 'C' or 'c' β€” x := A**T*x.
  • DIAG β€” CHARACTER*1 again, she's consistent. on entry, DIAG says whether or not A is unit triangular:
    • DIAG = 'U' or 'u' β€” A is assumed to be unit triangular.
    • DIAG = 'N' or 'n' β€” A is not assumed to be unit triangular.
  • N β€” INTEGER. on entry, N specifies the order of the matrix A. N must be at least zero. (zero is fine, zero is valid, we love a low-maintenance queen. πŸ™ˆ)
  • K β€” INTEGER. on entry with UPLO = 'U' or 'u', K specifies the number of super-diagonals of the matrix A. on entry with UPLO = 'L' or 'l', K specifies the number of sub-diagonals of the matrix A. K must satisfy 0 .le. K.
  • A β€” DOUBLE PRECISION array, dimension ( LDA, N ). okay this one's the long one, stay with me 🌈

before entry with UPLO = 'U' or 'u', the leading ( k + 1 ) by n part of the array A must contain the upper triangular band part of the matrix of coefficients, supplied column by column, with the leading diagonal of the matrix in row ( k + 1 ) of the array, the first super-diagonal starting at position 2 in row k, and so on. the top left k by k triangle of the array A is not referenced.

the following program segment will transfer an upper triangular band matrix from conventional full matrix storage to band storage:

      DO 20, J = 1, N
         M = K + 1 - J
         DO 10, I = MAX( 1, J - K ), J
            A( M + I, J ) = matrix( I, J )
   10    CONTINUE
   20 CONTINUE

before entry with UPLO = 'L' or 'l', the leading ( k + 1 ) by n part of the array A must contain the lower triangular band part of the matrix of coefficients, supplied column by column, with the leading diagonal of the matrix in row 1 of the array, the first sub-diagonal starting at position 1 in row 2, and so on. the bottom right k by k triangle of the array A is not referenced.

the following program segment will transfer a lower triangular band matrix from conventional full matrix storage to band storage:

      DO 20, J = 1, N
         M = 1 - J
         DO 10, I = J, MIN( N, J + K )
            A( M + I, J ) = matrix( I, J )
   10    CONTINUE
   20 CONTINUE
note that when DIAG = 'U' or 'u' the elements of the array A corresponding to the diagonal elements of the matrix are not referenced, but are assumed to be unity. so like, don't bother filling them in, she's not looking. πŸ’€
  • LDA β€” INTEGER. on entry, LDA specifies the first dimension of A as declared in the calling (sub) program. LDA must be at least ( k + 1 ).
  • X β€” 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. bye old x, hello new x. πŸ¦‹
  • INCX β€” 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 185 of file dtbmv.f. periodt. πŸ’…


🧚 Author 🧚

generated automatically by Doxygen for LAPACK from the source code. not me getting generated by a documentation tool, that's so main character energy honestly. ✨


and that's the whole page bestie!! thanks for reading, mwah, ily 🫢

Version 3.12.0 β€” Tue Nov 28 2023 12:08:41 β€” BLAS/SRC/dtbmv.f(3) πŸŽ€ no cap, that's the version and the date, slay.