ZSYT01_ROOK.F(3)

πŸ“¦
version 3.12.1 Β· 3 versions
, in arch rolling

πŸ§ͺ TESTING/LIN/zsyt01_rook.f πŸ§ͺ

okay so bestie, welcome to the Library Functions Manual, section 3, and today's main character is zsyt01_rook.f β€” a whole file from the LAPACK TESTING/LIN folder. it's a testing routine, it's iconic, and it's about to check somebody's factorization work. let's go πŸ’…


🌸 NAME 🌸

TESTING/LIN/zsyt01_rook.f

that's it. that's the name. no cap, that's literally the whole name section πŸŽ€


✨ SYNOPSIS ✨

πŸŽ€ Functions/Subroutines πŸŽ€

  • subroutine zsyt01_rook (uplo, n, a, lda, afac, ldafac, ipiv, c, ldc, rwork, resid) β€” this is the one, this is the girl. also known as ZSYT01_ROOK πŸ‘‘

🫢 Function/Subroutine Documentation 🫢

subroutine zsyt01_rook (character uplo, integer n, complex*16, dimension(
    lda, * ) a, integer lda, complex*16, dimension( ldafac, * ) afac,
    integer ldafac, integer, dimension( * ) ipiv, complex*16, dimension(
    ldc, * ) c, integer ldc, double precision, dimension( * ) rwork, double
    precision resid)

ZSYT01_ROOK β€” say it with me, she's the vibe check for your factorization 😌

πŸ’– Purpose πŸ’–

okay so the whole point: ZSYT01_ROOK reconstructs a complex symmetric indefinite matrix A from its block L*D*L' or U*D*U' factorization, and then it computes the residual

norm( C - A ) / ( N * norm(A) * EPS ),

where C is the reconstructed matrix, EPS is the machine epsilon, L' is the transpose of L, and U' is the transpose of U. basically she rebuilds the matrix and then stares at how close it got. obsessed 🫢

🌈 Parameters 🌈

πŸ’œ UPLO

UPLO is CHARACTER*1. it specifies whether the upper or lower triangular part of the complex symmetric matrix A is stored:

  • = 'U': Upper triangular
  • = 'L': Lower triangular

πŸ’œ N

N is INTEGER. the number of rows and columns of the matrix A. lowkey important: N >= 0. ✨

πŸ’œ A

A is COMPLEX*16 array, dimension (LDA,N). this is the original complex symmetric matrix A. the real one. the un-done one. 🌸

πŸ’œ LDA

LDA is INTEGER. the leading dimension of the array A. and it better be LDA >= max(1,N). πŸ‘€

πŸ’œ AFAC

AFAC is COMPLEX*16 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 ZSYTRF_ROOK. so like, this is the after photo πŸ¦‹

πŸ’œ LDAFAC

LDAFAC is INTEGER. the leading dimension of the array AFAC. LDAFAC >= max(1,N). same energy, different array. πŸ’…

πŸ’œ IPIV

IPIV is INTEGER array, dimension (N). the pivot indices from ZSYTRF_ROOK. the receipts of which rows went where πŸ”₯

πŸ’œ C

C is COMPLEX*16 array, dimension (LDC,N).

yes that's the entire description. she's mysterious. she's reconstructed. we respect her privacy πŸ™ˆ

πŸ’œ LDC

LDC is INTEGER. the leading dimension of the array C. LDC >= max(1,N). keep up bestie ⭐

πŸ’œ RWORK

RWORK is DOUBLE PRECISION array, dimension (N).

that's all it says. workspace behavior, no notes. πŸ“

πŸ’œ RESID

RESID is DOUBLE PRECISION. and depending on your UPLO:

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

this is the number you came for. this is the grade. no rounding up, she does not curve 😭


πŸ‘‘ Author πŸ‘‘

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

four institutions, one subroutine. ate. πŸŽ€

Definition at line 123 of file zsyt01_rook.f. mark it, screenshot it, memorize it ✨


πŸ’« Author πŸ’«

Generated automatically by Doxygen for LAPACK from the source code.

(yeah, the same section name twice, twice the author energy, we don't question the pipeline πŸ€–πŸ«Ά)


and that's the page bestie!! footer tea for the road: this is LAPACK, Version 3.12.0, and the whole thing lives under TESTING/LIN/zsyt01_rook.f(3) in the manual. mwah, go reconstruct something πŸ’–πŸŒˆπŸŽ€

πŸ“¦ where this page comes from