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

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

πŸ’… /home/abui...t01_rook.f(3) β€” Library Functions Manual, bestie edition ✨

okay so picture this: it's a Library Functions Manual page, and it's about one singular little icon in the LAPACK lineup. no cap, this is the whole vibe. 🫢


🌸 NAME 🌸

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

like... yes that's the whole name, she's got a long government name and she's owning it πŸ’… long path energy, iykyk.


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

subroutine ZHET01_ROOK (uplo, n, a, lda, afac, ldafac, ipiv, c, ldc,
    rwork, resid)
    ZHET01_ROOK

one subroutine, eleven arguments, zero chill. she ate. πŸ”₯


⭐ Function/Subroutine Documentation ⭐

subroutine ZHET01_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)

ZHET01_ROOK β€” say it with me, main character energy πŸ‘‘

πŸŽ€ Purpose πŸŽ€

so the whole entire point of her, fr fr:

ZHET01_ROOK reconstructs a complex 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, EPS is the machine epsilon, L' is the transpose of L, and U' is the transpose of U.

like she literally rebuilds A from the factorization and then checks how close she got. that's the gig. that's the whole gig. πŸ’–


✨ Parameters ✨

πŸ“ UPLO

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

bestie it's an either/or situation, pick a lane πŸ’… upper or lower, no in-between, she does not do ambiguity.

🌈 N

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

rows and columns, same number, square queen that she is. and N >= 0 β€” she does not do negative, that's giving undefined behavior and we don't go there 🫢

🌸 A

A is COMPLEX*16 array, dimension (LDA,N) The original complex Hermitian matrix A.

the original. the blueprint. the before picture. the source material ✨

πŸ’œ LDA

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

the leading dimension, aka how much room A gets to stretch out. and LDA >= max(1,N) β€” respect the boundary, it's a vibe check πŸ”

πŸŽ€ 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 CSYTRF_ROOK.

ok so this is the after picture β€” D plus the multipliers, all up in there, exactly as CSYTRF_ROOK handed them over. keep the name CSYTRF_ROOK exactly as-is, don't come for me, that's what the page says πŸ“Œ

🧚 LDAFAC

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

AFAC's personal space allocation. LDAFAC >= max(1,N), no exceptions, periodt πŸ’…

πŸ”₯ IPIV

IPIV is INTEGER array, dimension (N) The pivot indices from CSYTRF_ROOK.

the pivot indices, straight from CSYTRF_ROOK, no middleman 🫢

πŸ¦‹ C

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

that's the reconstructed matrix from up in the Purpose section, showing up again like the main character she is πŸ’–

⭐ LDC

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

same rules as her sisters, LDC >= max(1,N) β€” the whole family is consistent, we love that for them 🌸

πŸŽ€ RWORK

RWORK is DOUBLE PRECISION array, dimension (N)

double precision workspace, dimension (N), just doing her little job in the background 🧚

πŸ’œ 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 )

THE RESIDUAL. the moment of truth. the report card πŸ“‹ and look at her being all conditional about it β€” lower triangular gets L*D*L', upper triangular gets U*D*U', both divided by N * norm(A) * EPS. iconic behavior, truly πŸ‘‘


🫢 Author 🫢

shoutout to the legends, no cap:

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

Definition at line 123 of file zhet01_rook.f. line one hundred twenty-three, she's got lore πŸ’€


🌈 Author 🌈

Generated automatically by Doxygen for LAPACK from the source code. so nobody hand-wrote this beauty, the robot did it and honestly? she understood the assignment πŸ€–βœ¨


lowkey reminder bestie: AFAC, IPIV and the pivots all have to line up with what CSYTRF_ROOK produced, and LDA, LDAFAC, LDC all want >= max(1,N). go off-script and that's on you πŸ™ˆ

mwah πŸ’‹ that's the whole page! LAPACK, Version 3.12.0, and this little masterpiece lives at /home/abui...t01_rook.f(3) β€” see you in the group chat, bestie πŸŽ€πŸ’–βœ¨

πŸ“¦ where this page comes from