/home/abui...la_syamv.f(3)

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

πŸ’… NAME πŸ’…

okay so this is the Library Functions Manual page for /home/abui...la_syamv.f(3), and the actual file it’s documenting is:

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

that’s the whole NAME-section situation, bestie β€” SLA_SYAMV is the main character here. πŸ‘‘


πŸ¦‹ SYNOPSIS πŸ¦‹

🧚 Functions/Subroutines

  • subroutine SLA_SYAMV (uplo, n, alpha, a, lda, x, incx, beta, y, incy) β€” SLA_SYAMV computes a matrix-vector product using a symmetric indefinite matrix to calculate error bounds.

✨ Function/Subroutine Documentation ✨

here’s the full signature, copied exactly because we do not mess with Fortran names in this house:

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

SLA_SYAMV computes a matrix-vector product using a symmetric indefinite matrix to calculate error bounds. no cap. πŸ’–

🌸 Purpose 🌸

the mission statement is giving β€œmath but make it safe,” and the exact code-comment version is:

!>
!> SLA_SYAMV  performs the matrix-vector operation
!>
!>         y := alpha*abs(A)*abs(x) + beta*abs(y),
!>
!> where alpha and beta are scalars, x and y are vectors and A is an
!> n by n symmetric matrix.
!>
!> This function is primarily used in calculating error bounds.
!> To protect against underflow during evaluation, components in
!> the resulting vector are perturbed away from zero by (N+1)
!> times the underflow threshold.  To prevent unnecessarily large
!> errors for block-structure embedded in general matrices,
!>  zero components are not perturbed.  A zero
!> entry is considered  if all multiplications involved
!> in computing that entry have at least one zero multiplicand.
!>

so yeah: it does y := alpha*abs(A)*abs(x) + beta*abs(y), it’s mainly for error bounds, and it has that whole underflow-protection / zero-component situation going on. iconic, honestly. 😭✨

πŸŽ€ Parameters πŸŽ€

every parameter, no skipping, periodt. 🫢

🫧 UPLO

  • UPLO is INTEGER β€” on entry, UPLO specifies whether the upper or lower triangular part of the array A is to be referenced as follows:
    • UPLO = BLAS_UPPER: only the upper triangular part of A is to be referenced.
    • UPLO = BLAS_LOWER: only the lower triangular part of A is to be referenced.
  • Unchanged on exit.

🫧 N

  • N is INTEGER β€” on entry, N specifies the number of columns of the matrix A. N must be at least zero.
  • Unchanged on exit.

🫧 ALPHA

  • ALPHA is REAL β€” on entry, ALPHA specifies the scalar alpha.
  • Unchanged on exit.

🫧 A

  • A is REAL array, dimension ( LDA, n ) β€” before entry, the leading m by n part of the array A must contain the matrix of coefficients.
  • Unchanged on exit.
yes it says m by n in the original, and I’m keeping it exactly like that β€” character for character, bestie. 🫑

🫧 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 ).
  • Unchanged on exit.

🫧 X

  • X is REAL array, dimension ( 1 + ( n - 1 )*abs( INCX ) ) β€” before entry, the incremented array X must contain the vector x.
  • Unchanged on exit.

🫧 INCX

  • INCX is INTEGER β€” on entry, INCX specifies the increment for the elements of X. INCX must not be zero.
  • Unchanged on exit.

🫧 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.
  • Unchanged on exit.

🫧 Y

  • Y is REAL array, dimension ( 1 + ( n - 1 )*abs( INCY ) ) β€” before entry with BETA non-zero, the incremented array Y must contain the vector y. On exit, Y is overwritten by the updated vector y.

🫧 INCY

  • INCY is INTEGER β€” on entry, INCY specifies the increment for the elements of Y. INCY must not be zero.
  • Unchanged on exit.

πŸ’œ Author πŸ’œ

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

🌈 Further Details 🌈

the lore drop, exactly:

!>
!>  Level 2 Blas routine.
!>
!>  -- 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.
!>  -- Modified for the absolute-value product, April 2006
!>     Jason Riedy, UC Berkeley
!>

so it’s a Level 2 Blas routine, 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 β€” then modified for the absolute-value product in April 2006 by Jason Riedy, UC Berkeley. history slay. πŸ¦‹πŸ“œ

Definition at line 175 of file sla_syamv.f.


🧚 Author 🧚

Generated automatically by Doxygen for LAPACK from the source code.


okay bestie, that’s the whole page! πŸ’– Sign-off: LAPACK Version 3.12.0, /home/abui...la_syamv.f(3) β€” and the footer date slot is blank on this copy, so I’m not inventing one. date: not shown, no cap. πŸŽ€πŸ’…

πŸ“¦ where this page comes from