SSYMV(3)

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

okay so this is ssymv.f(3) from the Library Functions Manual, and honestly? it's kind of iconic. it's the page for the BLAS routine SSYMV, a level-2 BLAS girlie who does one job and does it flawlessly. let's get into it πŸ’…


🌸 NAME 🌸

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

that's the whole name section. it's literally just a file path. she's lowkey serving "government name" energy 😭 but we respect it.


✨ SYNOPSIS ✨

Functions/Subroutines

subroutine SSYMV (uplo, n, alpha, a, lda, x, incx, beta, y, incy)
    SSYMV

that's the whole cast list. no plot twists, no missing characters. 🫢


πŸ”₯ Function/Subroutine Documentation πŸ”₯

subroutine SSYMV (character uplo, integer n, real alpha, real, dimension(lda,*) a, integer lda, real, dimension(*) x, integer incx, real beta, real, dimension(*) y, integer incy)

SSYMV

Purpose:

girl. listen. here's the entire personality:

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

she takes a symmetric matrix A, a vector x, and a vector y, and she gives you y := alpha*A*x + beta*y. that's it. that's the whole gig. main character energy honestly β€” she knows exactly what she's about and she does NOT need a side quest. πŸ‘‘


πŸŽ€ Parameters πŸŽ€

okay bestie, here's everyone in the group chat. each one has a role and you WILL respect it.

UPLO

!>          UPLO is CHARACTER*1
!>           On entry, UPLO specifies whether the upper or lower
!>           triangular part of the array A is to be referenced as
!>           follows:
!>
!>              UPLO = 'U' or 'u'   Only the upper triangular part of A
!>                                  is to be referenced.
!>
!>              UPLO = 'L' or 'l'   Only the lower triangular part of A
!>                                  is to be referenced.
!>

so UPLO decides which half of A gets invited to the party. 'U' or 'u'? only the upper triangular part gets referenced. 'L' or 'l'? only the lower triangular part. the other half is literally not even looked at. she's not nosy. πŸ™ˆ

N

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

N is the order of the matrix A. and it must be at least zero. no negatives, we don't do that here. πŸ’€

ALPHA

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

ALPHA is REAL and it's the scalar alpha. she's a simple girl, she scales things. that's her whole thing. ⭐

A

!>          A is REAL array, dimension ( LDA, N )
!>           Before entry with  UPLO = 'U' or 'u', the leading n by n
!>           upper triangular part of the array A must contain the upper
!>           triangular part of the symmetric matrix and the strictly
!>           lower triangular part of A is not referenced.
!>           Before entry with UPLO = 'L' or 'l', the leading n by n
!>           lower triangular part of the array A must contain the lower
!>           triangular part of the symmetric matrix and the strictly
!>           upper triangular part of A is not referenced.
!>

A is a REAL array with dimension ( LDA, N ), and here's the vibe check:

  • with UPLO = 'U' or 'u', the leading n by n upper triangular part has to contain the upper triangular part of the symmetric matrix, and the strictly lower triangular part of A is not referenced. ignore her. 🚫
  • with UPLO = 'L' or 'l', the leading n by n lower triangular part has to contain the lower triangular part of the symmetric matrix, and the strictly upper triangular part of A is not referenced. same deal, opposite corner. ✨

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
!>           max( 1, n ).
!>

LDA is the first dimension of A as declared in the calling (sub) program. and it must be at least max( 1, n ). that's a hard requirement, not a suggestion. 🫢

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 ) ). before entry, the incremented array X must contain the n element vector x. she comes pre-loaded, we don't build her from scratch. πŸ“

INCX

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

INCX is the increment for the elements of X. and INCX must not be zero. zero is NOT allowed. periodt. πŸ’€

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 and it's the scalar beta. here's the fun part: when BETA is supplied as zero, then Y need not be set on input. she literally doesn't care what was in there. no baggage. we love a clean slate. 🌈

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, the incremented array Y must contain the n element vector y. on exit? Y gets overwritten by the updated vector y. she transforms and there's no going back. glow-up arc fr. πŸ¦‹

INCY

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

INCY is the increment for the elements of Y. and yes, INCY must not be zero either. both increments get the same rule, because we're fair and consistent. πŸ’œ


πŸ‘‘ Author πŸ‘‘

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

four institutions, one legend. the collab we didn't know we needed. 🫢


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

bestie, she is a Level 2 Blas routine. and here's a little detail worth knowing: the vector and matrix arguments are not referenced when N = 0, or M = 0. nothing gets touched. nothing gets read. she stays in her lane. πŸ™ˆ

and the lore?? written on 22-October-1986 by:

  • Jack Dongarra, Argonne National Lab.
  • Jeremy Du Croz, Nag Central Office.
  • Sven Hammarling, Nag Central Office.
  • Richard Hanson, Sandia National Labs.

1986!! she's been serving for decades and she's still relevant. that's not a phase, that's a legacy. πŸ‘‘


πŸ“ Definition at line 151 of file ssymv.f.


Author

Generated automatically by Doxygen for LAPACK from the source code.

(not a human, not a vibe curator β€” just Doxygen doing its little autogenerated thing. we thank her for her service 🧚)


and that's the whole page, bestie! ✨ cute little sign-off for you: this was LAPACK, Version 3.12.0, and the source file is /home/abui...SRC/ssymv.f(3). now go forth and multiply your matrices πŸ’–πŸŒΈπŸŽ€

πŸ“¦ where this page comes from