TESTING/EIG/dort01.f(3)

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

πŸ’… TESTING/EIG/dort01.f

okay so bestie, buckle up, because we're diving into dort01 β€” a whole entire little testing subroutine that lives in the LAPACK manual (that's the manual name, yeah, we're fancy) and honestly? it's giving "quality control queen." she checks whether your matrix is actually orthogonal or if you're just saying that. πŸŽ€


✨ SYNOPSIS ✨

🌸 Functions/Subroutines

  • subroutine dort01 (rowcol, m, n, u, ldu, work, lwork, resid) β€” literally the whole thing, this is her

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

πŸ’œ subroutine dort01

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 β€” say it with me: DORT-zero-one. iconic name, no notes. πŸ’…

⭐ Purpose

no cap, here's the whole vibe. 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'.

and alternatively β€” because sometimes life gives you a tiny workspace and you just gotta adapt, bestie β€” if there isn't sufficient workspace to form I - U*U' or I - U'*U, the ratio gets 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. 🫢

also, important lore: 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 like, she'll pick for you if you don't match. main character energy fr fr.

πŸŽ€ Parameters

  • ROWCOL β€” is CHARACTER, obviously πŸ’–

Specifies whether the rows or columns of U should be checked for orthogonality. Used only if M = N.

  • = 'R': check for orthogonal rows of U
  • = 'C': check for orthogonal columns of U
  • M β€” is INTEGER

The number of rows of the matrix U. (yes, m for rows, we don't make the rules)

  • N β€” is INTEGER

The number of columns of the matrix U. (and n for columns, slay)

  • U β€” is DOUBLE PRECISION array, dimension (LDU,N)

The orthogonal matrix U. she's the star of the show 🌟 U is checked for orthogonal columns if m > n or if m = n and ROWCOL = 'C'. U is checked for orthogonal rows if m < n or if m = n and ROWCOL = 'R'.

  • LDU β€” is INTEGER

The leading dimension of the array U. constraint check: LDU >= max(1,M). don't test her on this, she will know πŸ”₯

  • WORK β€” is DOUBLE PRECISION array, dimension (LWORK)

that's the scratch space, the little helper bestie, the emotional support array 🧚

  • LWORK β€” is INTEGER

The length of the array WORK. for best performance, LWORK should be at least N*(N+1) if ROWCOL = 'C' or M*(M+1) if ROWCOL = 'R' β€” but the test will be done even if LWORK is 0. she's flexible like that, periodt. πŸ’€

  • RESID β€” is DOUBLE PRECISION

the moment of truth, the final score, the vibe check result: RESID = norm( I - U * U' ) / ( n * EPS ), if ROWCOL = 'R', or RESID = norm( I - U' * U ) / ( m * EPS ), if ROWCOL = 'C'.


πŸ‘‘ Author

this masterpiece was brought to you by:

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

collab of the century, honestly 🌈

Definition at line 115 of file dort01.f. yes, line 115, she's got receipts. πŸ“


🌸 Author (again, but make it metadata)

Generated automatically by Doxygen for LAPACK from the source code. not a human author this time, just the automation doing its thing πŸ™ˆ


πŸ’– cute sign-off: this page is from LAPACK, Version 3.12.0, and was auto-generated by Doxygen for LAPACK from the source code β€” so if you ever need to cite her, you know exactly where she came from, bestie. go forth and verify those orthogonal matrices, you absolute icon πŸ’…βœ¨πŸ“
πŸ“¦ where this page comes from