DORT01(3)
π
DORT01(3) β like, the Library Functions Manual one, bestie β¨
okay so picture this: you're deep in the LAPACK testing directory, right? and you need to know if a matrix is actually orthogonal or just pretending. that's literally this whole file. welcome to the group chat π«Ά
πΈ NAME πΈ
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/TESTING/EIG/dort01.f
(yeah that's the whole name, she's got a lot going on β a full path as a NAME, main character energy fr π)
β¨ SYNOPSIS β¨
π¦ Functions/Subroutines
subroutine DORT01 (rowcol, m, n, u, ldu, work, lwork, resid)
DORT01
π Function/Subroutine Documentation π
subroutine DORT01 (character rowcol, integer m, integer n, double precision,
dimension( ldu, * ) u, integer ldu, double precision, dimension( * )
work, integer lwork, double precision resid)
DORT01
π Purpose:
!>
!> DORT01 checks that the matrix U is orthogonal by computing the ratio
!>
!> RESID = norm( I - U*U' ) / ( n * EPS ), if ROWCOL = 'R',
!> or
!> RESID = norm( I - U'*U ) / ( m * EPS ), if ROWCOL = 'C'.
!>
!> Alternatively, if there isn't sufficient workspace to form
!> I - U*U' or I - U'*U, the ratio is computed as
!>
!> RESID = abs( I - U*U' ) / ( n * EPS ), if ROWCOL = 'R',
!> or
!> RESID = abs( I - U'*U ) / ( m * EPS ), if ROWCOL = 'C'.
!>
!> where EPS is the machine precision. ROWCOL is used only if m = n;
!> if m > n, ROWCOL is assumed to be 'C', and if m < n, ROWCOL is
!> assumed to be 'R'.
!>
so basically: she builds I - U*U' (or I - U'*U), takes the norm, divides by n * EPS (or m * EPS), and that's your RESID. if the workspace can't even fit that, she doesn't fold, she just switches to abs(...) instead of norm(...) β not me relating π. and ROWCOL only gets a say when m = n; if m > n it's assumed 'C', if m < n it's assumed 'R'. iykyk π
π Parameters π
ROWCOLβ CHARACTER. this is the vibe check: it says whether we're checking the rows or the columns of U for orthogonality. queen only matters ifM = N. options are literally:= 'R': check for orthogonal rows of U π= 'C': check for orthogonal columns of U π§
Mβ INTEGER. the number of rows of the matrix U. periodt.Nβ INTEGER. the number of columns of the matrix U. also periodt.Uβ DOUBLE PRECISION array, dimension(LDU,N). it's the orthogonal matrix U herself π. her columns get checked ifm > n, or ifm = nandROWCOL = 'C'. her rows get checked ifm < n, or ifm = nandROWCOL = 'R'. no cap.LDUβ INTEGER. the leading dimension of the array U. must beLDU >= max(1,M)β that's a hard requirement, don't play with it πWORKβ DOUBLE PRECISION array, dimension(LWORK). that's it, that's the whole description πLWORKβ INTEGER. the length of the arrayWORK. for best performance (β¨ slay β¨),LWORKshould be at leastN*(N+1)ifROWCOL = 'C', orM*(M+1)ifROWCOL = 'R'β but here's the iconic part: the test will be done even ifLWORKis0. she's gonna compute regardless, bestie.RESIDβ DOUBLE PRECISION. this is the whole point:RESID = norm( I - U * U' ) / ( n * EPS ), ifROWCOL = 'R', orRESID = norm( I - U' * U ) / ( m * EPS ), ifROWCOL = 'C'.
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
(give it up for the founding mothers and fathers of this math π«Ά)
Definition at line 115 of file dort01.f. π
β Author β
Generated automatically by Doxygen for LAPACK from the source code. (yes the manpage has two Author sections, and honestly? she's allowed. range π)
and that's the whole page!! go forth and check that orthogonality, bestie π
pinkies-up sign-off from LAPACK, Version 3.12.0, dated /home/abui...IG/dort01.f(3) β see u in the next manpage, mwah ππ
π¦ 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