TESTING/MATGEN/dlatm6.f(3)

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

✨ TESTING/MATGEN/dlatm6.f ✨

okay bestie, so this is a total gem from the LAPACK crew β€” it's literally a whole Fortran file that generates test matrices for the generalized eigenvalue problem πŸŽ€ it's giving "math girlie goes to the matrix gym" and honestly? obsessed. no cap, it's iconic for testing eigenvalue stuff. iykyk πŸ’…


🌸 SYNOPSIS 🌸

Functions/Subroutines

subroutine dlatm6 (type, n, a, lda, b, x, ldx, y, ldy, alpha, beta, wx,
    wy, s, dif)

that's the whole signature, bestie β€” it's a subroutine called DLATM6 and it takes a lot of arguments. don't panic, we're gonna walk through every single one πŸ’–


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

subroutine dlatm6 (integer type, integer n, double precision, dimension(
    lda, * ) a, integer lda, double precision, dimension( lda, * ) b, double
    precision, dimension( ldx, * ) x, integer ldx, double precision,
    dimension( ldy, * ) y, integer ldy, double precision alpha, double
    precision beta, double precision wx, double precision wy, double
    precision, dimension( * ) s, double precision, dimension( * ) dif)

✨ Purpose ✨

okay so here's the tea: DLATM6 generates test matrices for the generalized eigenvalue problem, plus their corresponding right and left eigenvector matrices, and also reciprocal condition numbers for all eigenvalues and the reciprocal condition numbers of eigenvectors corresponding to the 1th and 5th eigenvalues. it's giving "overachiever" and we love that for it 😭✨

πŸ’œ Test Matrices πŸ’œ

there are two kinds of test matrix pairs:

(A, B) = inverse(YH) * (Da, Db) * inverse(X)

these are used in the tests β€” periodt.

Type 1:

Da = 1+a   0    0    0    0    Db = 1   0   0   0   0
      0   2+a   0    0    0         0   1   0   0   0
      0    0   3+a   0    0         0   0   1   0   0
      0    0    0   4+a   0         0   0   0   1   0
      0    0    0    0   5+a ,      0   0   0   0   1 , and

Type 2:

Da =  1   -1    0    0    0    Db = 1   0   0   0   0
      1    1    0    0    0         0   1   0   0   0
      0    0    1    0    0         0   0   1   0   0
      0    0    0   1+a  1+b        0   0   0   1   0
      0    0    0  -1-b  1+a ,      0   0   0   0   1 .

in both cases the same inverse(YH) and inverse(X) are used to compute (A, B), giving the exact eigenvectors to (A,B) as (YH, X):

YH:  =  1    0   -y    y   -y    X =  1   0  -x  -x   x
        0    1   -y    y   -y         0   1   x  -x  -x
        0    0    1    0    0         0   0   1   0   0
        0    0    0    1    0         0   0   0   1   0
        0    0    0    0    1,        0   0   0   0   1 ,

where a, b, x and y will have all values independently of each other. no cap, they're all free agents living their best lives πŸ¦‹


🌈 Parameters 🌈

  • TYPE β€” TYPE is INTEGER. Specifies the problem type (see further details). it's giving "pick your fighter" πŸ’…
  • N β€” N is INTEGER. Size of the matrices A and B. lowkey the main character dimension ngl πŸ‘‘
  • A β€” A is DOUBLE PRECISION array, dimension (LDA, N). On exit A N-by-N is initialized according to TYPE. she gets filled in on the way out, slay ✨
  • LDA β€” LDA is INTEGER. The leading dimension of A and of B. it's the boss of both, fr fr
  • B β€” B is DOUBLE PRECISION array, dimension (LDA, N). On exit B N-by-N is initialized according to TYPE. same energy as A, iconic πŸŽ€
  • X β€” X is DOUBLE PRECISION array, dimension (LDX, N). On exit X is the N-by-N matrix of right eigenvectors. right eigenvectors are literally main character energy πŸ’–
  • LDX β€” LDX is INTEGER. The leading dimension of X. yes bestie, another leading dimension, we stay hydrated πŸ’§
  • Y β€” Y is DOUBLE PRECISION array, dimension (LDY, N). On exit Y is the N-by-N matrix of left eigenvectors. left eigenvectors said "we're here too" πŸ™ˆ
  • LDY β€” LDY is INTEGER. The leading dimension of Y. third leading dimension of the day, we love consistency 🌸
  • ALPHA β€” ALPHA is DOUBLE PRECISION. just vibes, it's a double precision scalar ✨
  • BETA β€” BETA is DOUBLE PRECISION. Weighting constants for matrix A. okay so both ALPHA and BETA are weighting constants for matrix A β€” they're a duo, a package deal πŸ’œ
  • WX β€” WX is DOUBLE PRECISION. Constant for right eigenvector matrix. holding it down for the right side 🫢
  • WY β€” WY is DOUBLE PRECISION. Constant for left eigenvector matrix. the left side's ride or die ⭐
  • S β€” S is DOUBLE PRECISION array, dimension (N). S(i) is the reciprocal condition number for eigenvalue i. literally tracking how well-conditioned each eigenvalue is, no big deal πŸ’…
  • DIF β€” DIF is DOUBLE PRECISION array, dimension (N). DIF(i) is the reciprocal condition number for eigenvector i. same but for eigenvectors β€” it's giving "we contain multitudes" πŸ”₯
bestie reminder: all these !> lines in the original are Doxygen comment markers β€” that's just how the source code documents itself, it's not something you type. iykyk 🧚

πŸ‘‘ Author πŸ‘‘

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

the whole academic squad came together for this one β€” collaborative queens πŸ‘‘βœ¨

Definition at line 174 of file dlatm6.f.

πŸ’– Author (of this page) πŸ’–

Generated automatically by Doxygen for LAPACK from the source code.


and that's the whole page, bestie! πŸ’… this was LAPACK β€” Version 3.12.0 β€” all auto-generated by Doxygen from the source code, and it's literally so cunty of them to document everything this thoroughly. periodt. πŸŽ€βœ¨πŸ¦‹πŸ’œ

πŸ“¦ where this page comes from