hbmv(3)

okay bestie, settle in β€” this is hbmv(3) from the Library Functions Manual, and she is long. Grab a lil snack πŸ“, we're doing this in parts, and part one starts right now.


✨ NAME ✨

hbmv β€” {hb,sb}mv: Hermitian/symmetric matrix-vector multiply 🫢


πŸ¦‹ SYNOPSIS πŸ¦‹

🌈 Functions 🌈

  • chbmv β€” subroutine chbmv (uplo, n, k, alpha, a, lda, x, incx, beta, y, incy) β€” she's the CHBMV one πŸ’…
  • dsbmv β€” subroutine dsbmv (uplo, n, k, alpha, a, lda, x, incx, beta, y, incy) β€” that's DSBMV πŸ¦‹
  • ssbmv β€” subroutine ssbmv (uplo, n, k, alpha, a, lda, x, incx, beta, y, incy) β€” SSBMV, iconic ⭐
  • zhbmv β€” subroutine zhbmv (uplo, n, k, alpha, a, lda, x, incx, beta, y, incy) β€” and ZHBMV πŸ‘‘

🌸 Detailed Description 🌸

ngl there is literally nothing in this section in the original β€” the actual lore lives down in Function Documentation. keep scrolling bestie 😭


πŸ‘‘ Function Documentation πŸ‘‘

πŸ’– subroutine chbmv πŸ’–

subroutine chbmv (character uplo, integer n, integer k, complex alpha,
    complex, dimension(lda,*) a, integer lda, complex, dimension(*) x,
    integer incx, complex beta, complex, dimension(*) y, integer incy)

CHBMV

πŸ”₯ Purpose πŸ”₯

okay so CHBMV performs the matrix-vector operation

y := alpha*A*x + beta*y,

where alpha and beta are scalars, x and y are n element vectors and A is an n by n hermitian band matrix, with k super-diagonals. she ate, no cap πŸ”₯

🧚 Parameters 🧚

  • UPLO β€” UPLO is CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the band matrix A is being supplied, as follows:
    • UPLO = 'U' or 'u' β€” the upper triangular part of A is being supplied.
    • UPLO = 'L' or 'l' β€” the lower triangular part of A is being supplied.
  • N β€” N is INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero.
  • K β€” K is INTEGER. On entry, K specifies the number of super-diagonals of the matrix A. K must satisfy 0 .le. K.
  • ALPHA β€” ALPHA is COMPLEX. On entry, ALPHA specifies the scalar alpha.
  • A β€” A is COMPLEX array, dimension ( LDA, N ).

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 hermitian matrix, 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 the upper triangular part of a hermitian 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 hermitian matrix, 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 the lower triangular part of a hermitian 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
heads up bestie: note that the imaginary parts of the diagonal elements need not be set and are assumed to be zero. πŸ’€ don't @ me, that's just how she is.
  • 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 ( k + 1 ).
  • X β€” X is COMPLEX array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the vector x.
  • INCX β€” INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero.
  • BETA β€” BETA is COMPLEX. On entry, BETA specifies the scalar beta.
  • Y β€” Y is COMPLEX array, dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the vector y. On exit, Y is overwritten by the updated vector y. 🫢
  • INCY β€” INCY is INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY 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 186 of file chbmv.f.


πŸ’œ subroutine dsbmv πŸ’œ

subroutine dsbmv (character uplo, integer n, integer k, double precision
    alpha, double precision, dimension(lda,*) a, integer lda, double
    precision, dimension(*) x, integer incx, double precision beta, double
    precision, dimension(*) y, integer incy)

DSBMV

πŸ”₯ Purpose πŸ”₯

DSBMV performs the matrix-vector operation

y := alpha*A*x + beta*y,

where alpha and beta are scalars, x and y are n element vectors and A is an n by n symmetric band matrix, with k super-diagonals. symmetric this time, not hermitian β€” she's a different girl, respect it πŸ’…

🧚 Parameters 🧚

  • UPLO β€” UPLO is CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the band matrix A is being supplied, as follows:
    • UPLO = 'U' or 'u' β€” the upper triangular part of A is being supplied.
    • UPLO = 'L' or 'l' β€” the lower triangular part of A is being supplied.
  • N β€” N is INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero.
  • K β€” K is INTEGER. On entry, K specifies the number of super-diagonals of the matrix A. K must satisfy 0 .le. K.
  • ALPHA β€” ALPHA is DOUBLE PRECISION. On entry, ALPHA specifies the scalar alpha.
  • A β€” A is DOUBLE PRECISION array, dimension ( LDA, N ).

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 symmetric matrix, 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 the upper triangular part of a symmetric 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 symmetric matrix, 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 the lower triangular part of a symmetric 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
  • 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 ( k + 1 ).
  • X β€” X is DOUBLE PRECISION array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the vector x.
  • INCX β€” INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero.
  • BETA β€” BETA is DOUBLE PRECISION. On entry, BETA specifies the scalar beta.
  • Y β€”

