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, and INCX/INCY absolutely 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