TESTING/LIN/dpot03.f(3)

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

πŸ’… 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 of A, stored symmetric in the same format as A. But in this version, AINV gets expanded into a full matrix and multiplied by A, so the opposing triangle of AINV will be changed 😭 Like, if the upper triangle of AINV is 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