TESTING/LIN/dpot03.f(3)
π NAME
TESTING/LIN/dpot03.f β okay bestie, this is the source file for dpot03, and it's literally the vibe-check routine for a symmetric matrix times its inverse π¦
β¨ SYNOPSIS β¨
πΈ Functions/Subroutines
subroutine dpot03 (uplo, n, a, lda, ainv, ldainv, work, ldwork, rwork, rcond, resid)βDPOT03, the main character π
π Function/Subroutine Documentation
subroutine dpot03 (character uplo, integer n, double precision, dimension(
lda, * ) a, integer lda, double precision, dimension( ldainv, * ) ainv,
integer ldainv, double precision, dimension( ldwork, * ) work, integer
ldwork, double precision, dimension( * ) rwork, double precision rcond,
double precision resid)
DPOT03 π«Ά
π Purpose:
!>
!> DPOT03 computes the residual for a symmetric matrix times its
!> inverse:
!> norm( I - A*AINV ) / ( N * norm(A) * norm(AINV) * EPS ),
!> where EPS is the machine epsilon.
!>
So like, it's checking how well AINV actually works as an inverse of A β residual energy, no cap β¨
π 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
!>
Which triangle of A you're storing, bestie β 'U' for upper, 'L' for lower, pick your fighter π
N
!> N is INTEGER
!> The number of rows and columns of the matrix A. N >= 0.
!>
Rows and columns of A (it's symmetric, she's square, she's iconic). Gotta be N >= 0.
A
!> A is DOUBLE PRECISION array, dimension (LDA,N)
!> The original symmetric matrix A.
!>
The original symmetric A herself πΈ
LDA
!> LDA is INTEGER
!> The leading dimension of the array A. LDA >= max(1,N)
!>
Leading dimension of A, and yes LDA >= max(1,N) β don't test me π
AINV
!> AINV is DOUBLE PRECISION array, dimension (LDAINV,N)
!> On entry, the inverse of the matrix A, stored as a symmetric
!> matrix in the same format as A.
!> In this version, AINV is expanded into a full matrix and
!> multiplied by A, so the opposing triangle of AINV will be
!> changed; i.e., if the upper triangular part of AINV is
!> stored, the lower triangular part will be used as work space.
!>
β οΈ Heads up bestie: on entry this holds the inverse ofA, stored symmetric in the same format asA. But in this version,AINVgets expanded into a full matrix and multiplied byA, so the opposing triangle ofAINVwill be changed π Like, if the upper triangle ofAINVis stored, the lower triangle gets used as work space. She's not coming back the same, fr.
LDAINV
!> LDAINV is INTEGER
!> The leading dimension of the array AINV. LDAINV >= max(1,N).
!>
Leading dimension of AINV β LDAINV >= max(1,N), periodt.
WORK
!> WORK is DOUBLE PRECISION array, dimension (LDWORK,N)
!>
Scratch space, dimension (LDWORK,N) π§
LDWORK
!> LDWORK is INTEGER
!> The leading dimension of the array WORK. LDWORK >= max(1,N).
!>
Leading dimension of WORK, and yep, LDWORK >= max(1,N) π
RWORK
!> RWORK is DOUBLE PRECISION array, dimension (N)
!>
Real workspace, dimension (N) β tiny but mighty β
RCOND
!> RCOND is DOUBLE PRECISION
!> The reciprocal of the condition number of A, computed as
!> ( 1/norm(A) ) / norm(AINV).
!>
The reciprocal of the condition number of A, computed as ( 1/norm(A) ) / norm(AINV) β literally just that π¦
RESID
!> RESID is DOUBLE PRECISION
!> norm(I - A*AINV) / ( N * norm(A) * norm(AINV) * EPS )
!>
The residual itself: norm(I - A*AINV) / ( N * norm(A) * norm(AINV) * EPS ) π₯ That's the whole point of the routine, iykyk.
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 123 of file dpot03.f. π
π Author
Generated automatically by Doxygen for LAPACK from the source code. Not me writing my own lore, the robots did it π
LAPACK Β· Version 3.12.0 β and that's the page, bestie!! TESTING/LIN/dpot03.f(3) out πβ¨ππ«Ά
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms