SRC/dla_syamv.f(3)
π SRC/dla_syamv.f(3) β Library Functions Manual π
okay bestie, sit down, hydrate, and let me tell you about SRC/dla_syamv.f from the Library Functions Manual. this one is a Fortran file and it's lowkey iconic. β¨
β¨ NAME β¨
SRC/dla_syamv.f β no cap, that's literally the whole name, she's mysterious like that π¦
πΈ SYNOPSIS πΈ
Functions/Subroutines
subroutine dla_syamv (uplo, n, alpha, a, lda, x, incx, beta, y, incy)β DLA_SYAMV computes a matrix-vector product using a symmetric indefinite matrix to calculate error bounds. she's giving math AND she's giving error bounds, main character energy fr fr π
π«Ά Function/Subroutine Documentation π«Ά
subroutine dla_syamv (integer uplo, integer n, double precision alpha, double precision, dimension( lda, * ) a, integer lda, double precision, dimension( * ) x, integer incx, double precision beta, double precision, dimension( * ) y, integer incy)
DLA_SYAMV computes a matrix-vector product using a symmetric indefinite matrix to calculate error bounds. that's her whole job and she does it slayfully π
Purpose:
!>
!> DLA_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.
!>
like, the way she computes y := alpha*abs(A)*abs(x) + beta*abs(y)? obsessed. π she's mostly out here calculating error bounds, and to keep underflow from ruining the vibe she perturbs components in the resulting vector away from zero by (N+1) times the underflow threshold β but bestie, zero components are not perturbed, because that would cause unnecessarily large errors for block-structure embedded in general matrices. a zero entry counts as zero if every multiplication involved in computing that entry has at least one zero multiplicand. iykyk π§
β Parameters β
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.
!>
so UPLO is an INTEGER and on entry it picks which triangle of A we're looking at: UPLO = BLAS_UPPER means only the upper triangular part of A gets referenced, and UPLO = BLAS_LOWER means only the lower triangular part of A gets referenced. she comes in unchanged on exit, queen of consistency π
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.
!>
N is an INTEGER, and on entry it's the number of columns of the matrix A. N must be at least zero (respect the boundary π«Ά). unchanged on exit.
ALPHA
!> ALPHA is DOUBLE PRECISION .
!> On entry, ALPHA specifies the scalar alpha.
!> Unchanged on exit.
!>
ALPHA is DOUBLE PRECISION β¨ on entry it's the scalar alpha, and she stays unchanged on exit, periodt.
A
!> A is DOUBLE PRECISION 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.
!>
A is a DOUBLE PRECISION array with 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 bestie, the original really does saymbynhere. i'm not fixing it, i'm just reporting the facts. π
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.
!>
LDA is an INTEGER. on entry it's the first dimension of A as declared in the calling (sub) program, and it must be at least max( 1, n ) β no shortcuts, she checks. unchanged on exit.
X
!> X is DOUBLE PRECISION array, dimension
!> ( 1 + ( n - 1 )*abs( INCX ) )
!> Before entry, the incremented array X must contain the
!> vector x.
!> Unchanged on exit.
!>
X is a DOUBLE PRECISION array with 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.
!>
INCX is an INTEGER, the increment for the elements of X. INCX must not be zero β like, do not do that, that's not the vibe π unchanged on exit.
BETA
!> BETA is DOUBLE PRECISION .
!> 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 DOUBLE PRECISION. on entry it's the scalar beta, and here's the cute part: when BETA is supplied as zero then Y need not be set on input π unchanged on exit.
Y
!> Y is DOUBLE PRECISION 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.
!>
Y is a DOUBLE PRECISION array with 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 β she gets a whole glow-up π₯
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, the increment for the elements of Y. INCY must not be zero β same rule, same energy π unchanged on exit.
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
the whole squad showed up for this one, we love a collab π
π¦ 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
!>
she's a Level 2 Blas routine, and her lore goes way back: 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). ancestral icons honestly β
π Definition
Definition at line 175 of file dla_syamv.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code. (yes she was auto-generated and she still ate π )
okay that's the whole page bestie, you're caught up π«Ά
LAPACK Β· Version 3.12.0 Β· SRC/dla_syamv.f(3) β mwah, go forth and compute your error bounds, ily πβ¨π
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms