BLAS/SRC/chbmv.f(3)
π NAME π
BLAS/SRC/chbmv.f β bestie, this is the source file for chbmv, the BLAS Level 2 routine that does a hermitian band matrixβvector multiply and honestly? She's iconic. π
β¨ SYNOPSIS β¨
π¦ Functions/Subroutines
subroutine chbmv (uplo, n, k, alpha, a, lda, x, incx, beta, y, incy)β CHBMV, the main character herself π
πΈ Function/Subroutine Documentation πΈ
π« 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. That's the name, no notes. π«Ά
π― Purpose
!>
!> 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.
!>
So likeβ¦ it takes your band matrix A, your vector x, scales by alpha, yeets it into y, and adds beta*y on top. Math but make it fashion. β¨
π§ 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.
!>
Translation: 'U'/'u' means you're handing over the upper triangle, 'L'/'l' means the lower triangle. Pick a side, bestie. π
N
!> N is INTEGER
!> On entry, N specifies the order of the matrix A.
!> N must be at least zero.
!>
Order of the matrix A. N has to 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.
!>
The number of super-diagonals of A. Constraint: 0 .le. K. Simple as. πΈ
ALPHA
!> ALPHA is COMPLEX
!> On entry, ALPHA specifies the scalar alpha.
!>
It's the scalar alpha, it's complex, it scales things. Slay. π₯
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
!>
!> Note that the imaginary parts of the diagonal elements need
!> not be set and are assumed to be zero.
!>
Okay this one's the big one, so let's break it down π«Ά β A is a COMPLEX array with dimension ( LDA, N ), and how you fill it depends on UPLO:
- With
UPLO = 'U'or'u': the leading( k + 1 )bynpart ofAholds the upper triangular band part of the hermitian matrix, column by column. Leading diagonal of the matrix lives in row( k + 1 )of the array, the first super-diagonal starts at position 2 in rowk, and so on. The top leftkbyktriangle ofAis not referenced β she's off duty. π - With
UPLO = 'L'or'l': the leading( k + 1 )bynpart ofAholds the lower triangular band part, column by column. Leading diagonal sits in row 1, first sub-diagonal starts at position 1 in row 2, and so on. The bottom rightkbyktriangle ofAis not referenced either. - And important: the imaginary parts of the diagonal elements don't need to be set β they're assumed to be zero. Free pass, no cap. β¨
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. LDA must be at least ( k + 1 ). Respect the minimum, bestie. π
X
!> X is COMPLEX array, dimension at least
!> ( 1 + ( n - 1 )*abs( INCX ) ).
!> Before entry, the incremented array X must contain the
!> vector x.
!>
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.
!>
The increment for the elements of X. And INCX must not be zero β like, genuinely, don't. π
BETA
!> BETA is COMPLEX
!> On entry, BETA specifies the scalar beta.
!>
Scalar beta, complex, that's the whole vibe check. π
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.
!>
Dimension at least ( 1 + ( n - 1 )*abs( INCY ) ). Before entry it holds the vector y; on exit, Y is overwritten by the updated vector y. She gets a glow-up in place. π
INCY
!> INCY is INTEGER
!> On entry, INCY specifies the increment for the elements of
!> Y. INCY must not be zero.
!>
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. π«Ά
π 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.
!>
Level 2 BLAS routine, bestie. Note that the vector and matrix arguments are not referenced when N = 0, or M = 0 β iykyk. π«
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). Literal legends, we stan. π
π Definition at line 186 of file chbmv.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code. Not me writing this by hand, the robots did it. π€β¨
That's the whole page, bestie β LAPACK, Version 3.12.0, BLAS/SRC/chbmv.f(3). Go forth and multiply (your matrices). π¦ππ
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms