SSPMV(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

πŸ’… SSPMV(3) β€” like, the packed symmetric matrix-vector girlie

okay so bestie, buckle up πŸ’– this one lives in the Library Functions Manual, and the actual source file is this absolute unit of a path:

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/BLAS/SRC/sspmv.f

yep. that's the whole NAME section. she's giving "my address is a CVS receipt" 😭 but we move.


✨ SYNOPSIS ✨

🫢 Functions/Subroutines

  • subroutine SSPMV (uplo, n, alpha, ap, x, incx, beta, y, incy) β€” literally her. that's the girl. SSPMV.

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

the full signature, no cap

subroutine SSPMV (character uplo, integer n, real alpha, real, dimension(*)
    ap, real, dimension(*) x, integer incx, real beta, real, dimension(*) y,
    integer incy)

SSPMV. iconic. πŸ‘‘

πŸŽ€ Purpose πŸŽ€

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

so basically: A is symmetric, n by n, and she's packed β€” like, no wasted zeros, only the triangle she needs. x and y are n-element vectors, alpha and beta are scalars doing their little scaling thing. slay. πŸ”₯


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

UPLO is a CHARACTER*1 and it's the vibe check for which triangle you're handing over πŸ’… upper ('U' or 'u') or lower ('L' or 'l'), and yes both cases work, she's not picky.

N

!> N is INTEGER !> On entry, N specifies the order of the matrix A. !> N must be at least zero. !>

N is INTEGER, it's the order of A, and it must be at least zero. love a non-negative queen. ✨

ALPHA

!> ALPHA is REAL !> On entry, ALPHA specifies the scalar alpha. !>

ALPHA is REAL and it's just the scalar alpha. that's it. that's the whole job. πŸŽ€

AP

!> AP is REAL 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. !>

AP is a REAL array, dimension at least ( ( n*( n + 1 ) )/2 ). πŸ“

  • with UPLO = 'U' or 'u': upper triangle, packed sequentially, column by column β†’ AP( 1 ) holds a( 1, 1 ), AP( 2 ) and AP( 3 ) hold a( 1, 2 ) and a( 2, 2 ), and so on.
  • with UPLO = 'L' or 'l': lower triangle, packed sequentially, column by column β†’ AP( 1 ) holds a( 1, 1 ), AP( 2 ) and AP( 3 ) hold a( 2, 1 ) and a( 3, 1 ), and so on.

see how it's the same but also completely different? iykyk 🧚

X

!> X is REAL array, dimension at least !> ( 1 + ( n - 1 )*abs( INCX ) ). !> Before entry, the incremented array X must contain the n !> element vector x. !>

X is a REAL array, dimension at least ( 1 + ( n - 1 )*abs( INCX ) ), and before entry the incremented array X must contain the n element vector x. she came prepared. πŸ¦‹

INCX

!> INCX is INTEGER !> On entry, INCX specifies the increment for the elements of !> X. INCX must not be zero. !>

INCX is INTEGER, it's the stride for X, and INCX must not be zero. like, don't do that. 🚫

BETA

!> BETA is REAL !> On entry, BETA specifies the scalar beta. When BETA is !> supplied as zero then Y need not be set on input. !>

BETA is REAL, it's the scalar beta, and here's the cute lil shortcut: when BETA is supplied as zero then Y need not be set on input. free real estate 🎁

Y

!> Y is REAL 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. !>

Y is a REAL array, 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 whole glow-up in place, periodt. πŸ’…

INCY

!> INCY is INTEGER !> On entry, INCY specifies the increment for the elements of !> Y. INCY must not be zero. !>

INCY is INTEGER, the stride for Y, and INCY must not be zero. same rules, bestie. 🫢


πŸ‘‘ Author πŸ‘‘

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

four whole institutions. the group chat of linear algebra. 🌈


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

okay so it's a Level 2 Blas routine, and important caveat: the vector and matrix arguments are not referenced when N = 0, or M = 0 β€” so like, she's not even looking at your arrays in that case, don't worry about it πŸ™ˆ

and she's vintage, fr fr: 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). absolute legends, all of them. ⭐

Definition at line 146 of file sspmv.f.


πŸ’– Author πŸ’–

Generated automatically by Doxygen for LAPACK from the source code.

(the second author section β€” first one was the humans, this one's the robot πŸ€–)


and that's the page, bestie πŸŽ€πŸ¦‹ sign-off time: this was LAPACK, Version 3.12.0, out of /home/abui...SRC/sspmv.f(3) β€” mwah, go multiply something symmetric πŸ’œβœ¨

πŸ“¦ where this page comes from