ESMF_DLAEXC Subroutine

subroutine ESMF_DLAEXC(WANTQ, N, T, LDT, Q, LDQ, J1, N1, N2, WORK, INFO)

\brief \b ESMF_DLAEXC swaps adjacent diagonal blocks of a real upper quasi-triangular matrix in Schur canonical form, by an orthogonal similarity transformation. \htmlonly Download ESMF_DLAEXC + dependencies [TGZ] [ZIP] [TXT] \endhtmlonly \par Purpose:

\verbatim

ESMF_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 \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 \author Univ. of Tennessee \author Univ. of California Berkeley \author Univ. of Colorado Denver \author NAG Ltd. \date December 2016 \ingroup doubleOTHERauxiliary

Arguments

Type IntentOptional Attributes Name
logical :: WANTQ
integer :: N
double precision :: T(LDT,*)
integer :: LDT
double precision :: Q(LDQ,*)
integer :: LDQ
integer :: J1
integer :: N1
integer :: N2
double precision :: WORK(*)
integer :: INFO

Calls

proc~~esmf_dlaexc~~CallsGraph proc~esmf_dlaexc ESMF_DLAEXC esmf_dlacpy esmf_dlacpy proc~esmf_dlaexc->esmf_dlacpy esmf_dlamch esmf_dlamch proc~esmf_dlaexc->esmf_dlamch esmf_dlange esmf_dlange proc~esmf_dlaexc->esmf_dlange esmf_dlanv2 esmf_dlanv2 proc~esmf_dlaexc->esmf_dlanv2 esmf_dlarfg esmf_dlarfg proc~esmf_dlaexc->esmf_dlarfg esmf_dlarfx esmf_dlarfx proc~esmf_dlaexc->esmf_dlarfx esmf_dlartg esmf_dlartg proc~esmf_dlaexc->esmf_dlartg esmf_dlasy2 esmf_dlasy2 proc~esmf_dlaexc->esmf_dlasy2 esmf_drot esmf_drot proc~esmf_dlaexc->esmf_drot