ZBDT01(3)

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

okay so this is ZBDT01(3), straight outta the Library Functions Manual, and bestie we are about to vibe-check a LAPACK reconstruction tester. It’s giving β€œmath but make it group chat.” πŸ’…βœ¨

πŸ’– NAME πŸ’–

The NAME block here is literally a source-file path, no cap β€” split across the line like this:

/home/abuild/rpmbuild/BUILD/lapack-
static-3.12.0-build/lapack-3.12.0/TESTING/EIG/zbdt01.f

That’s the whole NAME situation. 🫢


✨ SYNOPSIS ✨

🧚 Functions/Subroutines 🧚

Here’s the synopsis signature, exactly as written:

subroutine ZBDT01 (m, n, kd, a, lda, q, ldq, d, e, pt, ldpt, work,
           rwork, resid)

And then it hits you with the subroutine label again: ZBDT01. iconic. ⭐

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

Here’s the full-typed documentation signature, character-for-character:

subroutine ZBDT01 (integer m, integer n, integer kd, complex*16, dimension(
       lda, * ) a, integer lda, complex*16, dimension( ldq, * ) q, integer ldq,
       double precision, dimension( * ) d, double precision, dimension( * ) e,
       complex*16, dimension( ldpt, * ) pt, integer ldpt, complex*16,
       dimension( * ) work, double precision, dimension( * ) rwork, double
       precision resid)

And yep, the docs label it ZBDT01 again. main character energy. πŸ‘‘

🌸 Purpose 🌸

okay so ZBDT01 reconstructs a general matrix A from its bidiagonal form:

A = Q * B * P**H

where Q is an m by min(m,n) unitary matrix, P**H is a min(m,n) by n unitary matrix, and B is bidiagonal. πŸ¦‹

The test ratio used to check the reduction is:

RESID = norm(A - Q * B * P**H) / ( n * norm(A) * EPS )

where EPS is the machine precision. literally the whole flex. πŸ”₯

πŸŽ€ Parameters πŸŽ€

πŸ’œ M

M is INTEGER. It’s the number of rows of the matrices A and Q. slay. πŸ’œ

πŸ’œ N

N is INTEGER. It’s the number of columns of the matrices A and P**H. πŸ’œ

πŸ’œ KD

KD is INTEGER. Here’s the KD lore, bestie:

  • If KD = 0, B is diagonal and the array E is not referenced.
  • If KD = 1, the reduction was performed by xGEBRD; B is upper bidiagonal if M >= N, and lower bidiagonal if M < N.
  • If KD = -1, the reduction was performed by xGBBRD; B is always upper bidiagonal.

no guessing, that’s exactly the deal. πŸ’…

πŸ’œ A

A is COMPLEX*16 array, dimension (LDA,N). It’s the m by n matrix A. πŸŽ€

πŸ’œ LDA

LDA is INTEGER. It’s the leading dimension of the array A. The rule is LDA >= max(1,M). periodt. ✨

πŸ’œ Q

Q is COMPLEX*16 array, dimension (LDQ,N). It’s the m by min(m,n) unitary matrix Q in the reduction A = Q * B * P**H. πŸ‘‘

πŸ’œ LDQ

LDQ is INTEGER. It’s the leading dimension of the array Q. The rule is LDQ >= max(1,M). πŸ’…

πŸ’œ D

D is DOUBLE PRECISION array, dimension (min(M,N)). These are the diagonal elements of the bidiagonal matrix B. πŸ“

πŸ’œ E

E is DOUBLE PRECISION array, dimension (min(M,N)-1). These are the superdiagonal elements of the bidiagonal matrix B if m >= n, or the subdiagonal elements of B if m < n. 🌸

πŸ’œ PT

PT is COMPLEX*16 array, dimension (LDPT,N). It’s the min(m,n) by n unitary matrix P**H in the reduction A = Q * B * P**H. πŸ¦‹

πŸ’œ LDPT

LDPT is INTEGER. It’s the leading dimension of the array PT. The rule is LDPT >= max(1,min(M,N)). πŸ’–

πŸ’œ WORK

WORK is COMPLEX*16 array, dimension (M+N). that’s it, that’s the workspace. 🫢

πŸ’œ RWORK

RWORK is DOUBLE PRECISION array, dimension (M). real work, real precision. 🌈

πŸ’œ RESID

RESID is DOUBLE PRECISION. It’s the test ratio:

norm(A - Q * B * P**H) / ( n * norm(A) * EPS )

the whole point of the operation. πŸ’―

πŸ‘‘ Author πŸ‘‘

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

πŸ“ Definition at line πŸ“

Definition at line 145 of file zbdt01.f.

🌈 Author 🌈

Generated automatically by Doxygen for LAPACK from the source code.


mwah πŸ’‹ β€” this cutie is from LAPACK, Version 3.12.0, with the footer path /home/abui...IG/zbdt01.f(3). No date line in that footer, just those deets, bestie. πŸ«ΆπŸŽ€

πŸ“¦ where this page comes from