--- rpl/lapack/lapack/dlaein.f 2011/07/22 07:38:06 1.9 +++ rpl/lapack/lapack/dlaein.f 2011/11/21 20:42:55 1.10 @@ -1,10 +1,181 @@ +*> \brief \b DLAEIN +* +* =========== DOCUMENTATION =========== +* +* Online html documentation available at +* http://www.netlib.org/lapack/explore-html/ +* +*> \htmlonly +*> Download DLAEIN + dependencies +*> +*> [TGZ] +*> +*> [ZIP] +*> +*> [TXT] +*> \endhtmlonly +* +* Definition: +* =========== +* +* SUBROUTINE DLAEIN( RIGHTV, NOINIT, N, H, LDH, WR, WI, VR, VI, B, +* LDB, WORK, EPS3, SMLNUM, BIGNUM, INFO ) +* +* .. Scalar Arguments .. +* LOGICAL NOINIT, RIGHTV +* INTEGER INFO, LDB, LDH, N +* DOUBLE PRECISION BIGNUM, EPS3, SMLNUM, WI, WR +* .. +* .. Array Arguments .. +* DOUBLE PRECISION B( LDB, * ), H( LDH, * ), VI( * ), VR( * ), +* $ WORK( * ) +* .. +* +* +*> \par Purpose: +* ============= +*> +*> \verbatim +*> +*> DLAEIN uses inverse iteration to find a right or left eigenvector +*> corresponding to the eigenvalue (WR,WI) of a real upper Hessenberg +*> matrix H. +*> \endverbatim +* +* Arguments: +* ========== +* +*> \param[in] RIGHTV +*> \verbatim +*> RIGHTV is LOGICAL +*> = .TRUE. : compute right eigenvector; +*> = .FALSE.: compute left eigenvector. +*> \endverbatim +*> +*> \param[in] NOINIT +*> \verbatim +*> NOINIT is LOGICAL +*> = .TRUE. : no initial vector supplied in (VR,VI). +*> = .FALSE.: initial vector supplied in (VR,VI). +*> \endverbatim +*> +*> \param[in] N +*> \verbatim +*> N is INTEGER +*> The order of the matrix H. N >= 0. +*> \endverbatim +*> +*> \param[in] H +*> \verbatim +*> H is DOUBLE PRECISION array, dimension (LDH,N) +*> The upper Hessenberg matrix H. +*> \endverbatim +*> +*> \param[in] LDH +*> \verbatim +*> LDH is INTEGER +*> The leading dimension of the array H. LDH >= max(1,N). +*> \endverbatim +*> +*> \param[in] WR +*> \verbatim +*> WR is DOUBLE PRECISION +*> \endverbatim +*> +*> \param[in] WI +*> \verbatim +*> WI is DOUBLE PRECISION +*> The real and imaginary parts of the eigenvalue of H whose +*> corresponding right or left eigenvector is to be computed. +*> \endverbatim +*> +*> \param[in,out] VR +*> \verbatim +*> VR is DOUBLE PRECISION array, dimension (N) +*> \endverbatim +*> +*> \param[in,out] VI +*> \verbatim +*> VI is DOUBLE PRECISION array, dimension (N) +*> On entry, if NOINIT = .FALSE. and WI = 0.0, VR must contain +*> a real starting vector for inverse iteration using the real +*> eigenvalue WR; if NOINIT = .FALSE. and WI.ne.0.0, VR and VI +*> must contain the real and imaginary parts of a complex +*> starting vector for inverse iteration using the complex +*> eigenvalue (WR,WI); otherwise VR and VI need not be set. +*> On exit, if WI = 0.0 (real eigenvalue), VR contains the +*> computed real eigenvector; if WI.ne.0.0 (complex eigenvalue), +*> VR and VI contain the real and imaginary parts of the +*> computed complex eigenvector. The eigenvector is normalized +*> so that the component of largest magnitude has magnitude 1; +*> here the magnitude of a complex number (x,y) is taken to be +*> |x| + |y|. +*> VI is not referenced if WI = 0.0. +*> \endverbatim +*> +*> \param[out] B +*> \verbatim +*> B is DOUBLE PRECISION array, dimension (LDB,N) +*> \endverbatim +*> +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER +*> The leading dimension of the array B. LDB >= N+1. +*> \endverbatim +*> +*> \param[out] WORK +*> \verbatim +*> WORK is DOUBLE PRECISION array, dimension (N) +*> \endverbatim +*> +*> \param[in] EPS3 +*> \verbatim +*> EPS3 is DOUBLE PRECISION +*> A small machine-dependent value which is used to perturb +*> close eigenvalues, and to replace zero pivots. +*> \endverbatim +*> +*> \param[in] SMLNUM +*> \verbatim +*> SMLNUM is DOUBLE PRECISION +*> A machine-dependent value close to the underflow threshold. +*> \endverbatim +*> +*> \param[in] BIGNUM +*> \verbatim +*> BIGNUM is DOUBLE PRECISION +*> A machine-dependent value close to the overflow threshold. +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> = 1: inverse iteration did not converge; VR is set to the +*> last iterate, and so is VI if WI.ne.0.0. +*> \endverbatim +* +* Authors: +* ======== +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleOTHERauxiliary +* +* ===================================================================== SUBROUTINE DLAEIN( RIGHTV, NOINIT, N, H, LDH, WR, WI, VR, VI, B, $ LDB, WORK, EPS3, SMLNUM, BIGNUM, 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 NOINIT, RIGHTV @@ -16,77 +187,6 @@ $ WORK( * ) * .. * -* Purpose -* ======= -* -* DLAEIN uses inverse iteration to find a right or left eigenvector -* corresponding to the eigenvalue (WR,WI) of a real upper Hessenberg -* matrix H. -* -* Arguments -* ========= -* -* RIGHTV (input) LOGICAL -* = .TRUE. : compute right eigenvector; -* = .FALSE.: compute left eigenvector. -* -* NOINIT (input) LOGICAL -* = .TRUE. : no initial vector supplied in (VR,VI). -* = .FALSE.: initial vector supplied in (VR,VI). -* -* N (input) INTEGER -* The order of the matrix H. N >= 0. -* -* H (input) DOUBLE PRECISION array, dimension (LDH,N) -* The upper Hessenberg matrix H. -* -* LDH (input) INTEGER -* The leading dimension of the array H. LDH >= max(1,N). -* -* WR (input) DOUBLE PRECISION -* WI (input) DOUBLE PRECISION -* The real and imaginary parts of the eigenvalue of H whose -* corresponding right or left eigenvector is to be computed. -* -* VR (input/output) DOUBLE PRECISION array, dimension (N) -* VI (input/output) DOUBLE PRECISION array, dimension (N) -* On entry, if NOINIT = .FALSE. and WI = 0.0, VR must contain -* a real starting vector for inverse iteration using the real -* eigenvalue WR; if NOINIT = .FALSE. and WI.ne.0.0, VR and VI -* must contain the real and imaginary parts of a complex -* starting vector for inverse iteration using the complex -* eigenvalue (WR,WI); otherwise VR and VI need not be set. -* On exit, if WI = 0.0 (real eigenvalue), VR contains the -* computed real eigenvector; if WI.ne.0.0 (complex eigenvalue), -* VR and VI contain the real and imaginary parts of the -* computed complex eigenvector. The eigenvector is normalized -* so that the component of largest magnitude has magnitude 1; -* here the magnitude of a complex number (x,y) is taken to be -* |x| + |y|. -* VI is not referenced if WI = 0.0. -* -* B (workspace) DOUBLE PRECISION array, dimension (LDB,N) -* -* LDB (input) INTEGER -* The leading dimension of the array B. LDB >= N+1. -* -* WORK (workspace) DOUBLE PRECISION array, dimension (N) -* -* EPS3 (input) DOUBLE PRECISION -* A small machine-dependent value which is used to perturb -* close eigenvalues, and to replace zero pivots. -* -* SMLNUM (input) DOUBLE PRECISION -* A machine-dependent value close to the underflow threshold. -* -* BIGNUM (input) DOUBLE PRECISION -* A machine-dependent value close to the overflow threshold. -* -* INFO (output) INTEGER -* = 0: successful exit -* = 1: inverse iteration did not converge; VR is set to the -* last iterate, and so is VI if WI.ne.0.0. -* * ===================================================================== * * .. Parameters ..