SRC/zspmv.f(3)
π SRC/zspmv.f β from the Library Functions Manual β¨
okay so bestie, buckle up, because this is a single Fortran file's manpage and it ate. It lives in SRC/zspmv.f and it's the whole documentation vibe for one glorious BLAS routine. Let's get into it π«Ά
πΈ NAME πΈ
SRC/zspmv.f β literally just the filename, bestie, that's the name, that's the assignment π
β¨ SYNOPSIS β¨
Functions/Subroutines π
subroutine zspmv (uplo, n, alpha, ap, x, incx, beta, y, incy)
ZSPMV computes a matrix-vector product for complex vectors using a complex symmetric packed matrix β yes that's the whole vibe, no cap π
π Function/Subroutine Documentation π
subroutine zspmv (character uplo, integer n, complex*16 alpha, complex*16,
dimension( * ) ap, complex*16, dimension( * ) x, integer incx,
complex*16 beta, complex*16, dimension( * ) y, integer incy)
Again, for the people in the back: ZSPMV computes a matrix-vector product for complex vectors using a complex symmetric packed matrix π
π¦ Purpose π¦
okay so here's the tea, here's what it actually does:
!>
!> ZSPMV 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 matrix, supplied in packed form.
!>
lowkey iconic, right? It's giving "I do one thing and I do it beautifully" π
π Parameters π
UPLO
!> UPLO is CHARACTER*1
!> On entry, UPLO specifies whether the upper or lower
!> triangular part of the matrix A is supplied in the packed
!> array AP as follows:
!>
!> UPLO = 'U' or 'u' The upper triangular part of A is
!> supplied in AP.
!>
!> UPLO = 'L' or 'l' The lower triangular part of A is
!> supplied in AP.
!>
!> Unchanged on exit.
!>
so you tell it 'U'/'u' for the upper triangle, 'L'/'l' for the lower triangle β and bestie, it comes out unchanged π
N
!> N is INTEGER
!> On entry, N specifies the order of the matrix A.
!> N must be at least zero.
!> Unchanged on exit.
!>
the order of A, fr fr. Must be at least zero β don't come in here with negative chaos π Unchanged on exit.
ALPHA
!> ALPHA is COMPLEX*16
!> On entry, ALPHA specifies the scalar alpha.
!> Unchanged on exit.
!>
that's the scalar alpha from the equation, she's a COMPLEX*16, and she stays exactly as she arrived π
AP
!> AP is COMPLEX*16 array, dimension at least
!> ( ( N*( N + 1 ) )/2 ).
!> Before entry, with UPLO = 'U' or 'u', the array AP must
!> contain the upper triangular part of the symmetric matrix
!> packed sequentially, column by column, so that AP( 1 )
!> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
!> and a( 2, 2 ) respectively, and so on.
!> Before entry, with UPLO = 'L' or 'l', the array AP must
!> contain the lower triangular part of the symmetric matrix
!> packed sequentially, column by column, so that AP( 1 )
!> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
!> and a( 3, 1 ) respectively, and so on.
!> Unchanged on exit.
!>
okay this is the big one, the main character of the parameter list π DimensiΓ³n at least ( ( N*( N + 1 ) )/2 ).
With UPLO = 'U' or 'u': upper triangular part, packed sequentially, column by column, so AP( 1 ) holds a( 1, 1 ), then AP( 2 ) and AP( 3 ) hold a( 1, 2 ) and a( 2, 2 ) respectively, and so on β¨
With UPLO = 'L' or 'l': lower triangular part, again packed sequentially, column by column, so AP( 1 ) holds a( 1, 1 ), then AP( 2 ) and AP( 3 ) hold a( 2, 1 ) and a( 3, 1 ) respectively, and so on β¨
Unchanged on exit β she does not get touched, periodt π
X
!> X is COMPLEX*16 array, dimension at least
!> ( 1 + ( N - 1 )*abs( INCX ) ).
!> Before entry, the incremented array X must contain the N-
!> element vector x.
!> Unchanged on exit.
!>
dimension at least ( 1 + ( N - 1 )*abs( INCX ) ), and before entry this incremented array must contain the N-element vector x. Unchanged on exit, she's just here to be read π¦
INCX
!> INCX is INTEGER
!> On entry, INCX specifies the increment for the elements of
!> X. INCX must not be zero.
!> Unchanged on exit.
!>
the stride for X's elements. INCX must not be zero. π¨ that's a hard no, bestie, zero stride is not it.
BETA
!> BETA is COMPLEX*16
!> On entry, BETA specifies the scalar beta. When BETA is
!> supplied as zero then Y need not be set on input.
!> Unchanged on exit.
!>
the other scalar! And here's the little shortcut: when BETA is supplied as zero then Y need not be set on input π Unchanged on exit.
Y
!> Y is COMPLEX*16 array, dimension at least
!> ( 1 + ( N - 1 )*abs( INCY ) ).
!> Before entry, the incremented array Y must contain the n
!> element 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 n element vector y. And 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.
!> Unchanged on exit.
!>
Y's stride. INCY must not be zero π¨ same energy as INCX, no zeros allowed.
π Author π
slay, the whole squad showed up for this one:
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
β Definition β
Definition at line 150 of file zspmv.f. go look at it, it's right there π
πΊ Author (the meta one) πΊ
Generated automatically by Doxygen for LAPACK from the source code. not a human, just a robot doing its little documentation dance π€π«Ά
π a friendly little reminder: this routine is pure BLAS energy β packed symmetric complex matrix, one product, no drama, andINCX/INCYabsolutely cannot be zero, iykyk.
and that's the whole page, bestie β LAPACK, Version 3.12.0, straight out of SRC/zspmv.f(3). mwah πβ¨
π¦ 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