--- rpl/lapack/lapack/ztgex2.f 2011/07/22 07:38:21 1.9 +++ rpl/lapack/lapack/ztgex2.f 2011/11/21 20:43:22 1.10 @@ -1,10 +1,199 @@ +*> \brief \b ZTGEX2 +* +* =========== DOCUMENTATION =========== +* +* Online html documentation available at +* http://www.netlib.org/lapack/explore-html/ +* +*> \htmlonly +*> Download ZTGEX2 + dependencies +*> +*> [TGZ] +*> +*> [ZIP] +*> +*> [TXT] +*> \endhtmlonly +* +* Definition: +* =========== +* +* SUBROUTINE ZTGEX2( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z, +* LDZ, J1, INFO ) +* +* .. Scalar Arguments .. +* LOGICAL WANTQ, WANTZ +* INTEGER INFO, J1, LDA, LDB, LDQ, LDZ, N +* .. +* .. Array Arguments .. +* COMPLEX*16 A( LDA, * ), B( LDB, * ), Q( LDQ, * ), +* $ Z( LDZ, * ) +* .. +* +* +*> \par Purpose: +* ============= +*> +*> \verbatim +*> +*> ZTGEX2 swaps adjacent diagonal 1 by 1 blocks (A11,B11) and (A22,B22) +*> in an upper triangular matrix pair (A, B) by an unitary equivalence +*> transformation. +*> +*> (A, B) must be in generalized Schur canonical form, that is, A and +*> B are both upper triangular. +*> +*> Optionally, the matrices Q and Z of generalized Schur vectors are +*> updated. +*> +*> Q(in) * A(in) * Z(in)**H = Q(out) * A(out) * Z(out)**H +*> Q(in) * B(in) * Z(in)**H = Q(out) * B(out) * Z(out)**H +*> +*> \endverbatim +* +* Arguments: +* ========== +* +*> \param[in] WANTQ +*> \verbatim +*> WANTQ is LOGICAL +*> .TRUE. : update the left transformation matrix Q; +*> .FALSE.: do not update Q. +*> \endverbatim +*> +*> \param[in] WANTZ +*> \verbatim +*> WANTZ is LOGICAL +*> .TRUE. : update the right transformation matrix Z; +*> .FALSE.: do not update Z. +*> \endverbatim +*> +*> \param[in] N +*> \verbatim +*> N is INTEGER +*> The order of the matrices A and B. N >= 0. +*> \endverbatim +*> +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX*16 arrays, dimensions (LDA,N) +*> On entry, the matrix A in the pair (A, B). +*> On exit, the updated matrix A. +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim +*> +*> \param[in,out] B +*> \verbatim +*> B is COMPLEX*16 arrays, dimensions (LDB,N) +*> On entry, the matrix B in the pair (A, B). +*> On exit, the updated matrix B. +*> \endverbatim +*> +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER +*> The leading dimension of the array B. LDB >= max(1,N). +*> \endverbatim +*> +*> \param[in,out] Q +*> \verbatim +*> Q is COMPLEX*16 array, dimension (LDZ,N) +*> If WANTQ = .TRUE, on entry, the unitary matrix Q. On exit, +*> the updated matrix Q. +*> Not referenced if WANTQ = .FALSE.. +*> \endverbatim +*> +*> \param[in] LDQ +*> \verbatim +*> LDQ is INTEGER +*> The leading dimension of the array Q. LDQ >= 1; +*> If WANTQ = .TRUE., LDQ >= N. +*> \endverbatim +*> +*> \param[in,out] Z +*> \verbatim +*> Z is COMPLEX*16 array, dimension (LDZ,N) +*> If WANTZ = .TRUE, on entry, the unitary matrix Z. On exit, +*> the updated matrix Z. +*> Not referenced if WANTZ = .FALSE.. +*> \endverbatim +*> +*> \param[in] LDZ +*> \verbatim +*> LDZ is INTEGER +*> The leading dimension of the array Z. LDZ >= 1; +*> If WANTZ = .TRUE., LDZ >= N. +*> \endverbatim +*> +*> \param[in] J1 +*> \verbatim +*> J1 is INTEGER +*> The index to the first block (A11, B11). +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> =0: Successful exit. +*> =1: The transformed matrix pair (A, B) would be too far +*> from generalized Schur form; the problem is ill- +*> conditioned. +*> \endverbatim +* +* Authors: +* ======== +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16GEauxiliary +* +*> \par Further Details: +* ===================== +*> +*> In the current code both weak and strong stability tests are +*> performed. The user can omit the strong stability test by changing +*> the internal logical parameter WANDS to .FALSE.. See ref. [2] for +*> details. +* +*> \par Contributors: +* ================== +*> +*> Bo Kagstrom and Peter Poromaa, Department of Computing Science, +*> Umea University, S-901 87 Umea, Sweden. +* +*> \par References: +* ================ +*> +*> [1] B. Kagstrom; A Direct Method for Reordering Eigenvalues in the +*> Generalized Real Schur Form of a Regular Matrix Pair (A, B), in +*> M.S. Moonen et al (eds), Linear Algebra for Large Scale and +*> Real-Time Applications, Kluwer Academic Publ. 1993, pp 195-218. +*> \n +*> [2] B. Kagstrom and P. Poromaa; Computing Eigenspaces with Specified +*> Eigenvalues of a Regular Matrix Pair (A, B) and Condition +*> Estimation: Theory, Algorithms and Software, Report UMINF-94.04, +*> Department of Computing Science, Umea University, S-901 87 Umea, +*> Sweden, 1994. Also as LAPACK Working Note 87. To appear in +*> Numerical Algorithms, 1996. +*> +* ===================================================================== SUBROUTINE ZTGEX2( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z, $ LDZ, J1, INFO ) * -* -- LAPACK auxiliary routine (version 3.3.1) -- +* -- LAPACK auxiliary routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- -* -- April 2011 -- +* November 2011 * * .. Scalar Arguments .. LOGICAL WANTQ, WANTZ @@ -15,103 +204,6 @@ $ Z( LDZ, * ) * .. * -* Purpose -* ======= -* -* ZTGEX2 swaps adjacent diagonal 1 by 1 blocks (A11,B11) and (A22,B22) -* in an upper triangular matrix pair (A, B) by an unitary equivalence -* transformation. -* -* (A, B) must be in generalized Schur canonical form, that is, A and -* B are both upper triangular. -* -* Optionally, the matrices Q and Z of generalized Schur vectors are -* updated. -* -* Q(in) * A(in) * Z(in)**H = Q(out) * A(out) * Z(out)**H -* Q(in) * B(in) * Z(in)**H = Q(out) * B(out) * Z(out)**H -* -* -* Arguments -* ========= -* -* WANTQ (input) LOGICAL -* .TRUE. : update the left transformation matrix Q; -* .FALSE.: do not update Q. -* -* WANTZ (input) LOGICAL -* .TRUE. : update the right transformation matrix Z; -* .FALSE.: do not update Z. -* -* N (input) INTEGER -* The order of the matrices A and B. N >= 0. -* -* A (input/output) COMPLEX*16 arrays, dimensions (LDA,N) -* On entry, the matrix A in the pair (A, B). -* On exit, the updated matrix A. -* -* LDA (input) INTEGER -* The leading dimension of the array A. LDA >= max(1,N). -* -* B (input/output) COMPLEX*16 arrays, dimensions (LDB,N) -* On entry, the matrix B in the pair (A, B). -* On exit, the updated matrix B. -* -* LDB (input) INTEGER -* The leading dimension of the array B. LDB >= max(1,N). -* -* Q (input/output) COMPLEX*16 array, dimension (LDZ,N) -* If WANTQ = .TRUE, on entry, the unitary matrix Q. On exit, -* the updated matrix Q. -* Not referenced if WANTQ = .FALSE.. -* -* LDQ (input) INTEGER -* The leading dimension of the array Q. LDQ >= 1; -* If WANTQ = .TRUE., LDQ >= N. -* -* Z (input/output) COMPLEX*16 array, dimension (LDZ,N) -* If WANTZ = .TRUE, on entry, the unitary matrix Z. On exit, -* the updated matrix Z. -* Not referenced if WANTZ = .FALSE.. -* -* LDZ (input) INTEGER -* The leading dimension of the array Z. LDZ >= 1; -* If WANTZ = .TRUE., LDZ >= N. -* -* J1 (input) INTEGER -* The index to the first block (A11, B11). -* -* INFO (output) INTEGER -* =0: Successful exit. -* =1: The transformed matrix pair (A, B) would be too far -* from generalized Schur form; the problem is ill- -* conditioned. -* -* -* Further Details -* =============== -* -* Based on contributions by -* Bo Kagstrom and Peter Poromaa, Department of Computing Science, -* Umea University, S-901 87 Umea, Sweden. -* -* In the current code both weak and strong stability tests are -* performed. The user can omit the strong stability test by changing -* the internal logical parameter WANDS to .FALSE.. See ref. [2] for -* details. -* -* [1] B. Kagstrom; A Direct Method for Reordering Eigenvalues in the -* Generalized Real Schur Form of a Regular Matrix Pair (A, B), in -* M.S. Moonen et al (eds), Linear Algebra for Large Scale and -* Real-Time Applications, Kluwer Academic Publ. 1993, pp 195-218. -* -* [2] B. Kagstrom and P. Poromaa; Computing Eigenspaces with Specified -* Eigenvalues of a Regular Matrix Pair (A, B) and Condition -* Estimation: Theory, Algorithms and Software, Report UMINF-94.04, -* Department of Computing Science, Umea University, S-901 87 Umea, -* Sweden, 1994. Also as LAPACK Working Note 87. To appear in -* Numerical Algorithms, 1996. -* * ===================================================================== * * .. Parameters ..