/home/abui...RC/zspmv.f(3)

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

πŸ’… ZSPMV β€” the packed-symmetric-matrix girlie πŸ’…

Okay bestie, welcome to the glow-up zone. This is the manual page for /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/zspmv.f, straight out of the LAPACK library functions squad. It's a Fortran file, it's iconic, and it does exactly one thing beautifully. Let's get into it πŸŽ€


✨ SYNOPSIS ✨

Functions/Subroutines πŸ¦‹

  • subroutine ZSPMV (uplo, n, alpha, ap, x, incx, beta, y, incy) β€” bestie, this one computes a matrix-vector product for complex vectors using a complex symmetric packed matrix. Periodt.

🌸 Function/Subroutine Documentation 🌸

subroutine ZSPMV β€” the full signature, no cap πŸ‘‘

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)

ZSPMV computes a matrix-vector product for complex vectors using a complex symmetric packed matrix. That's the whole vibe. πŸ’œ

🫢 Purpose

Okay so here's the actual math, and it's lowkey gorgeous:

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

Translation: A is n by n, symmetric, and it's living its best compact life in "packed form" β€” which is the aesthetic, honestly. 🧚


πŸŽ€ 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 UPLO is a CHARACTER*1 and it's basically asking you: upper girlie or lower girlie? ⬆️⬇️ Pick 'U' / 'u' and the upper triangular part of A gets supplied in AP. Pick 'L' / 'l' and it's the lower triangular part in AP. Either way it comes back to you unchanged on exit β€” she does not get altered by this whole ordeal, respect. πŸ’…

N

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

N is an INTEGER and on entry it specifies the order of the matrix A. Rule: N must be at least zero β€” no negative chaos allowed, we don't do that here. And yep, unchanged on exit. ⭐

ALPHA

!>          ALPHA is COMPLEX*16
!>           On entry, ALPHA specifies the scalar alpha.
!>           Unchanged on exit.

ALPHA is COMPLEX*16 and on entry it specifies the scalar alpha. That's it, that's the whole personality. Unchanged on exit. ✨

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.

AP is a COMPLEX*16 array, dimension at least ( ( N*( N + 1 ) )/2 ). It's the main character of this whole operation, ngl.

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. She literally just sits there being packed and perfect. πŸ“

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.

X is a 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 β€” she gives her energy and stays exactly as she was. πŸ¦‹

INCX

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

INCX is an INTEGER and on entry it specifies the increment for the elements of X. INCX must not be zero β€” hard pass on that, fr fr. Unchanged on exit. 🌈

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.

BETA is COMPLEX*16 and on entry it specifies the scalar beta. Important glow-up detail: when BETA is supplied as zero, then Y need not be set on input β€” she's flexible like that. 🧚 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.

Y is a COMPLEX*16 array, dimension at least ( 1 + ( N - 1 )*abs( INCY ) ). Before entry, the incremented array Y must contain the n element vector y. And on exit? Y is overwritten by the updated vector y β€” full transformation arc, we love a main character moment. 😭πŸ”₯

INCY

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

INCY is an INTEGER and on entry it specifies the increment for the elements of Y. INCY must not be zero β€” same energy as above, no zeros allowed bestie. πŸ™ˆ Unchanged on exit. ⭐


πŸ‘‘ Author πŸ‘‘

The absolute legends behind this:

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

Icons only, no notes. πŸ’…


πŸ“– Definition πŸ“–

Definition at line 150 of file zspmv.f. Yes bestie, that's where the magic is written. ✨


🌸 Sign-off 🌸

This page was generated automatically by Doxygen for LAPACK from the source code β€” so if you're obsessed, thank the automation pipeline too. This whole serve is courtesy of LAPACK, Version 3.12.0. πŸ’–πŸ«ΆπŸŽ€

Go forth and slay those matrix-vector products, iykyk. πŸ¦‹πŸŒˆπŸ‘‘

πŸ“¦ where this page comes from