BLAS/SRC/zhbmv.f(3)

✨ BLAS/SRC/zhbmv.f(3) β€” the hermitian band matrix glow-up ✨

Okay so bestie, welcome to the manual page for BLAS/SRC/zhbmv.f(3) β€” it's giving Library Functions Manual energy and honestly? We're obsessed. This is the whole vibe of zhbmv, no cap.


🌸 SYNOPSIS 🌸

Functions/Subroutines

  • subroutine zhbmv (uplo, n, k, alpha, a, lda, x, incx, beta, y, incy) β€” ZHBMV. That's the whole thing. Iconic.

πŸ¦‹ Function/Subroutine Documentation πŸ¦‹

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. Literally the main character.

πŸ’– 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. !>

So basically you're doing a little matrix-vector moment: y := alpha*A*x + beta*y. The matrix A is a hermitian band matrix with k super-diagonals. Slay.


πŸŽ€ Parameters πŸŽ€

Okay bestie, here's the whole cast of characters β€” every single one, fr fr.

  • 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 β€” is INTEGER. On entry, N specifies the order of the matrix A. N must be at least zero. No negative energy allowed, periodt.
  • K β€” is INTEGER. On entry, K specifies the number of super-diagonals of the matrix A. K must satisfy 0 .le. K. So zero or more, bestie.
  • ALPHA β€” is COMPLEX*16. On entry, ALPHA specifies the scalar alpha. It's giving scalar realness.
  • A β€” is COMPLEX*16 array, dimension ( LDA, N ). Okay this one has lore, so pay attention:
    • 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. Like, they're just assumed zero. Don't come for me.
  • 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 minimum, bestie.
  • X β€” is COMPLEX*16 array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the vector x. She's ready.
  • INCX β€” is INTEGER. On entry, INCX specifies the increment for the elements of X. INCX must not be zero. Zero is not the vibe here.
  • BETA β€” is COMPLEX*16. On entry, BETA specifies the scalar beta. Another scalar, another slay.
  • 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. She gets a whole new look, honestly.
  • INCY β€” is INTEGER. On entry, INCY specifies the increment for the elements of Y. INCY must not be zero. Periodt.

πŸ‘‘ Author πŸ‘‘

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

The whole squad. We love to see it.


🌈 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. !>

So it's a Level 2 BLAS routine, and the vector and matrix arguments are literally not referenced when N = 0, or M = 0. And it was written on 22-October-1986 by Jack Dongarra, Jeremy Du Croz, Sven Hammarling, and Richard Hanson. Ancient icons, honestly. Respect the elders.

Definition at line 186 of file zhbmv.f.


🫢 Author (again, because Doxygen said so) 🫢

Generated automatically by Doxygen for LAPACK from the source code. Not me, not you β€” Doxygen did that. πŸ’…


Okay bestie, that's the whole page. No cap, every detail is here. Stay hermitian, stay banded, and remember: INCX and INCY must not be zero. Fr fr.

LAPACK Β· Version 3.12.0 Β· BLAS/SRC/zhbmv.f(3) β€” mwah, ily, bye! πŸ’–βœ¨πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from