diff options
author | philippe.theveny <philippe.theveny@8a072113-8704-0410-8d35-dd094bca7971> | 2015-02-24 23:50:54 +0000 |
---|---|---|
committer | philippe.theveny <philippe.theveny@8a072113-8704-0410-8d35-dd094bca7971> | 2015-02-24 23:50:54 +0000 |
commit | 6273f536d15680513e8cddfc4d8baa88ad2c64df (patch) | |
tree | a7f3303149eda2542ad7cf05fb470b60872e0161 /TESTING/EIG/zerrgg.f | |
parent | c95be035b79cca2ba9e68c961d537344c5390765 (diff) | |
download | lapack-6273f536d15680513e8cddfc4d8baa88ad2c64df.tar.gz lapack-6273f536d15680513e8cddfc4d8baa88ad2c64df.tar.bz2 lapack-6273f536d15680513e8cddfc4d8baa88ad2c64df.zip |
Add xGGHD3: blocked Hessenberg reduction, code from Daniel Kressner.
Add xGGES3 and xGGEV3: computation of the Schur form, the Schur vectors, and
the generalized eigenvalues using the blocked Hessenberg reduction.
Diffstat (limited to 'TESTING/EIG/zerrgg.f')
-rw-r--r-- | TESTING/EIG/zerrgg.f | 176 |
1 files changed, 156 insertions, 20 deletions
diff --git a/TESTING/EIG/zerrgg.f b/TESTING/EIG/zerrgg.f index a3f116a3..5ed7ee61 100644 --- a/TESTING/EIG/zerrgg.f +++ b/TESTING/EIG/zerrgg.f @@ -2,19 +2,19 @@ * * =========== DOCUMENTATION =========== * -* Online html documentation available at -* http://www.netlib.org/lapack/explore-html/ +* Online html documentation available at +* http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZERRGG( PATH, NUNIT ) -* +* * .. Scalar Arguments .. * CHARACTER*3 PATH * INTEGER NUNIT * .. -* +* * *> \par Purpose: * ============= @@ -22,8 +22,9 @@ *> \verbatim *> *> ZERRGG tests the error exits for ZGGES, ZGGESX, ZGGEV, ZGGEVX, -*> ZGGGLM, ZGGHRD, ZGGLSE, ZGGQRF, ZGGRQF, ZGGSVD, ZGGSVP, ZHGEQZ, -*> ZTGEVC, ZTGEXC, ZTGSEN, ZTGSJA, ZTGSNA, ZTGSYL, and ZUNCSD. +*> ZGGES3, ZGGEV3, ZGGGLM, ZGGHRD, ZGGLSE, ZGGQRF, ZGGRQF, ZGGSVD, +*> ZGGSVP, ZHGEQZ, ZTGEVC, ZTGEXC, ZTGSEN, ZTGSJA, ZTGSNA, ZTGSYL, +*> and ZUNCSD. *> \endverbatim * * Arguments: @@ -44,10 +45,10 @@ * Authors: * ======== * -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. * *> \date November 2011 * @@ -95,10 +96,10 @@ EXTERNAL LSAMEN, ZLCTES, ZLCTSX * .. * .. External Subroutines .. - EXTERNAL CHKXER, ZGGES, ZGGESX, ZGGEV, ZGGEVX, ZGGGLM, + EXTERNAL CHKXER, ZGGES, ZGGESX, ZGGEV, ZGGEVX, ZGGGLM, $ ZGGHRD, ZGGLSE, ZGGQRF, ZGGRQF, ZGGSVD, ZGGSVP, $ ZHGEQZ, ZTGEVC, ZTGEXC, ZTGSEN, ZTGSJA, ZTGSNA, - $ ZTGSYL, ZUNCSD + $ ZTGSYL, ZUNCSD, ZGGES3, ZGGEV3, ZGGHD3 * .. * .. Scalars in Common .. LOGICAL LERR, OK @@ -171,6 +172,47 @@ CALL CHKXER( 'ZGGHRD', INFOT, NOUT, LERR, OK ) NT = NT + 9 * +* ZGGHD3 +* + SRNAMT = 'ZGGHD3' + INFOT = 1 + CALL ZGGHD3( '/', 'N', 0, 1, 0, A, 1, B, 1, Q, 1, Z, 1, W, LW, + $ INFO ) + CALL CHKXER( 'ZGGHD3', INFOT, NOUT, LERR, OK ) + INFOT = 2 + CALL ZGGHD3( 'N', '/', 0, 1, 0, A, 1, B, 1, Q, 1, Z, 1, W, LW, + $ INFO ) + CALL CHKXER( 'ZGGHD3', INFOT, NOUT, LERR, OK ) + INFOT = 3 + CALL ZGGHD3( 'N', 'N', -1, 0, 0, A, 1, B, 1, Q, 1, Z, 1, W, LW, + $ INFO ) + CALL CHKXER( 'ZGGHD3', INFOT, NOUT, LERR, OK ) + INFOT = 4 + CALL ZGGHD3( 'N', 'N', 0, 0, 0, A, 1, B, 1, Q, 1, Z, 1, W, LW, + $ INFO ) + CALL CHKXER( 'ZGGHD3', INFOT, NOUT, LERR, OK ) + INFOT = 5 + CALL ZGGHD3( 'N', 'N', 0, 1, 1, A, 1, B, 1, Q, 1, Z, 1, W, LW, + $ INFO ) + CALL CHKXER( 'ZGGHD3', INFOT, NOUT, LERR, OK ) + INFOT = 7 + CALL ZGGHD3( 'N', 'N', 2, 1, 1, A, 1, B, 2, Q, 1, Z, 1, W, LW, + $ INFO ) + CALL CHKXER( 'ZGGHD3', INFOT, NOUT, LERR, OK ) + INFOT = 9 + CALL ZGGHD3( 'N', 'N', 2, 1, 1, A, 2, B, 1, Q, 1, Z, 1, W, LW, + $ INFO ) + CALL CHKXER( 'ZGGHD3', INFOT, NOUT, LERR, OK ) + INFOT = 11 + CALL ZGGHD3( 'V', 'N', 2, 1, 1, A, 2, B, 2, Q, 1, Z, 1, W, LW, + $ INFO ) + CALL CHKXER( 'ZGGHD3', INFOT, NOUT, LERR, OK ) + INFOT = 13 + CALL ZGGHD3( 'N', 'V', 2, 1, 1, A, 2, B, 2, Q, 1, Z, 1, W, LW, + $ INFO ) + CALL CHKXER( 'ZGGHD3', INFOT, NOUT, LERR, OK ) + NT = NT + 9 +* * ZHGEQZ * SRNAMT = 'ZHGEQZ' @@ -520,56 +562,56 @@ $ -1, 0, 0, A, 1, A, $ 1, A, 1, A, 1, A, $ A, 1, A, 1, A, 1, A, - $ 1, W, LW, RW, LW, IW, INFO ) + $ 1, W, LW, RW, LW, IW, INFO ) CALL CHKXER( 'ZUNCSD', INFOT, NOUT, LERR, OK ) INFOT = 8 CALL ZUNCSD( 'Y', 'Y', 'Y', 'Y', 'N', 'N', $ 1, -1, 0, A, 1, A, $ 1, A, 1, A, 1, A, $ A, 1, A, 1, A, 1, A, - $ 1, W, LW, RW, LW, IW, INFO ) + $ 1, W, LW, RW, LW, IW, INFO ) CALL CHKXER( 'ZUNCSD', INFOT, NOUT, LERR, OK ) INFOT = 9 CALL ZUNCSD( 'Y', 'Y', 'Y', 'Y', 'N', 'N', $ 1, 1, -1, A, 1, A, $ 1, A, 1, A, 1, A, $ A, 1, A, 1, A, 1, A, - $ 1, W, LW, RW, LW, IW, INFO ) + $ 1, W, LW, RW, LW, IW, INFO ) CALL CHKXER( 'ZUNCSD', INFOT, NOUT, LERR, OK ) INFOT = 11 CALL ZUNCSD( 'Y', 'Y', 'Y', 'Y', 'N', 'N', $ 1, 1, 1, A, -1, A, $ 1, A, 1, A, 1, A, $ A, 1, A, 1, A, 1, A, - $ 1, W, LW, RW, LW, IW, INFO ) + $ 1, W, LW, RW, LW, IW, INFO ) CALL CHKXER( 'ZUNCSD', INFOT, NOUT, LERR, OK ) INFOT = 20 CALL ZUNCSD( 'Y', 'Y', 'Y', 'Y', 'N', 'N', $ 1, 1, 1, A, 1, A, $ 1, A, 1, A, 1, A, $ A, -1, A, 1, A, 1, A, - $ 1, W, LW, RW, LW, IW, INFO ) + $ 1, W, LW, RW, LW, IW, INFO ) CALL CHKXER( 'ZUNCSD', INFOT, NOUT, LERR, OK ) INFOT = 22 CALL ZUNCSD( 'Y', 'Y', 'Y', 'Y', 'N', 'N', $ 1, 1, 1, A, 1, A, $ 1, A, 1, A, 1, A, $ A, 1, A, -1, A, 1, A, - $ 1, W, LW, RW, LW, IW, INFO ) + $ 1, W, LW, RW, LW, IW, INFO ) CALL CHKXER( 'ZUNCSD', INFOT, NOUT, LERR, OK ) INFOT = 24 CALL ZUNCSD( 'Y', 'Y', 'Y', 'Y', 'N', 'N', $ 1, 1, 1, A, 1, A, $ 1, A, 1, A, 1, A, $ A, 1, A, 1, A, -1, A, - $ 1, W, LW, RW, LW, IW, INFO ) + $ 1, W, LW, RW, LW, IW, INFO ) CALL CHKXER( 'ZUNCSD', INFOT, NOUT, LERR, OK ) INFOT = 26 CALL ZUNCSD( 'Y', 'Y', 'Y', 'Y', 'N', 'N', $ 1, 1, 1, A, 1, A, $ 1, A, 1, A, 1, A, $ A, 1, A, 1, A, 1, A, - $ -1, W, LW, RW, LW, IW, INFO ) + $ -1, W, LW, RW, LW, IW, INFO ) CALL CHKXER( 'ZUNCSD', INFOT, NOUT, LERR, OK ) NT = NT + 8 * @@ -679,6 +721,55 @@ CALL CHKXER( 'ZGGES ', INFOT, NOUT, LERR, OK ) NT = NT + 11 * +* ZGGES3 +* + SRNAMT = 'ZGGES3' + INFOT = 1 + CALL ZGGES3( '/', 'N', 'S', ZLCTES, 1, A, 1, B, 1, SDIM, ALPHA, + $ BETA, Q, 1, U, 1, W, 1, RW, BW, INFO ) + CALL CHKXER( 'ZGGES3', INFOT, NOUT, LERR, OK ) + INFOT = 2 + CALL ZGGES3( 'N', '/', 'S', ZLCTES, 1, A, 1, B, 1, SDIM, ALPHA, + $ BETA, Q, 1, U, 1, W, 1, RW, BW, INFO ) + CALL CHKXER( 'ZGGES3', INFOT, NOUT, LERR, OK ) + INFOT = 3 + CALL ZGGES3( 'N', 'V', '/', ZLCTES, 1, A, 1, B, 1, SDIM, ALPHA, + $ BETA, Q, 1, U, 1, W, 1, RW, BW, INFO ) + CALL CHKXER( 'ZGGES3', INFOT, NOUT, LERR, OK ) + INFOT = 5 + CALL ZGGES3( 'N', 'V', 'S', ZLCTES, -1, A, 1, B, 1, SDIM, + $ ALPHA, BETA, Q, 1, U, 1, W, 1, RW, BW, INFO ) + CALL CHKXER( 'ZGGES3', INFOT, NOUT, LERR, OK ) + INFOT = 7 + CALL ZGGES3( 'N', 'V', 'S', ZLCTES, 1, A, 0, B, 1, SDIM, ALPHA, + $ BETA, Q, 1, U, 1, W, 1, RW, BW, INFO ) + CALL CHKXER( 'ZGGES3', INFOT, NOUT, LERR, OK ) + INFOT = 9 + CALL ZGGES3( 'N', 'V', 'S', ZLCTES, 1, A, 1, B, 0, SDIM, ALPHA, + $ BETA, Q, 1, U, 1, W, 1, RW, BW, INFO ) + CALL CHKXER( 'ZGGES3', INFOT, NOUT, LERR, OK ) + INFOT = 14 + CALL ZGGES3( 'N', 'V', 'S', ZLCTES, 1, A, 1, B, 1, SDIM, ALPHA, + $ BETA, Q, 0, U, 1, W, 1, RW, BW, INFO ) + CALL CHKXER( 'ZGGES3', INFOT, NOUT, LERR, OK ) + INFOT = 14 + CALL ZGGES3( 'V', 'V', 'S', ZLCTES, 2, A, 2, B, 2, SDIM, ALPHA, + $ BETA, Q, 1, U, 2, W, 1, RW, BW, INFO ) + CALL CHKXER( 'ZGGES3', INFOT, NOUT, LERR, OK ) + INFOT = 16 + CALL ZGGES3( 'N', 'V', 'S', ZLCTES, 1, A, 1, B, 1, SDIM, ALPHA, + $ BETA, Q, 1, U, 0, W, 1, RW, BW, INFO ) + CALL CHKXER( 'ZGGES3', INFOT, NOUT, LERR, OK ) + INFOT = 16 + CALL ZGGES3( 'V', 'V', 'S', ZLCTES, 2, A, 2, B, 2, SDIM, ALPHA, + $ BETA, Q, 2, U, 1, W, 1, RW, BW, INFO ) + CALL CHKXER( 'ZGGES3', INFOT, NOUT, LERR, OK ) + INFOT = 18 + CALL ZGGES3( 'V', 'V', 'S', ZLCTES, 2, A, 2, B, 2, SDIM, ALPHA, + $ BETA, Q, 2, U, 2, W, 1, RW, BW, INFO ) + CALL CHKXER( 'ZGGES3', INFOT, NOUT, LERR, OK ) + NT = NT + 11 +* * ZGGESX * SRNAMT = 'ZGGESX' @@ -794,6 +885,51 @@ CALL CHKXER( 'ZGGEV ', INFOT, NOUT, LERR, OK ) NT = NT + 10 * +* ZGGEV3 +* + SRNAMT = 'ZGGEV3' + INFOT = 1 + CALL ZGGEV3( '/', 'N', 1, A, 1, B, 1, ALPHA, BETA, Q, 1, U, 1, + $ W, 1, RW, INFO ) + CALL CHKXER( 'ZGGEV3', INFOT, NOUT, LERR, OK ) + INFOT = 2 + CALL ZGGEV3( 'N', '/', 1, A, 1, B, 1, ALPHA, BETA, Q, 1, U, 1, + $ W, 1, RW, INFO ) + CALL CHKXER( 'ZGGEV3', INFOT, NOUT, LERR, OK ) + INFOT = 3 + CALL ZGGEV3( 'V', 'V', -1, A, 1, B, 1, ALPHA, BETA, Q, 1, U, 1, + $ W, 1, RW, INFO ) + CALL CHKXER( 'ZGGEV3', INFOT, NOUT, LERR, OK ) + INFOT = 5 + CALL ZGGEV3( 'V', 'V', 1, A, 0, B, 1, ALPHA, BETA, Q, 1, U, 1, + $ W, 1, RW, INFO ) + CALL CHKXER( 'ZGGEV3', INFOT, NOUT, LERR, OK ) + INFOT = 7 + CALL ZGGEV3( 'V', 'V', 1, A, 1, B, 0, ALPHA, BETA, Q, 1, U, 1, + $ W, 1, RW, INFO ) + CALL CHKXER( 'ZGGEV3', INFOT, NOUT, LERR, OK ) + INFOT = 11 + CALL ZGGEV3( 'N', 'V', 1, A, 1, B, 1, ALPHA, BETA, Q, 0, U, 1, + $ W, 1, RW, INFO ) + CALL CHKXER( 'ZGGEV3', INFOT, NOUT, LERR, OK ) + INFOT = 11 + CALL ZGGEV3( 'V', 'V', 2, A, 2, B, 2, ALPHA, BETA, Q, 1, U, 2, + $ W, 1, RW, INFO ) + CALL CHKXER( 'ZGGEV3', INFOT, NOUT, LERR, OK ) + INFOT = 13 + CALL ZGGEV3( 'V', 'N', 2, A, 2, B, 2, ALPHA, BETA, Q, 2, U, 0, + $ W, 1, RW, INFO ) + CALL CHKXER( 'ZGGEV3', INFOT, NOUT, LERR, OK ) + INFOT = 13 + CALL ZGGEV3( 'V', 'V', 2, A, 2, B, 2, ALPHA, BETA, Q, 2, U, 1, + $ W, 1, RW, INFO ) + CALL CHKXER( 'ZGGEV3', INFOT, NOUT, LERR, OK ) + INFOT = 15 + CALL ZGGEV3( 'V', 'V', 1, A, 1, B, 1, ALPHA, BETA, Q, 1, U, 1, + $ W, 1, RW, INFO ) + CALL CHKXER( 'ZGGEV3', INFOT, NOUT, LERR, OK ) + NT = NT + 10 +* * ZGGEVX * SRNAMT = 'ZGGEVX' |