TESTING/LIN/cdrvls.f(3)
π 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*VwhereUandVare random unitary matrices, andDhas random entries (> 0.1) taken from a uniform distribution(0,1).Ais full rank. πj=2: The same as1, butAis scaled up.j=3: The same as1, butAis scaled down.j=4:A = U*D*VwhereUandVare random unitary matrices, andDhas3*min(M,N)/4random entries (> 0.1) taken from a uniform distribution(0,1), with the remaining entries set to0.Ais rank-deficient. πj=5: The same as4, butAis scaled up.j=6: The same as5, butAis 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
- 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