version 1.7, 2010/08/13 21:03:48
|
version 1.12, 2012/12/14 12:30:22
|
Line 1
|
Line 1
|
|
*> \brief \b DLAEXC swaps adjacent diagonal blocks of a real upper quasi-triangular matrix in Schur canonical form, by an orthogonal similarity transformation. |
|
* |
|
* =========== DOCUMENTATION =========== |
|
* |
|
* Online html documentation available at |
|
* http://www.netlib.org/lapack/explore-html/ |
|
* |
|
*> \htmlonly |
|
*> Download DLAEXC + dependencies |
|
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlaexc.f"> |
|
*> [TGZ]</a> |
|
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dlaexc.f"> |
|
*> [ZIP]</a> |
|
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dlaexc.f"> |
|
*> [TXT]</a> |
|
*> \endhtmlonly |
|
* |
|
* Definition: |
|
* =========== |
|
* |
|
* SUBROUTINE DLAEXC( WANTQ, N, T, LDT, Q, LDQ, J1, N1, N2, WORK, |
|
* INFO ) |
|
* |
|
* .. Scalar Arguments .. |
|
* LOGICAL WANTQ |
|
* INTEGER INFO, J1, LDQ, LDT, N, N1, N2 |
|
* .. |
|
* .. Array Arguments .. |
|
* DOUBLE PRECISION Q( LDQ, * ), T( LDT, * ), WORK( * ) |
|
* .. |
|
* |
|
* |
|
*> \par Purpose: |
|
* ============= |
|
*> |
|
*> \verbatim |
|
*> |
|
*> DLAEXC swaps adjacent diagonal blocks T11 and T22 of order 1 or 2 in |
|
*> an upper quasi-triangular matrix T by an orthogonal similarity |
|
*> transformation. |
|
*> |
|
*> T must be in Schur canonical form, that is, block upper triangular |
|
*> with 1-by-1 and 2-by-2 diagonal blocks; each 2-by-2 diagonal block |
|
*> has its diagonal elemnts equal and its off-diagonal elements of |
|
*> opposite sign. |
|
*> \endverbatim |
|
* |
|
* Arguments: |
|
* ========== |
|
* |
|
*> \param[in] WANTQ |
|
*> \verbatim |
|
*> WANTQ is LOGICAL |
|
*> = .TRUE. : accumulate the transformation in the matrix Q; |
|
*> = .FALSE.: do not accumulate the transformation. |
|
*> \endverbatim |
|
*> |
|
*> \param[in] N |
|
*> \verbatim |
|
*> N is INTEGER |
|
*> The order of the matrix T. N >= 0. |
|
*> \endverbatim |
|
*> |
|
*> \param[in,out] T |
|
*> \verbatim |
|
*> T is DOUBLE PRECISION array, dimension (LDT,N) |
|
*> On entry, the upper quasi-triangular matrix T, in Schur |
|
*> canonical form. |
|
*> On exit, the updated matrix T, again in Schur canonical form. |
|
*> \endverbatim |
|
*> |
|
*> \param[in] LDT |
|
*> \verbatim |
|
*> LDT is INTEGER |
|
*> The leading dimension of the array T. LDT >= max(1,N). |
|
*> \endverbatim |
|
*> |
|
*> \param[in,out] Q |
|
*> \verbatim |
|
*> Q is DOUBLE PRECISION array, dimension (LDQ,N) |
|
*> On entry, if WANTQ is .TRUE., the orthogonal matrix Q. |
|
*> On exit, if WANTQ is .TRUE., the updated matrix Q. |
|
*> If WANTQ is .FALSE., Q is not referenced. |
|
*> \endverbatim |
|
*> |
|
*> \param[in] LDQ |
|
*> \verbatim |
|
*> LDQ is INTEGER |
|
*> The leading dimension of the array Q. |
|
*> LDQ >= 1; and if WANTQ is .TRUE., LDQ >= N. |
|
*> \endverbatim |
|
*> |
|
*> \param[in] J1 |
|
*> \verbatim |
|
*> J1 is INTEGER |
|
*> The index of the first row of the first block T11. |
|
*> \endverbatim |
|
*> |
|
*> \param[in] N1 |
|
*> \verbatim |
|
*> N1 is INTEGER |
|
*> The order of the first block T11. N1 = 0, 1 or 2. |
|
*> \endverbatim |
|
*> |
|
*> \param[in] N2 |
|
*> \verbatim |
|
*> N2 is INTEGER |
|
*> The order of the second block T22. N2 = 0, 1 or 2. |
|
*> \endverbatim |
|
*> |
|
*> \param[out] WORK |
|
*> \verbatim |
|
*> WORK is DOUBLE PRECISION array, dimension (N) |
|
*> \endverbatim |
|
*> |
|
*> \param[out] INFO |
|
*> \verbatim |
|
*> INFO is INTEGER |
|
*> = 0: successful exit |
|
*> = 1: the transformed matrix T would be too far from Schur |
|
*> form; the blocks are not swapped and T and Q are |
|
*> unchanged. |
|
*> \endverbatim |
|
* |
|
* Authors: |
|
* ======== |
|
* |
|
*> \author Univ. of Tennessee |
|
*> \author Univ. of California Berkeley |
|
*> \author Univ. of Colorado Denver |
|
*> \author NAG Ltd. |
|
* |
|
*> \date September 2012 |
|
* |
|
*> \ingroup doubleOTHERauxiliary |
|
* |
|
* ===================================================================== |
SUBROUTINE DLAEXC( WANTQ, N, T, LDT, Q, LDQ, J1, N1, N2, WORK, |
SUBROUTINE DLAEXC( WANTQ, N, T, LDT, Q, LDQ, J1, N1, N2, WORK, |
$ INFO ) |
$ INFO ) |
* |
* |
* -- LAPACK auxiliary routine (version 3.2.2) -- |
* -- LAPACK auxiliary routine (version 3.4.2) -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* June 2010 |
* September 2012 |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
LOGICAL WANTQ |
LOGICAL WANTQ |
Line 14
|
Line 151
|
DOUBLE PRECISION Q( LDQ, * ), T( LDT, * ), WORK( * ) |
DOUBLE PRECISION Q( LDQ, * ), T( LDT, * ), WORK( * ) |
* .. |
* .. |
* |
* |
* Purpose |
|
* ======= |
|
* |
|
* DLAEXC swaps adjacent diagonal blocks T11 and T22 of order 1 or 2 in |
|
* an upper quasi-triangular matrix T by an orthogonal similarity |
|
* transformation. |
|
* |
|
* T must be in Schur canonical form, that is, block upper triangular |
|
* with 1-by-1 and 2-by-2 diagonal blocks; each 2-by-2 diagonal block |
|
* has its diagonal elemnts equal and its off-diagonal elements of |
|
* opposite sign. |
|
* |
|
* Arguments |
|
* ========= |
|
* |
|
* WANTQ (input) LOGICAL |
|
* = .TRUE. : accumulate the transformation in the matrix Q; |
|
* = .FALSE.: do not accumulate the transformation. |
|
* |
|
* N (input) INTEGER |
|
* The order of the matrix T. N >= 0. |
|
* |
|
* T (input/output) DOUBLE PRECISION array, dimension (LDT,N) |
|
* On entry, the upper quasi-triangular matrix T, in Schur |
|
* canonical form. |
|
* On exit, the updated matrix T, again in Schur canonical form. |
|
* |
|
* LDT (input) INTEGER |
|
* The leading dimension of the array T. LDT >= max(1,N). |
|
* |
|
* Q (input/output) DOUBLE PRECISION array, dimension (LDQ,N) |
|
* On entry, if WANTQ is .TRUE., the orthogonal matrix Q. |
|
* On exit, if WANTQ is .TRUE., the updated matrix Q. |
|
* If WANTQ is .FALSE., Q is not referenced. |
|
* |
|
* LDQ (input) INTEGER |
|
* The leading dimension of the array Q. |
|
* LDQ >= 1; and if WANTQ is .TRUE., LDQ >= N. |
|
* |
|
* J1 (input) INTEGER |
|
* The index of the first row of the first block T11. |
|
* |
|
* N1 (input) INTEGER |
|
* The order of the first block T11. N1 = 0, 1 or 2. |
|
* |
|
* N2 (input) INTEGER |
|
* The order of the second block T22. N2 = 0, 1 or 2. |
|
* |
|
* WORK (workspace) DOUBLE PRECISION array, dimension (N) |
|
* |
|
* INFO (output) INTEGER |
|
* = 0: successful exit |
|
* = 1: the transformed matrix T would be too far from Schur |
|
* form; the blocks are not swapped and T and Q are |
|
* unchanged. |
|
* |
|
* ===================================================================== |
* ===================================================================== |
* |
* |
* .. Parameters .. |
* .. Parameters .. |