/home/abui...la_heamv.f(3)
π NAME
okay so bestie, this file is literally /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/zla_heamv.f β that's the whole name, yes, it's giving "my parents named me after the entire family tree" π. It's a page from the Library Functions Manual, and it's all about one iconic little Fortran subroutine. Buckle up. π¦
β¨ SYNOPSIS
Functions/Subroutines
subroutine ZLA_HEAMV (uplo, n, alpha, a, lda, x, incx, beta, y, incy)β not me introducing the whole squad at once π this one computes a matrix-vector product using a Hermitian indefinite matrix to calculate error bounds. yes, "error bounds" β she's a precision queen, she's behind the scenes, she's the main character of numerical safety fr fr π
π«Ά Function/Subroutine Documentation
subroutine ZLA_HEAMV (integer uplo, integer n, double precision alpha, complex*16, dimension( lda, * ) a, integer lda, complex*16, dimension( * ) x, integer incx, double precision beta, double precision, dimension( * ) y, integer incy)
ZLA_HEAMV computes a matrix-vector product using a Hermitian indefinite matrix to calculate error bounds. that's her whole job description and she ate π
subroutine ZLA_HEAMV (integer uplo, integer n, double precision alpha,
complex*16, dimension( lda, * ) a, integer lda, complex*16, dimension( *
) x, integer incx, double precision beta, double precision, dimension( *
) y, integer incy)
πΈ Purpose
okay so here's the actual tea, straight from the source comments:
!>
!> ZLA_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.
!>
highkey the whole personality is in that last bit: she nudges tiny values away from zero by (N+1) times the underflow threshold so nothing underflows on her watch π§, BUT if an entry is genuinely a zero (meaning every multiplication that built it had at least one zero multiplicand), she leaves it exactly zero. respectful. considerate. iconic. β¨
π Parameters
UPLOβUPLOisINTEGER. on entry,UPLOtells her which triangle ofAto even look at:UPLO = BLAS_UPPERβ only the upper triangular part ofAis to be referenced.UPLO = BLAS_LOWERβ only the lower triangular part ofAis to be referenced.- unchanged on exit, as always π
NβNisINTEGER. on entry,Nspecifies the number of columns of the matrixA.Nmust be at least zero. unchanged on exit. no cap. π¦ALPHAβALPHAisDOUBLE PRECISION. on entry,ALPHAspecifies the scalar alpha. unchanged on exit. she's your hype coefficient fr πAβAisCOMPLEX*16array, dimension( LDA, n ). before entry, the leadingmbynpart of the arrayAmust contain the matrix of coefficients. unchanged on exit. (yes it saysmbyn, we're just reporting the vibes as written π)LDAβLDAisINTEGER. on entry,LDAspecifies the first dimension ofAas declared in the calling (sub) program.LDAmust be at leastmax( 1, n ). unchanged on exit. don't skimp on your leading dimension bestie, she WILL notice πXβXisCOMPLEX*16array, dimension at least( 1 + ( n - 1 )*abs( INCX ) ). before entry, the incremented arrayXmust contain the vector x. unchanged on exit. πINCXβINCXisINTEGER. on entry,INCXspecifies the increment for the elements ofX.INCXmust not be zero. unchanged on exit. zero stride is a crime and she will not be part of it π₯BETAβBETAisDOUBLE PRECISION. on entry,BETAspecifies the scalar beta. whenBETAis supplied as zero thenYneed not be set on input. unchanged on exit. cute little shortcut, yw πYβYisDOUBLE PRECISIONarray, dimension( 1 + ( n - 1 )*abs( INCY ) ). before entry withBETAnon-zero, the incremented arrayYmust contain the vector y. on exit,Yis overwritten by the updated vector y. yes she's destructive, she's a whole vibe, back up your data πINCYβINCYisINTEGER. on entry,INCYspecifies the increment for the elements ofY.INCYmust not be zero. unchanged on exit. same rule, same energy β¨
ok quick reality check bestie:XisCOMPLEX*16butYis plainDOUBLE PRECISION, andALPHA/BETAareDOUBLE PRECISIONtoo. that's literally what the page says, don't come for me π
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
the whole group project carried itself, we love to see it π«Ά
π 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
!>
so she's a Level 2 BLAS routine, originally 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.) β vintage!!! π and then modified for the absolute-value product in April 2006 by Jason Riedy, UC Berkeley. a glow-up decades in the making, periodt π
Definition at line 176 of file zla_heamv.f. go look, she's literally right there β
π Author
Generated automatically by Doxygen for LAPACK from the source code. not a human, just a very diligent little robot doing its thing π€π
and that's the whole page bestie!! π source/version tea for the sign-off: this is LAPACK, Version 3.12.0, and the page is /home/abui...la_heamv.f(3) β go forth and compute those error bounds responsibly, mwah ππ¦β¨
π¦ where this page comes from
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms