SRC/dsycon_rook.f(3)

πŸ’œ SRC/dsycon_rook.f(3) β€” like, the whole page, bestie

okay so real talk: this is a page from the Library Functions Manual (that's the manual name, we're folding it in right here at the top so it doesn't get lost πŸŽ€), and it's all about one single Fortran subroutine that will absolutely tell you how trustworthy your symmetric matrix is. no cap.


✨ NAME ✨

SRC/dsycon_rook.f

that's it. that's the name. iconic minimalism honestly πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

  • subroutine dsycon_rook (uplo, n, a, lda, ipiv, anorm, rcond, work, iwork, info) β€” the main character herself: DSYCON_ROOK πŸ‘‘

🌸 Function/Subroutine Documentation 🌸

subroutine dsycon_rook (character uplo, integer n, double precision,
    dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv, double
    precision anorm, double precision rcond, double precision, dimension( *
    ) work, integer, dimension( * ) iwork, integer info)

DSYCON_ROOK β€” say it with your chest πŸ’–

πŸŽ€ Purpose πŸŽ€

!> !> DSYCON_ROOK estimates the reciprocal of the condition number (in the !> 1-norm) of a real symmetric matrix A using the factorization !> A = U*D*UT or A = L*D*LT computed by DSYTRF_ROOK. !> !> An estimate is obtained for norm(inv(A)), and the reciprocal of the !> condition number is computed as RCOND = 1 / (ANORM * norm(inv(A))). !>

so basically: you already ran DSYTRF_ROOK, you've got your factorization, and now this lil icon goes "okay but like… how sketchy is this matrix actually?" and hands you back a RCOND. bless. 🫢

🌈 Parameters 🌈

UPLO

!> UPLO is CHARACTER*1 !> Specifies whether the details of the factorization are stored !> as an upper or lower triangular matrix. !> = 'U': Upper triangular, form is A = U*D*UT; !> = 'L': Lower triangular, form is A = L*D*LT. !>

pick your fighter: 'U' for upper, 'L' for lower. that's the whole vibe check πŸ’«

N

!> N is INTEGER !> The order of the matrix A. N >= 0. !>

the order of A. must be N >= 0 β€” no negative order nonsense, we don't do that here πŸ™ˆ

A

!> A is DOUBLE PRECISION array, dimension (LDA,N) !> The block diagonal matrix D and the multipliers used to !> obtain the factor U or L as computed by DSYTRF_ROOK. !>

DOUBLE PRECISION array, dimension (LDA,N). it's holding the block diagonal matrix D and the multipliers that got you your U or L, exactly as DSYTRF_ROOK computed them. don't touch it, just appreciate it ✨

LDA

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

the leading dimension of A, and yes LDA >= max(1,N). periodt.

IPIV

!> IPIV is INTEGER array, dimension (N) !> Details of the interchanges and the block structure of D !> as determined by DSYTRF_ROOK. !>

INTEGER array, dimension (N). all the tea about the interchanges and the block structure of D, straight from DSYTRF_ROOK πŸ’€

ANORM

!> ANORM is DOUBLE PRECISION !> The 1-norm of the original matrix A. !>

DOUBLE PRECISION, and it's the 1-norm of the original A β€” the before picture, not the factored one πŸ¦‹

RCOND

!> RCOND is DOUBLE PRECISION !> The reciprocal of the condition number of the matrix A, !> computed as RCOND = 1/(ANORM * AINVNM), where AINVNM is an !> estimate of the 1-norm of inv(A) computed in this routine. !>

DOUBLE PRECISION. this is the output, the whole point, the moment πŸ‘‘ computed as RCOND = 1/(ANORM * AINVNM), where AINVNM is an estimate of the 1-norm of inv(A) that this very routine cooked up. slay.

WORK

!> WORK is DOUBLE PRECISION array, dimension (2*N) !>

DOUBLE PRECISION array, dimension (2*N). scratch space, mind ya business πŸ”₯

IWORK

!> IWORK is INTEGER array, dimension (N) !>

INTEGER array, dimension (N). more scratch, also mind ya business ⭐

INFO

!> INFO is INTEGER !> = 0: successful exit !> < 0: if INFO = -i, the i-th argument had an illegal value !>

INTEGER. = 0 means successful exit, we love a win πŸ’–. < 0 means if INFO = -i, the i-th argument had an illegal value β€” so go count your arguments, bestie 😭

🧚 Author 🧚

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

the whole squad showed up for this one 🫢

πŸ’œ Contributors: πŸ’œ

!> !> April 2012, Igor Kozachenko, !> Computer Science Division, !> University of California, Berkeley !> !> September 2007, Sven Hammarling, Nicholas J. Higham, Craig Lucas, !> School of Mathematics, !> University of Manchester !> !>

shoutout to Igor Kozachenko (April 2012, Computer Science Division, University of California, Berkeley) and to Sven Hammarling, Nicholas J. Higham & Craig Lucas (September 2007, School of Mathematics, University of Manchester). legends only 🌟

Definition at line 142 of file dsycon_rook.f. go look, it's right there πŸŽ€


πŸ“ Author πŸ“

Generated automatically by Doxygen for LAPACK from the source code. (yes the robots wrote the docs, we're just adding the glitter ✨)


πŸ’€ tiny reminder: this page is documentation about dsycon_rook, not the routine itself. don't try to ./ it.

and that's the whole page, bestie β€” no details left behind, no cap πŸ’…

LAPACK β€” Version 3.12.0 β€” SRC/dsycon_rook.f(3) πŸ¦‹ mwah, see u in the next manpage πŸ’–

πŸ“¦ where this page comes from