DCHKPO(3)

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

πŸ’… DCHKPO(3) β€” from the Library Functions Manual πŸŽ€

okay so bestie, welcome to dchkpo.f(3), a page from the Library Functions Manual β€” and honestly? it's giving "LAPACK testing internals" and honestly I'm obsessed. it's a Fortran subroutine that exists purely to bully DPOTRF into proving itself. let's get into it πŸ’–


✨ NAME ✨

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

like yeah that's the whole path, that's the name, that's the main character. no cap, the entire NAME section is just a file path and I respect the audacity 🫢


🌸 SYNOPSIS 🌸

Functions/Subroutines

subroutine DCHKPO (dotype, nn, nval, nnb, nbval, nns, nsval, thresh,
    tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)

DCHKPO

(that second DCHKPO is just the vibe check confirming yes, it's still DCHKPO ✨)


πŸ¦‹ Function/Subroutine Documentation πŸ¦‹

subroutine DCHKPO (logical, dimension( * ) dotype, integer nn, integer,
    dimension( * ) nval, integer nnb, integer, dimension( * ) nbval, integer
    nns, integer, dimension( * ) nsval, double precision thresh, logical
    tsterr, integer nmax, double precision, dimension( * ) a, double
    precision, dimension( * ) afac, double precision, dimension( * ) ainv,
    double precision, dimension( * ) b, double precision, dimension( * ) x,
    double precision, dimension( * ) xact, double precision, dimension( * )
    work, double precision, dimension( * ) rwork, integer, dimension( * )
    iwork, integer nout)

DCHKPO


πŸ”₯ Purpose πŸ”₯

fortran !> !> DCHKPO tests DPOTRF, -TRI, -TRS, -RFS, and -CON !>

literally that's it. that's the whole purpose. it runs the whole positive-definite gauntlet β€” DPOTRF, -TRI, -TRS, -RFS, and -CON β€” and makes sure none of them are faking it. queen behavior πŸ‘‘


πŸ’œ Parameters πŸ’œ

πŸ“ DOTYPE

fortran !> DOTYPE is LOGICAL array, dimension (NTYPES) !> The matrix types to be used for testing. Matrices of type j !> (for 1 <= j <= NTYPES) are used for testing if DOTYPE(j) = !> .TRUE.; if DOTYPE(j) = .FALSE., then type j is not used. !>

so for every matrix type j where 1 <= j <= NTYPES, you flip DOTYPE(j) = .TRUE. to say "yes bestie test this one" or .FALSE. to say "not this one, we're good." it's a whole menu and you're ordering à la carte 😌

πŸ“ NN

fortran !> NN is INTEGER !> The number of values of N contained in the vector NVAL. !>

the count of N values chilling inside NVAL. like a headcount for the dimension squad.

πŸ“ NVAL

fortran !> NVAL is INTEGER array, dimension (NN) !> The values of the matrix dimension N. !>

all the matrix dimensions N we're about to test. NN of them. that's the math, iykyk ✨

πŸ“ NNB

fortran !> NNB is INTEGER !> The number of values of NB contained in the vector NBVAL. !>

same energy as NN but for blocksizes β€” it's how many entries live in NBVAL.

πŸ“ NBVAL

fortran !> NBVAL is INTEGER array, dimension (NNB) !> The values of the blocksize NB. !>

the blocksize values NB. block it out bestie 🧱

πŸ“ NNS

fortran !> NNS is INTEGER !> The number of values of NRHS contained in the vector NSVAL. !>

headcount for the right-hand-side counts sitting in NSVAL.

πŸ“ NSVAL

fortran !> NSVAL is INTEGER array, dimension (NNS) !> The values of the number of right hand sides NRHS. !>

the actual NRHS values β€” i.e. how many right hand sides we're solving for. so many hands, so many sides 🫢

πŸ“ THRESH

fortran !> THRESH is DOUBLE PRECISION !> The threshold value for the test ratios. A result is !> included in the output file if RESULT >= THRESH. To have !> every test ratio printed, use THRESH = 0. !>

the cutoff for test ratios, in DOUBLE PRECISION. if RESULT >= THRESH, it gets written to the output file. want literally everything printed, no filter, main character energy? set THRESH = 0. that's the chaos option and I love her πŸ’…

πŸ“ TSTERR

fortran !> TSTERR is LOGICAL !> Flag that indicates whether error exits are to be tested. !>

a yes/no flag for "are we testing the error exits too?" β€” .TRUE. means yes, we're checking the messy paths.

πŸ“ NMAX

fortran !> NMAX is INTEGER !> The maximum value permitted for N, used in dimensioning the !> work arrays. !>

the biggest allowable N. it's what sizes all the work arrays, so don't go over it or the vibes (and the memory) collapse πŸ’€

πŸ“ A

fortran !> A is DOUBLE PRECISION array, dimension (NMAX*NMAX) !>

the matrix itself, DOUBLE PRECISION, dimension (NMAX*NMAX). yes it's huge. yes it's fine. she's the star of the show ⭐

πŸ“ AFAC

fortran !> AFAC is DOUBLE PRECISION array, dimension (NMAX*NMAX) !>

the factored version of A, same size, (NMAX*NMAX). also DOUBLE PRECISION. no notes.

πŸ“ AINV

fortran !> AINV is DOUBLE PRECISION array, dimension (NMAX*NMAX) !>

the inverse, DOUBLE PRECISION, dimension (NMAX*NMAX). third massive array, third time slaying 🌈

πŸ“ B

fortran !> B is DOUBLE PRECISION array, dimension (NMAX*NSMAX) !> where NSMAX is the largest entry in NSVAL. !>

DOUBLE PRECISION, dimension (NMAX*NSMAX), and reminder: NSMAX is the largest entry in NSVAL. keep that in your notes πŸ“

πŸ“ X

fortran !> X is DOUBLE PRECISION array, dimension (NMAX*NSMAX) !>

the solution array, DOUBLE PRECISION, dimension (NMAX*NSMAX). same shape as B, obvs.

πŸ“ XACT

fortran !> XACT is DOUBLE PRECISION array, dimension (NMAX*NSMAX) !>

the exact solution array (hence the name, genius tbh), DOUBLE PRECISION, dimension (NMAX*NSMAX). she's the reference, the benchmark, the standard.

πŸ“ WORK

fortran !> WORK is DOUBLE PRECISION array, dimension !> (NMAX*max(3,NSMAX)) !>

scratch space, DOUBLE PRECISION, dimension (NMAX*max(3,NSMAX)). note the max(3,NSMAX) β€” it's at least 3, no matter what NSMAX says πŸ’…

πŸ“ RWORK

fortran !> RWORK is DOUBLE PRECISION array, dimension !> (max(NMAX,2*NSMAX)) !>

DOUBLE PRECISION workspace, dimension (max(NMAX,2*NSMAX)). different max, different formula, same queen energy.

πŸ“ IWORK

fortran !> IWORK is INTEGER array, dimension (NMAX) !>

the integer workspace, dimension (NMAX). finally a small one 😭

πŸ“ NOUT

fortran !> NOUT is INTEGER !> The unit number for output. !>

the Fortran unit number where all the output goes. that's where your results land, bestie πŸŽ€


πŸ‘‘ Author πŸ‘‘

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

(the whole academic + lab squad, we stan a collaborative effort 🌸)


πŸ“Œ Definition at line 169 of file dchkpo.f.


🧚 Author (the other one) 🧚

Generated automatically by Doxygen for LAPACK from the source code.

(so nobody hand-wrote this page, a robot did it, and honestly? the robot ate. not me being jealous of a documentation generator πŸ’€)


and that's the whole page bestie β€” LAPACK, Version 3.12.0, footer date and all, dchkpo.f(3), no details left behind βœ¨πŸ’–πŸŽ€

πŸ“¦ where this page comes from