SRC/sla_syamv.f(3)

πŸ’… SRC/sla_syamv.f β€” the LAPACK vibe check

okay bestie so this is a page from the LAPACK Library Functions Manual, and it's literally all about sla_syamv β€” a Fortran subroutine that does a matrix-vector thing with absolute values so you can figure out error bounds. no cap, it's a whole mood. πŸ¦‹


✨ 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 🌸

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. iconic behavior honestly πŸ’œ

πŸ’– Purpose:

!>
!> 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 basically: it's y := alpha*abs(A)*abs(x) + beta*abs(y) and everything is absolute-valued, and there's this whole underflow-protection situation where components get nudged away from zero by (N+1) times the underflow threshold β€” except zero components stay un-perturbed, because a zero entry counts as zero if every multiplication that went into it had at least one zero multiplicand. periodt. 🫢


🌈 Parameters 🌈

  • UPLO β€” UPLO is INTEGER. On entry, UPLO tells us whether the upper or lower triangular part of the array A gets referenced, like this:
    • 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.
  • 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.
bestie pls note: INCX and INCY must not be zero. that's a hard no. πŸ’€

πŸ‘‘ Author

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

⭐ Further Details:

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

Level 2 BLAS routine, fr fr β€” written way back 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). a genuine glow-up moment ✨


Definition at line 175 of file sla_syamv.f.


πŸ’… Author (again, yes)

Generated automatically by Doxygen for LAPACK from the source code. not me being auto-generated πŸ™ˆ


that's the whole page bestie, you ate it up πŸ“

mwah πŸ’‹ β€” from the LAPACK gang, Version 3.12.0, dated SRC/sla_syamv.f(3). go forth and compute those error bounds, queen πŸ‘‘

πŸ“¦ where this page comes from