ZDRGVX(3)

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

πŸ’… ZDRGVX(3) β€” bestie’s LAPACK era 🌈

okay so this is the Library Functions Manual page for ZDRGVX(3), and we are absolutely in LAPACK test-driver territory. Buckle up, queen πŸŽ€


🌸 NAME 🌸

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


✨ SYNOPSIS ✨

🧚 Functions/Subroutines

       subroutine ZDRGVX (nsize, thresh, nin, nout, a, lda, b, ai, bi, alpha,
           beta, vl, vr, ilo, ihi, lscale, rscale, s, dtru, dif, diftru, work,
           lwork, rwork, iwork, liwork, result, bwork, info)
           ZDRGVX

πŸ¦‹ FUNCTION/SUBROUTINE DOCUMENTATION πŸ¦‹

πŸŽ€ subroutine ZDRGVX

   subroutine ZDRGVX (integer nsize, double precision thresh, integer nin,
       integer nout, complex*16, dimension( lda, * ) a, integer lda,
       complex*16, dimension( lda, * ) b, complex*16, dimension( lda, * ) ai,
       complex*16, dimension( lda, * ) bi, complex*16, dimension( * ) alpha,
       complex*16, dimension( * ) beta, complex*16, dimension( lda, * ) vl,
       complex*16, dimension( lda, * ) vr, integer ilo, integer ihi, double
       precision, dimension( * ) lscale, double precision, dimension( * )
       rscale, double precision, dimension( * ) s, double precision, dimension(
       * ) dtru, double precision, dimension( * ) dif, double precision,
       dimension( * ) diftru, complex*16, dimension( * ) work, integer lwork,
       double precision, dimension( * ) rwork, integer, dimension( * ) iwork,
       integer liwork, double precision, dimension( 4 ) result, logical,
       dimension( * ) bwork, integer info)
       ZDRGVX

🎯 Purpose

Bestie, this one checks the nonsymmetric generalized eigenvalue problem expert driver ZGGEVX. πŸ’…

ZGGEVX computes the generalized eigenvalues, (optionally) the left and/or right eigenvectors, (optionally) computes a balancing transformation to improve the conditioning, and (optionally) reciprocal condition numbers for the eigenvalues and eigenvectors.

When ZDRGVX is called with NSIZE > 0, two types of test matrix pairs are generated by the subroutine DLATM6 and test the driver ZGGEVX. The test matrices have the known exact condition numbers for eigenvalues. For the condition numbers of the eigenvectors corresponding the first and last eigenvalues are also know β€œexactly” (see ZLATM6). For each matrix pair, the following tests will be performed and compared with the threshold THRESH.

  1. max over all left eigenvalue/-vector pairs (beta/alpha,l) of
   | l**H * (beta A - alpha B) | / ( ulp max( |beta A|, |alpha B| ) )

where l**H is the conjugate transpose of l.

  1. max over all right eigenvalue/-vector pairs (beta/alpha,r) of
      | (beta A - alpha B) r | / ( ulp max( |beta A|, |alpha B| ) )
  1. The condition number S(i) of eigenvalues computed by ZGGEVX differs less than a factor THRESH from the exact S(i) (see ZLATM6).
  2. DIF(i) computed by ZTGSNA differs less than a factor 10*THRESH from the exact value (for the 1st and 5th vectors only).

πŸ§ͺ Test Matrices

The original has the whole Test Matrices / ============= banner moment, and here’s the tea:

Two kinds of test matrix pairs

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

are used in the tests:

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

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 from { sqrt(sqrt(ULP)), 0.1, 1, 10, 1/sqrt(sqrt(ULP)) }.


πŸ“ Parameters πŸ“

  • NSIZE β€” INTEGER. The number of sizes of matrices to use. NSIZE must be at least zero. If it is zero, no randomly generated matrices are tested, but any test matrices read from NIN will be tested. If it is not zero, then N = 5.
  • THRESH β€” DOUBLE PRECISION. The source page has a lil gap here bestie 😭: β€œA test will count as [blank] if the [blank], computed as described above, exceeds THRESH.” Then: β€œNote that the error is scaled to be O(1), so THRESH should be a reasonably small multiple of 1, e.g., 10 or 100. In particular, it should not depend on the precision (single vs. double) or the size of the matrix. It must be at least zero.”
  • NIN β€” INTEGER. The FORTRAN unit number for reading in the data file of problems to solve.
  • NOUT β€” INTEGER. The FORTRAN unit number for printing out error messages (e.g., if a routine returns IINFO not equal to 0.)
  • A β€” COMPLEX*16 array, dimension (LDA, NSIZE). Used to hold the matrix whose eigenvalues are to be computed. On exit, A contains the last matrix actually used.
  • LDA β€” INTEGER. The leading dimension of A, B, AI, BI, Ao, and Bo. It must be at least 1 and at least NSIZE.
  • B β€” COMPLEX*16 array, dimension (LDA, NSIZE). Used to hold the matrix whose eigenvalues are to be computed. On exit, B contains the last matrix actually used.
  • AI β€” COMPLEX*16 array, dimension (LDA, NSIZE). Copy of A, modified by ZGGEVX.
  • BI β€” COMPLEX*16 array, dimension (LDA, NSIZE). Copy of B, modified by ZGGEVX.
  • ALPHA β€” COMPLEX*16 array, dimension (NSIZE).
  • BETA β€” COMPLEX*16 array, dimension (NSIZE). On exit, ALPHA/BETA are the eigenvalues.
  • VL β€” COMPLEX*16 array, dimension (LDA, NSIZE). VL holds the left eigenvectors computed by ZGGEVX.
  • VR β€” COMPLEX*16 array, dimension (LDA, NSIZE). VR holds the right eigenvectors computed by ZGGEVX.
  • ILO β€” INTEGER.
  • IHI β€” INTEGER.
  • LSCALE β€” DOUBLE PRECISION array, dimension (N).
  • RSCALE β€” DOUBLE PRECISION array, dimension (N).
  • S β€” DOUBLE PRECISION array, dimension (N).
  • DTRU β€” DOUBLE PRECISION array, dimension (N).
  • DIF β€” DOUBLE PRECISION array, dimension (N).
  • DIFTRU β€” DOUBLE PRECISION array, dimension (N).
  • WORK β€” COMPLEX*16 array, dimension (LWORK).
  • LWORK β€” INTEGER. Leading dimension of WORK. LWORK >= 2*N*N + 2*N.
  • RWORK β€” DOUBLE PRECISION array, dimension (6*N).
  • IWORK β€” INTEGER array, dimension (LIWORK).
  • LIWORK β€” INTEGER. Leading dimension of IWORK. LIWORK >= N+2.
  • RESULT β€” DOUBLE PRECISION array, dimension (4).
  • BWORK β€” LOGICAL array, dimension (N).
  • INFO β€” INTEGER.
= 0:  successful exit
< 0:  if INFO = -i, the i-th argument had an illegal value.
> 0:  A routine returned an error code.

πŸ’– Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Definition at line 293 of file zdrgvx.f.


πŸ‘‘ AUTHOR πŸ‘‘

Generated automatically by Doxygen for LAPACK from the source code.


cute sign-off: this iconic page is LAPACK Version 3.12.0, from /home/abui...IG/zdrgvx.f(3). Go be brilliant with your generalized eigenvalue testing, bestie πŸ«ΆπŸ’œ
πŸ“¦ where this page comes from