TESTING/LIN/cdrvls.f(3)

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

πŸ’– TESTING/LIN/cdrvls.f πŸ’–

Okay bestie, so this is a page from the LAPACK library docs β€” specifically the TESTING/LIN/cdrvls.f file, which is a Fortran source file. It's giving "auto-generated reference docs" energy, and honestly? We're gonna walk through it together. πŸŽ€


✨ SYNOPSIS ✨

Functions/Subroutines

Here's the one subroutine that lives here, in all its long-signature glory:

subroutine cdrvls (dotype, nm, mval, nn, nval, nns, nsval, nnb, nbval,
    nxval, thresh, tsterr, a, copya, b, copyb, c, s, copys, nout)

CDRVLS


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

πŸ“œ Full signature, spelled out

subroutine cdrvls (logical, dimension( * ) dotype, integer nm, integer,
    dimension( * ) mval, integer nn, integer, dimension( * ) nval, integer
    nns, integer, dimension( * ) nsval, integer nnb, integer, dimension( * )
    nbval, integer, dimension( * ) nxval, real thresh, logical tsterr,
    complex, dimension( * ) a, complex, dimension( * ) copya, complex,
    dimension( * ) b, complex, dimension( * ) copyb, complex, dimension( * )
    c, real, dimension( * ) s, real, dimension( * ) copys, integer nout)

CDRVLS

πŸ’« Purpose:

!> !> CDRVLS tests the least squares driver routines CGELS, CGELST, !> CGETSLS, CGELSS, CGELSY !> and CGELSD. !>

So like β€” this whole subroutine is a vibe check for those least-squares drivers. It tests all five of them. No cap. πŸ”₯


🌸 Parameters 🌸

DOTYPE

!> 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. !> The matrix of type j is generated as follows: !> j=1: A = U*D*V where U and V are random unitary matrices !> and D has random entries (> 0.1) taken from a uniform !> distribution (0,1). A is full rank. !> j=2: The same of 1, but A is scaled up. !> j=3: The same of 1, but A is scaled down. !> j=4: A = U*D*V where U and V are random unitary matrices !> and D has 3*min(M,N)/4 random entries (> 0.1) taken !> from a uniform distribution (0,1) and the remaining !> entries set to 0. A is rank-deficient. !> j=5: The same of 4, but A is scaled up. !> j=6: The same of 5, but A is scaled down. !>

So DOTYPE is a LOGICAL array of dimension (NTYPES) β€” it's literally the "which matrix types are we testing today" checklist πŸ’…. Matrices of type j (for 1 <= j <= NTYPES) get tested if DOTYPE(j) = .TRUE.; if DOTYPE(j) = .FALSE. then type j is not used, periodt.

And here's the tea on how each matrix type j gets generated:

  • j=1: A = U*D*V where U and V are random unitary matrices, and D has random entries (> 0.1) taken from a uniform distribution (0,1). A is full rank. πŸ‘‘
  • j=2: The same as 1, but A is scaled up.
  • j=3: The same as 1, but A is scaled down.
  • j=4: A = U*D*V where U and V are random unitary matrices, and D has 3*min(M,N)/4 random entries (> 0.1) taken from a uniform distribution (0,1), with the remaining entries set to 0. A is rank-deficient. 😭
  • j=5: The same as 4, but A is scaled up.
  • j=6: The same as 5, but A is scaled down.

NM

!> NM is INTEGER !> The number of values of M contained in the vector MVAL. !>

NM is just an INTEGER β€” it tells you how many values of M are chillin' inside the vector MVAL. 🧚


MVAL

!> MVAL is INTEGER array, dimension (NM) !> The values of the matrix row dimension M. !>

MVAL is an INTEGER array, dimension (NM), and it holds the values of the matrix row dimension M. That's the row count, bestie.


NN

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

NN is an INTEGER β€” the number of values of N contained in the vector NVAL.


NVAL

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

NVAL is an INTEGER array, dimension (NN) β€” it's holding the values of the matrix column dimension N. The column girlies. 🌈


NNB

!> NNB is INTEGER !> The number of values of NB and NX contained in the !> vectors NBVAL and NXVAL. The blocking parameters are used !> in pairs (NB,NX). !>

NNB is an INTEGER β€” it's how many values of NB and NX are contained in the vectors NBVAL and NXVAL. Heads up: the blocking parameters are used in pairs (NB,NX). πŸ‘€


NBVAL

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

NBVAL is an INTEGER array, dimension (NNB) β€” the values of the blocksize NB.


NXVAL

!> NXVAL is INTEGER array, dimension (NNB) !> The values of the crossover point NX. !>

NXVAL is an INTEGER array, dimension (NNB) β€” the values of the crossover point NX. Iconic. ✨


NNS

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

NNS is an INTEGER β€” the number of values of NRHS contained in the vector NSVAL.


NSVAL

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

NSVAL is an INTEGER array, dimension (NNS) β€” the values of the number of right hand sides NRHS. 🫢


THRESH

!> THRESH is REAL !> 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. !>

THRESH is REAL β€” the threshold value for the test ratios. A result gets included in the output file if RESULT >= THRESH. And listen: if you want every single test ratio printed, use THRESH = 0. That's the "spill all the tea" setting. πŸ“


TSTERR

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

TSTERR is LOGICAL β€” a flag that indicates whether error exits are to be tested or not. πŸ’€


A

!> A is COMPLEX array, dimension (MMAX*NMAX) !> where MMAX is the maximum value of M in MVAL and NMAX is the !> maximum value of N in NVAL. !>

A is a COMPLEX array, dimension (MMAX*NMAX), where MMAX is the maximum value of M in MVAL and NMAX is the maximum value of N in NVAL. She's big. She contains multitudes. 🌸


COPYA

!> COPYA is COMPLEX array, dimension (MMAX*NMAX) !>

COPYA is a COMPLEX array, dimension (MMAX*NMAX). That's it, that's the whole description β€” the original really just said that and dipped. πŸ™ˆ


B

!> B is COMPLEX array, dimension (MMAX*NSMAX) !> where MMAX is the maximum value of M in MVAL and NSMAX is the !> maximum value of NRHS in NSVAL. !>

B is a COMPLEX array, dimension (MMAX*NSMAX), where MMAX is the maximum value of M in MVAL and NSMAX is the maximum value of NRHS in NSVAL. πŸ’œ


COPYB

!> COPYB is COMPLEX array, dimension (MMAX*NSMAX) !>

COPYB is a COMPLEX array, dimension (MMAX*NSMAX). Same deal β€” brief and mysterious. ✨


C

!> C is COMPLEX array, dimension (MMAX*NSMAX) !>

C is a COMPLEX array, dimension (MMAX*NSMAX). Short king. πŸ‘‘


S

!> S is REAL array, dimension !> (min(MMAX,NMAX)) !>

S is a REAL array, dimension (min(MMAX,NMAX)). Note the min β€” she only needs as much room as the smaller of the two. πŸ’…


COPYS

!> COPYS is REAL array, dimension !> (min(MMAX,NMAX)) !>

COPYS is a REAL array, dimension (min(MMAX,NMAX)). Matching set with S, cute. πŸŽ€


NOUT

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

NOUT is an INTEGER β€” the unit number for output. That's where the results go. πŸ¦‹


🌟 Author 🌟

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

Definition at line 190 of file cdrvls.f.


πŸ’œ Author (again, yes really) πŸ’œ

Generated automatically by Doxygen for LAPACK from the source code. Not a human, not a vibe, just Doxygen doing its thing. 😭


Okay that's the whole page bestie, every last parameter accounted for, no details left behind. 🫢

Sign-off time πŸŽ€ β€” this page is from LAPACK, Version 3.12.0, and the header dates it as TESTING/LIN/cdrvls.f(3). Go forth and test those least-squares drivers, you absolute icon. πŸ’–βœ¨

πŸ“¦ where this page comes from