SSYT01_3(3)

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

πŸ’… SSYT01_3(3) β€” from the Library Functions Manual (yes, that manual, the LAPACK one)

okay so bestie, grab your iced coffee πŸ“ because this is the page for ssyt01_3.f(3), and the whole file lives at this exact path, no cap:

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

that's the NAME section, that's literally it. it's giving "my name is my address" main character energy πŸŽ€


✨ SYNOPSIS ✨

Functions/Subroutines

  • subroutine SSYT01_3 (uplo, n, a, lda, afac, ldafac, e, ipiv, c, ldc, rwork, resid) β€” the one and only, the icon herself πŸ’…

SSYT01_3


🌸 Function/Subroutine Documentation 🌸

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

SSYT01_3 πŸ¦‹

🫢 Purpose:

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

so basically: she takes A, rebuilds it out of its block L*D*L' or U*D*U' factorization (the one SSYTRF_RK β€” or SSYTRF_BK β€” handed you), and then checks how close the glow-up came out. that residual formula is the vibe check: norm( C - A ) / ( N * norm(A) * EPS ), where C is the reconstructed bestie and EPS is machine epsilon. πŸ’–


πŸ‘‘ Parameters πŸ‘‘

UPLO

!>          UPLO is CHARACTER*1
!>          Specifies whether the upper or lower triangular part of the
!>          symmetric matrix A is stored:
!>          = 'U':  Upper triangular
!>          = 'L':  Lower triangular
!>
  • UPLO is CHARACTER*1 β€” it's the "which half of A are we storing" selector πŸŽ€
  • = 'U' β†’ upper triangular, top half girlie
  • = 'L' β†’ lower triangular, bottom half girlie

N

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

N is INTEGER β€” rows and columns of A (she's square, obvi), and the rule is N >= 0. ✨

A

!>          A is DOUBLE PRECISION array, dimension (LDA,N)
!>          The original symmetric matrix A.
!>

A is the DOUBLE PRECISION array of dimension (LDA,N) β€” the original symmetric matrix A, before any of this reconstruction chaos. πŸ’œ

LDA

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

LDA is INTEGER β€” leading dimension of A, and LDA >= max(1,N). periodt. 🌈

AFAC

!>          AFAC is DOUBLE PRECISION array, dimension (LDAFAC,N)
!>          Diagonal of the block diagonal matrix D and factors U or L
!>          as computed by SSYTRF_RK and SSYTRF_BK:
!>            a) ONLY diagonal elements of the symmetric block diagonal
!>               matrix D on the diagonal of A, i.e. D(k,k) = A(k,k);
!>               (superdiagonal (or subdiagonal) elements of D
!>                should be provided on entry in array E), and
!>            b) If UPLO = 'U': factor U in the superdiagonal part of A.
!>               If UPLO = 'L': factor L in the subdiagonal part of A.
!>

AFAC is DOUBLE PRECISION, dimension (LDAFAC,N) β€” this one carries the diagonal of the block diagonal matrix D plus whichever factor U or L you got out of SSYTRF_RK and SSYTRF_BK πŸ”₯

breakdown, because she's a lot:

  • a) ONLY the diagonal elements of the symmetric block diagonal matrix D live on the diagonal of A, i.e. D(k,k) = A(k,k) β€” and the superdiagonal (or subdiagonal) elements of D should be provided on entry in array E, ngl, don't forget those πŸ™ˆ
  • b) if UPLO = 'U', factor U sits in the superdiagonal part of A; if UPLO = 'L', factor L sits in the subdiagonal part of A πŸ’…

LDAFAC

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

LDAFAC is INTEGER β€” leading dimension of AFAC, and you already know: LDAFAC >= max(1,N). πŸ¦‹

E

!>          E is DOUBLE PRECISION array, dimension (N)
!>          On entry, contains the superdiagonal (or subdiagonal)
!>          elements of the symmetric block diagonal matrix D
!>          with 1-by-1 or 2-by-2 diagonal blocks, where
!>          If UPLO = 'U': E(i) = D(i-1,i),i=2:N, E(1) not referenced;
!>          If UPLO = 'L': E(i) = D(i+1,i),i=1:N-1, E(N) not referenced.
!>

E is DOUBLE PRECISION, dimension (N) β€” on entry it's holding the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D, which has 1-by-1 or 2-by-2 diagonal blocks, where:

  • if UPLO = 'U': E(i) = D(i-1,i),i=2:N, E(1) not referenced 🫢
  • if UPLO = 'L': E(i) = D(i+1,i),i=1:N-1, E(N) not referenced 🫢

(not referenced = she's not invited, don't @ her πŸ’€)

IPIV

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

IPIV is an INTEGER array, dimension (N) β€” the pivot indices from SSYTRF_RK (or SSYTRF_BK). iconic. πŸ‘‘

C

!>          C is DOUBLE PRECISION array, dimension (LDC,N)
!>

C is DOUBLE PRECISION, dimension (LDC,N). that's the whole description, she's mysterious like that 😭

LDC

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

LDC is INTEGER β€” leading dimension of C, and yes, LDC >= max(1,N). πŸŽ€

RWORK

!>          RWORK is DOUBLE PRECISION array, dimension (N)
!>

RWORK is DOUBLE PRECISION, dimension (N). short and sweet, we stan. ⭐

RESID

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

RESID is DOUBLE PRECISION β€” the final score, the report card, the vibe check result ✨

  • if UPLO = 'L': norm(L*D*L' - A) / ( N * norm(A) * EPS )
  • if UPLO = 'U': norm(U*D*U' - A) / ( N * norm(A) * EPS )
🩷 lowkey a PSA: the signature up there says real for these arrays, but the parameter descriptions say DOUBLE PRECISION β€” that's literally how the page reads, so I'm just relaying it, iykyk. no editing, no "fixing", we respect the source code's choices.

🧚 Author 🧚

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

and the tea: Definition at line 138 of file ssyt01_3.f. πŸ’€ go look, she's right there.

🌺 Author (the generated one) 🌺

Generated automatically by Doxygen for LAPACK from the source code. yes bestie, the robots wrote this one, no cap πŸ€–πŸ’–


so that's the whole page, top to bottom, every flag, every dimension, every >= max(1,N) β€” nothing skipped, periodt πŸ’…

πŸŽ€ signed, sealed, delivered: LAPACK, Version 3.12.0, from /home/abui.../ssyt01_3.f(3) πŸŽ€ πŸ¦‹βœ¨

πŸ“¦ where this page comes from