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

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

πŸŽ€ NAME πŸŽ€

so the full name of this file is literally this whole path, bestie, no cap:

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/TESTING/LIN/csyt01_aa.f

it's a Library Functions Manual page, and it's all about the CSYT01_AA subroutine πŸ¦‹


✨ SYNOPSIS ✨

Functions/Subroutines

  • subroutine CSYT01_AA (uplo, n, a, lda, afac, ldafac, ipiv, c, ldc, rwork, resid) β€” this is the vibe check entry point, aka CSYT01

πŸ’œ Function/Subroutine Documentation πŸ’œ

here's the full signature so you can see exactly what you're feeding it, periodt:

subroutine CSYT01_AA (character uplo, integer n, complex, dimension( lda, * ) a, integer lda, complex, dimension( ldafac, * ) afac, integer ldafac, integer, dimension( * ) ipiv, complex, dimension( ldc, * ) c, integer ldc, real, dimension( * ) rwork, real resid)

and that one's called CSYT01 🫢

🌸 Purpose 🌸

okay so this is the whole point of the thing β€” read it carefully because it's giving main character:

!>
!> CSYT01 reconstructs a hermitian indefinite matrix A from its
!> block L*D*L' or U*D*U' factorization and computes the residual
!>    norm( C - A ) / ( N * norm(A) * EPS ),
!> where C is the reconstructed matrix and EPS is the machine epsilon.
!>

tl;dr it rebuilds A out of the factorization and then checks how close the rebuild came. iconic behavior honestly πŸ’…

🌈 Parameters 🌈

UPLO

!>          UPLO is CHARACTER*1
!>          Specifies whether the upper or lower triangular part of the
!>          hermitian matrix A is stored:
!>          = 'U':  Upper triangular
!>          = 'L':  Lower triangular
!>

which half of A we're storing. upper or lower, pick your fighter ✨

N

!>          N is INTEGER
!>          The number of rows and columns of the matrix A.  N >= 0.
!>

rows and columns count, and N >= 0 is non-negotiable fr fr

A

!>          A is REAL array, dimension (LDA,N)
!>          The original hermitian matrix A.
!>

the original hermitian matrix A itself, dimension (LDA,N) πŸ’–

LDA

!>          LDA is INTEGER
!>          The leading dimension of the array A.  LDA >= max(1,N)
!>

leading dimension of A. LDA >= max(1,N), remember that πŸŽ€

AFAC

!>          AFAC is REAL array, dimension (LDAFAC,N)
!>          The factored form of the matrix A.  AFAC contains the block
!>          diagonal matrix D and the multipliers used to obtain the
!>          factor L or U from the block L*D*L' or U*D*U' factorization
!>          as computed by CSYTRF.
!>

the factored version of A β€” it's holding the block diagonal matrix D plus the multipliers that get you L or U from that block L*D*L' / U*D*U' factorization, exactly like CSYTRF computed them πŸ‘‘

LDAFAC

!>          LDAFAC is INTEGER
!>          The leading dimension of the array AFAC.  LDAFAC >= max(1,N).
!>

leading dimension of AFAC, and LDAFAC >= max(1,N) is the rule πŸ’€

IPIV

!>          IPIV is INTEGER array, dimension (N)
!>          The pivot indices from CSYTRF.
!>

the pivot indices straight from CSYTRF, dimension (N) πŸ“

C

!>          C is REAL array, dimension (LDC,N)
!>

the C array, dimension (LDC,N). that's it, that's the whole description, she's lowkey mysterious πŸ™ˆ

LDC

!>          LDC is INTEGER
!>          The leading dimension of the array C.  LDC >= max(1,N).
!>

leading dimension of C, and yes: LDC >= max(1,N) 🌟

RWORK

!>          RWORK is REAL array, dimension (N)
!>

workspace array, dimension (N). she's just there to help 🧚

RESID

!>          RESID is REAL
!>          If UPLO = 'L', norm(L*D*L' - A) / ( N * norm(A) * EPS )
!>          If UPLO = 'U', norm(U*D*U' - A) / ( N * norm(A) * EPS )
!>

and here's your actual answer, the residual:

  • if UPLO = 'L': norm(L*D*L' - A) / ( N * norm(A) * EPS )
  • if UPLO = 'U': norm(U*D*U' - A) / ( N * norm(A) * EPS )

small number = slay, big number = something's off 😭


🌺 Author 🌺

these legends wrote it, show some respect bestie:

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

Definition at line 122 of file csyt01_aa.f. πŸ“


πŸ’« Author πŸ’«

this page was generated automatically by Doxygen for LAPACK straight from the source code β€” not me writing it by hand, the robots did it πŸ€–


and that's the whole page, bestie! πŸ’–

LAPACK β€” Version 3.12.0 β€” cute lil sign-off from /home/abui...syt01_aa.f(3) πŸ¦‹βœ¨ bye pookie, go reconstruct some matrices 🫢

πŸ“¦ where this page comes from