SSYT01_3(3)
π 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
!>
UPLOisCHARACTER*1β it's the "which half ofAare 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
Dlive on the diagonal ofA, i.e.D(k,k) = A(k,k)β and the superdiagonal (or subdiagonal) elements ofDshould be provided on entry in arrayE, ngl, don't forget those π - b) if
UPLO = 'U', factorUsits in the superdiagonal part ofA; ifUPLO = 'L', factorLsits in the subdiagonal part ofAπ
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 saysrealfor these arrays, but the parameter descriptions sayDOUBLE 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
- 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