ZHBMV(3)
π NAME
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/BLAS/SRC/zhbmv.f β bestie, this is the source file for ZHBMV, and we're reading it through the Library Functions Manual. Yes the path is that long, no we're not apologising for it π«Ά
β¨ SYNOPSIS
Functions/Subroutines
subroutine ZHBMV (uplo, n, k, alpha, a, lda, x, incx, beta, y, incy)β the whole vibe check in one line, honestlyZHBMV
π 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 β she's iconic, she's a Level 2 BLAS routine, and she multiplies a hermitian band matrix by a vector, periodt π
Purpose:
Okay so here's the tea, straight from the source comments:
!>
!> 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.
!>
That's it, that's the whole function. y gets the glow-up: scaled by beta, plus alpha times A times x. 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.
!>
Lowkey the most important flag β tell her which triangle of A you're handing over. Uppercase or lowercase, she does not care, she slays either way πΈ
N
!> N is INTEGER
!> On entry, N specifies the order of the matrix A.
!> N must be at least zero.
!>
The order of A. Must be at least zero. No negative girlies allowed π
ββοΈ
K
!> K is INTEGER
!> On entry, K specifies the number of super-diagonals of the
!> matrix A. K must satisfy 0 .le. K.
!>
Number of super-diagonals. Constraint is 0 .le. K β written in vintage Fortran notation, but bestie, it just means K is zero or more π
ALPHA
!> ALPHA is COMPLEX*16
!> On entry, ALPHA specifies the scalar alpha.
!>
The scalar alpha. She's a COMPLEX*16. She's 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.
!>
This is the big one, so let's break it down π§
- Dimension is
( LDA, N ). - With
UPLO = 'U'or'u': the leading( k + 1 )bynpart holds the upper triangular band part, column by column. Leading diagonal lives in row( k + 1 ), first super-diagonal starts at position2in rowk, and so on. The top leftkbyktriangle ofAis not referenced. - With
UPLO = 'L'or'l': the leading( k + 1 )bynpart holds the lower triangular band part, column by column. Leading diagonal lives in row1, first sub-diagonal starts at position1in row2, and so on. The bottom rightkbyktriangle ofAis not referenced.
Transfer the upper part from full storage to band storage like this:
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
And the lower part, same energy, different loops:
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 π β the imaginary parts of the diagonal elements need not be set, and are assumed to be zero. So don't stress about them, she's not checking.
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 ).
!>
First dimension of A as declared in the calling (sub) program. Must be at least ( k + 1 ). Do not skimp on LDA, she will notice π
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.
!>
Vector x, COMPLEX*16, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Fill her in before entry π¦
INCX
!> INCX is INTEGER
!> On entry, INCX specifies the increment for the elements of
!> X. INCX must not be zero.
!>
Increment for the elements of X. Must not be zero β that's a hard no π₯
BETA
!> BETA is COMPLEX*16
!> On entry, BETA specifies the scalar beta.
!>
The scalar beta. Also COMPLEX*16. Also iconic.
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.
!>
Vector y, dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Pre-entry: contains y. Post-exit: overwritten by the updated y. She came in as one thing and left as another, that's the transformation arc π
INCY
!> INCY is INTEGER
!> On entry, INCY specifies the increment for the elements of
!> Y. INCY must not be zero.
!>
Increment for Y. Also must not be zero. Same rule, same consequences π«
Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Shoutout to the whole committee, we stan a collaborative effort π
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.
!>
Some lore for you π β Level 2 BLAS routine. 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), and Richard Hanson (Sandia National Labs). Vintage queens, honestly π
Definition at line 186 of file zhbmv.f.
π Author
Generated automatically by Doxygen for LAPACK from the source code. (Not a human, just a very diligent little robot π)
Later, bestie π β this page came to you from LAPACK, Version 3.12.0, and it lives at /home/abui...SRC/zhbmv.f(3). Go forth and multiply your hermitian band matrices, mwah π
π¦ where this page comes from
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms