ZPOT03(3)
π ZPOT03(3) β bestie, it's a residual-checking girlie
okay so quick vibe check: this page is zpot03.f(3) and it comes to you straight from the Library Functions Manual β LAPACK's very own corner of the man-page universe. buckle up, we're doing linear algebra π
β¨ NAME β¨
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/TESTING/LIN/zpot03.f
like, yes, that's the whole name. it's giving "absolute path as a personality" and honestly? iconic. π
πΈ SYNOPSIS πΈ
Functions/Subroutines
subroutine ZPOT03 (uplo, n, a, lda, ainv, ldainv, work, ldwork, rwork, rcond, resid)βZPOT03
subroutine ZPOT03 (uplo, n, a, lda, ainv, ldainv, work, ldwork, rwork,
rcond, resid)
ZPOT03
π¦ Function/Subroutine Documentation π¦
subroutine ZPOT03 (character uplo, integer n, complex*16, dimension( lda, * ) a, integer lda, complex*16, dimension( ldainv, * ) ainv, integer ldainv, complex*16, dimension( ldwork, * ) work, integer ldwork, double precision, dimension( * ) rwork, double precision rcond, double precision resid)
ZPOT03 β that's her. that's the whole subroutine. π
π₯ Purpose π₯
!> !> ZPOT03 computes the residual for a Hermitian matrix times its !> inverse: !> norm( I - A*AINV ) / ( N * norm(A) * norm(AINV) * EPS ), !> where EPS is the machine epsilon. !>
so basically she takes a Hermitian matrix A, and AINV (its inverse), and asks the question we all ask ourselves: did the inverse actually do its job? π she builds I - A*AINV, takes norms, divides by N * norm(A) * norm(AINV) * EPS where EPS is the machine epsilon, and hands you back the residual. no cap, that's the whole plot. π
π Parameters π
UPLO
!> UPLO is CHARACTER*1 !> Specifies whether the upper or lower triangular part of the !> Hermitian matrix A is stored: !> = 'U': Upper triangular !> = 'L': Lower triangular
bestie just tell her which triangle of A you bothered to store. 'U' = Upper triangular, 'L' = Lower triangular. pick one, she's not judging. π«Ά
N
!> N is INTEGER !> The number of rows and columns of the matrix A. N >= 0.
N is INTEGER β the number of rows and columns of the matrix A, because square matrices ate and left no crumbs. constraint era: N >= 0. β¨
A
!> A is COMPLEX*16 array, dimension (LDA,N) !> The original Hermitian matrix A.
A is COMPLEX*16 array, dimension (LDA,N) β the original Hermitian matrix A, in her natural habitat. π
LDA
!> LDA is INTEGER !> The leading dimension of the array A. LDA >= max(1,N)
LDA is INTEGER β the leading dimension of the array A. the rule is LDA >= max(1,N) and she will be checking. π
AINV
!> AINV is COMPLEX*16 array, dimension (LDAINV,N) !> On entry, the inverse of the matrix A, stored as a Hermitian !> 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.
AINV is COMPLEX*16 array, dimension (LDAINV,N). on entry, this is the inverse of the matrix A, stored as a Hermitian matrix in the same format as A.
β οΈ heads up though: in this version,AINVgets expanded into a full matrix and multiplied byA, so the opposing triangle ofAINVwill be changed. i.e., if the upper triangular part ofAINVis stored, the lower triangular part gets used as work space. so likeβ¦ it's not coming back the same. π know before you go, iykyk.
LDAINV
!> LDAINV is INTEGER !> The leading dimension of the array AINV. LDAINV >= max(1,N).
LDAINV is INTEGER β the leading dimension of the array AINV. requirement: LDAINV >= max(1,N). no exceptions, bestie. β
WORK
!> WORK is COMPLEX*16 array, dimension (LDWORK,N)
WORK is COMPLEX*16 array, dimension (LDWORK,N) β her little scratchpad era. π§
LDWORK
!> LDWORK is INTEGER !> The leading dimension of the array WORK. LDWORK >= max(1,N).
LDWORK is INTEGER β the leading dimension of the array WORK, and yes, LDWORK >= max(1,N). the math is mathing. π
RWORK
!> RWORK is DOUBLE PRECISION array, dimension (N)
RWORK is DOUBLE PRECISION array, dimension (N) β real-valued work space, living her simple life. π
RCOND
!> RCOND is DOUBLE PRECISION !> The reciprocal of the condition number of A, computed as !> ( 1/norm(A) ) / norm(AINV).
RCOND is DOUBLE PRECISION β the reciprocal of the condition number of A, computed as ( 1/norm(A) ) / norm(AINV). reciprocal girlie. π«
RESID
!> RESID is DOUBLE PRECISION !> norm(I - A*AINV) / ( N * norm(A) * norm(AINV) * EPS )
RESID is DOUBLE PRECISION β the final answer, the main character: norm(I - A*AINV) / ( N * norm(A) * norm(AINV) * EPS ). π₯
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
the whole squad showed up. group project but everyone actually pulled their weight for once ππ
Definition at line 124 of file zpot03.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code. (yes she was written by a robot and she still has more personality than half the codebase, we love to see it π)
and that's the whole page bestie, every flag, every bound, every triangle, nothing skipped β periodt. π
signing off: LAPACK, Version 3.12.0, dated /home/abui...IN/zpot03.f(3) β mwah, go compile something beautiful π¦
π¦ 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