SGBMV(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

πŸ’… NAME

okay so bestie, this whole page is literally the man page for /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/BLAS/SRC/sgbmv.f, and it lives in the Library Functions Manual β€” the file path up top is /home/abui...SRC/sgbmv.f(3), in case you were wondering. 🫢


✨ SYNOPSIS

πŸ’« Functions/Subroutines

  • subroutine SGBMV (trans, m, n, kl, ku, alpha, a, lda, x, incx, beta, y, incy) β€” SGBMV, that's her πŸ’…

πŸŽ€ Function/Subroutine Documentation

Here's the full signature, no cap, exactly as written:

subroutine SGBMV (character trans, integer m, integer n, integer kl, integer
    ku, real alpha, real, dimension(lda,*) a, integer lda, real,
    dimension(*) x, integer incx, real beta, real, dimension(*) y, integer
    incy)

SGBMV. iconic name, honestly.

🌸 Purpose

She does one of the matrix-vector operations, and the source says it like this:

!>
!> SGBMV  performs one of the matrix-vector operations
!>
!>    y := alpha*A*x + beta*y,   or   y := alpha*A**T*x + beta*y,
!>
!> where alpha and beta are scalars, x and y are vectors and A is an
!> m by n band matrix, with kl sub-diagonals and ku super-diagonals.
!>

so yeah β€” alpha and beta are scalars, x and y are vectors, and A is an m by n band matrix with kl sub-diagonals and ku super-diagonals. the way that's just linear algebra with main character energy 😭

🫢 Parameters

  • TRANS β€” this one is CHARACTER*1. on entry it tells you which operation is happening, and it's giving very specific:
    • TRANS = 'N' or 'n' β†’ y := alpha*A*x + beta*y.
    • TRANS = 'T' or 't' β†’ y := alpha*A**T*x + beta*y.
    • TRANS = 'C' or 'c' β†’ y := alpha*A**T*x + beta*y.
  • M β€” INTEGER. on entry, M is the number of rows of the matrix A. M must be at least zero. no negative row counts, bestie.
  • N β€” INTEGER. on entry, N is the number of columns of the matrix A. N must be at least zero. same vibe check. πŸ’–
  • KL β€” INTEGER. on entry, KL is the number of sub-diagonals of the matrix A. KL must satisfy 0 .le. KL.
  • KU β€” INTEGER. on entry, KU is the number of super-diagonals of the matrix A. KU must satisfy 0 .le. KU.
  • ALPHA β€” REAL. on entry, ALPHA is the scalar alpha. that's it, that's the whole job ✨
  • A β€” REAL array, dimension ( LDA, N ). before entry, the leading ( kl + ku + 1 ) by n part of the array A must contain the matrix of coefficients, supplied column by column. the leading diagonal of the matrix goes in row ( ku + 1 ) of the array, the first super-diagonal starts at position 2 in row ku, the first sub-diagonal starts at position 1 in row ( ku + 2 ), and so on. elements in A that do not correspond to elements in the band matrix β€” like the top left ku by ku triangle β€” are not referenced. lowkey important. πŸ¦‹

the source gives this exact program segment for moving a band matrix from conventional full matrix storage to band storage:

DO 20, J = 1, N
   K = KU + 1 - J
   DO 10, I = MAX( 1, J - KU ), MIN( M, J + KL )
      A( K + I, J ) = matrix( I, J )
10    CONTINUE
20 CONTINUE
  • LDA β€” INTEGER. on entry, LDA specifies the first dimension of A as declared in the calling (sub) program. LDA must be at least ( kl + ku + 1 ). do not play with her.
  • X β€” REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n', and at least ( 1 + ( m - 1 )*abs( INCX ) ) otherwise. before entry, the incremented array X must contain the vector x.
  • INCX β€” INTEGER. on entry, INCX specifies the increment for the elements of X. INCX must not be zero. periodt. πŸ’€
  • BETA β€” REAL. on entry, BETA is the scalar beta. when BETA is supplied as zero, then Y need not be set on input. cute shortcut, honestly.
  • Y β€” REAL array, dimension at least ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n', and at least ( 1 + ( n - 1 )*abs( INCY ) ) otherwise. before entry, the incremented array Y must contain the vector y. on exit, Y is overwritten by the updated vector y. and if either m or n is zero, then Y is not referenced and the function performs a quick return. she said "not today" and left 😭
  • INCY β€” INTEGER. on entry, INCY specifies the increment for the elements of Y. INCY must not be zero.

πŸ‘‘

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

those are the authors, and they ate. πŸ‘‘

🌈 Further Details

  • Level 2 Blas routine. (yes, capital B in the source, we respect it.)
  • The vector and matrix arguments are not referenced when N = 0, or M = 0.
  • Written on 22-October-1986 by:
    • Jack Dongarra, Argonne National Lab.
    • Jeremy Du Croz, Nag Central Office.
    • Sven Hammarling, Nag Central Office.
    • Richard Hanson, Sandia National Labs.

the 1986 of it all is honestly iconic. vintage fortran besties fr fr 🧚

⭐ Definition

Definition at line 186 of file sgbmv.f.

πŸŽ€ Author

Generated automatically by Doxygen for LAPACK from the source code. not a human, just doxygen doing her thing πŸ’…


and that's the whole page, bestie β€” LAPACK Version 3.12.0, sourced from /home/abui...SRC/sgbmv.f(3), signed off with love from the Library Functions Manual. slay. πŸ’–βœ¨

πŸ“¦ where this page comes from