okay bestie that's where this part cuts off β€” the Y section continues in the next chunk, don't go anywhere πŸ’–

  • Y β€” bestie, Y is a DOUBLE PRECISION array, dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the vector y. On exit, Y is overwritten by the updated vector y β€” it gets a whole new vibe, no cap. ✨
  • INCY β€” INCY is INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. Literally do not pass zero, bestie. 🫢

πŸ‘‘ 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 183 of file dsbmv.f.


🌸 subroutine ssbmv 🌸

subroutine ssbmv (character uplo, integer n, integer k, real alpha, real,
    dimension(lda,*) a, integer lda, real, dimension(*) x, integer incx,
    real beta, real, dimension(*) y, integer incy)

✨ SSBMV ✨

🎯 Purpose 🎯

SSBMV performs the matrix-vector operation

   y := alpha*A*x + beta*y,

where alpha and beta are scalars, x and y are n element vectors and A is an n by n symmetric band matrix, with k super-diagonals. Slay. πŸ’…

πŸ’– Parameters πŸ’–

  • UPLO β€” UPLO is CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the band matrix A is being supplied, like this:
    • UPLO = 'U' or 'u' β€” the upper triangular part of A is being supplied.
    • UPLO = 'L' or 'l' β€” the lower triangular part of A is being supplied.
  • N β€” N is INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero. Zero is allowed, it's giving edge case realness. πŸ’€
  • K β€” K is INTEGER. On entry, K specifies the number of super-diagonals of the matrix A. K must satisfy 0 .le. K. Yes bestie, zero is valid.
  • ALPHA β€” ALPHA is REAL. On entry, ALPHA specifies the scalar alpha. Iconic scalar behavior. ✨
  • A β€” A is REAL array, dimension ( LDA, N ).

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 symmetric matrix, 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 the upper triangular part of a symmetric 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 symmetric matrix, 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 the lower triangular part of a symmetric 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
  • 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 ( k + 1 ). Respect the leading dimension, bestie. 🫢
  • X β€” X is REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the vector x.
  • INCX β€” INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. Again: not zero. 🚨
  • BETA β€” BETA is REAL. On entry, BETA specifies the scalar beta. Another scalar, another moment. πŸ’…
  • Y β€” Y is REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the vector y. On exit, Y is overwritten by the updated vector y.
  • INCY β€” INCY is INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. Do not test me on this. 😭

πŸ‘‘ 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 183 of file ssbmv.f.


πŸ’œ subroutine zhbmv πŸ’œ

subroutine zhbmv (character uplo, integer n, integer k, complex*16 alpha,
    complex*16, dimension(lda,*) a, integer lda, complex*16, dimension(*) x,
    integer incx, complex*16 beta, complex*16, dimension(*) y, integer incy)

🌈 ZHBMV 🌈

🎯 Purpose 🎯

ZHBMV performs the matrix-vector operation

   y := alpha*A*x + beta*y,

where alpha and beta are scalars, x and y are n element vectors and A is an n by n hermitian band matrix, with k super-diagonals. Hermitian and fabulous. πŸ¦‹

πŸ’– Parameters πŸ’–

  • UPLO β€” UPLO is CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the band matrix A is being supplied, like this:
    • UPLO = 'U' or 'u' β€” the upper triangular part of A is being supplied.
    • UPLO = 'L' or 'l' β€” the lower triangular part of A is being supplied.
  • N β€” N is INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero. Zero is still a valid order, periodt. ✨
  • K β€” K is INTEGER. On entry, K specifies the number of super-diagonals of the matrix A. K must satisfy 0 .le. K. Yes, exactly that.
  • ALPHA β€” ALPHA is COMPLEX*16. On entry, ALPHA specifies the scalar alpha. Complex scalar, complex main character energy. πŸ’…
  • A β€” A is COMPLEX*16 array, dimension ( LDA, N ).

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 hermitian matrix, 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 the upper triangular part of a hermitian 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 hermitian matrix, 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 the lower triangular part of a hermitian 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 the imaginary parts of the diagonal elements need not be set and are assumed to be zero. Important little detail, don't forget it. 🫢

  • 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 ( k + 1 ).
  • X β€” X is COMPLEX*16 array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the vector x.
  • INCX

picking right back up with the argument list, no recap needed πŸ’…

  • INCX β€” INCX is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. 🚨
  • BETA β€” BETA is COMPLEX*16. On entry, BETA specifies the scalar beta. πŸ’–
  • Y β€” Y is COMPLEX*16 array, dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the vector y. On exit, Y is overwritten by the updated vector y. (iconic overwrite behavior, no cap 🫢)
  • INCY β€” INCY is INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. 🚨

πŸ‘‘ Author πŸ‘‘

shoutout to the author squad, fr fr:

  • 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 186 of file zhbmv.f. πŸ“Œ

🧚 Author 🧚

and this part is just the auto-generated credit, bestie:

Generated automatically by Doxygen for LAPACK from the source code.


okay that’s the whole page, bestie β€” LAPACK Version 3.12.0, hbmv(3), straight from the source code. mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from