--- rpl/lapack/lapack/dgebak.f 2010/01/26 15:22:46 1.1.1.1 +++ rpl/lapack/lapack/dgebak.f 2023/08/07 08:38:47 1.18 @@ -1,10 +1,136 @@ +*> \brief \b DGEBAK +* +* =========== DOCUMENTATION =========== +* +* Online html documentation available at +* http://www.netlib.org/lapack/explore-html/ +* +*> \htmlonly +*> Download DGEBAK + dependencies +*> +*> [TGZ] +*> +*> [ZIP] +*> +*> [TXT] +*> \endhtmlonly +* +* Definition: +* =========== +* +* SUBROUTINE DGEBAK( JOB, SIDE, N, ILO, IHI, SCALE, M, V, LDV, +* INFO ) +* +* .. Scalar Arguments .. +* CHARACTER JOB, SIDE +* INTEGER IHI, ILO, INFO, LDV, M, N +* .. +* .. Array Arguments .. +* DOUBLE PRECISION SCALE( * ), V( LDV, * ) +* .. +* +* +*> \par Purpose: +* ============= +*> +*> \verbatim +*> +*> DGEBAK forms the right or left eigenvectors of a real general matrix +*> by backward transformation on the computed eigenvectors of the +*> balanced matrix output by DGEBAL. +*> \endverbatim +* +* Arguments: +* ========== +* +*> \param[in] JOB +*> \verbatim +*> JOB is CHARACTER*1 +*> Specifies the type of backward transformation required: +*> = 'N': do nothing, return immediately; +*> = 'P': do backward transformation for permutation only; +*> = 'S': do backward transformation for scaling only; +*> = 'B': do backward transformations for both permutation and +*> scaling. +*> JOB must be the same as the argument JOB supplied to DGEBAL. +*> \endverbatim +*> +*> \param[in] SIDE +*> \verbatim +*> SIDE is CHARACTER*1 +*> = 'R': V contains right eigenvectors; +*> = 'L': V contains left eigenvectors. +*> \endverbatim +*> +*> \param[in] N +*> \verbatim +*> N is INTEGER +*> The number of rows of the matrix V. N >= 0. +*> \endverbatim +*> +*> \param[in] ILO +*> \verbatim +*> ILO is INTEGER +*> \endverbatim +*> +*> \param[in] IHI +*> \verbatim +*> IHI is INTEGER +*> The integers ILO and IHI determined by DGEBAL. +*> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0. +*> \endverbatim +*> +*> \param[in] SCALE +*> \verbatim +*> SCALE is DOUBLE PRECISION array, dimension (N) +*> Details of the permutation and scaling factors, as returned +*> by DGEBAL. +*> \endverbatim +*> +*> \param[in] M +*> \verbatim +*> M is INTEGER +*> The number of columns of the matrix V. M >= 0. +*> \endverbatim +*> +*> \param[in,out] V +*> \verbatim +*> V is DOUBLE PRECISION array, dimension (LDV,M) +*> On entry, the matrix of right or left eigenvectors to be +*> transformed, as returned by DHSEIN or DTREVC. +*> On exit, V is overwritten by the transformed eigenvectors. +*> \endverbatim +*> +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER +*> The leading dimension of the array V. LDV >= max(1,N). +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim +* +* Authors: +* ======== +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \ingroup doubleGEcomputational +* +* ===================================================================== SUBROUTINE DGEBAK( JOB, SIDE, N, ILO, IHI, SCALE, M, V, LDV, $ INFO ) * -* -- LAPACK routine (version 3.2) -- +* -- LAPACK computational routine -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- -* November 2006 * * .. Scalar Arguments .. CHARACTER JOB, SIDE @@ -14,56 +140,6 @@ DOUBLE PRECISION SCALE( * ), V( LDV, * ) * .. * -* Purpose -* ======= -* -* DGEBAK forms the right or left eigenvectors of a real general matrix -* by backward transformation on the computed eigenvectors of the -* balanced matrix output by DGEBAL. -* -* Arguments -* ========= -* -* JOB (input) CHARACTER*1 -* Specifies the type of backward transformation required: -* = 'N', do nothing, return immediately; -* = 'P', do backward transformation for permutation only; -* = 'S', do backward transformation for scaling only; -* = 'B', do backward transformations for both permutation and -* scaling. -* JOB must be the same as the argument JOB supplied to DGEBAL. -* -* SIDE (input) CHARACTER*1 -* = 'R': V contains right eigenvectors; -* = 'L': V contains left eigenvectors. -* -* N (input) INTEGER -* The number of rows of the matrix V. N >= 0. -* -* ILO (input) INTEGER -* IHI (input) INTEGER -* The integers ILO and IHI determined by DGEBAL. -* 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0. -* -* SCALE (input) DOUBLE PRECISION array, dimension (N) -* Details of the permutation and scaling factors, as returned -* by DGEBAL. -* -* M (input) INTEGER -* The number of columns of the matrix V. M >= 0. -* -* V (input/output) DOUBLE PRECISION array, dimension (LDV,M) -* On entry, the matrix of right or left eigenvectors to be -* transformed, as returned by DHSEIN or DTREVC. -* On exit, V is overwritten by the transformed eigenvectors. -* -* LDV (input) INTEGER -* The leading dimension of the array V. LDV >= max(1,N). -* -* INFO (output) INTEGER -* = 0: successful exit -* < 0: if INFO = -i, the i-th argument had an illegal value. -* * ===================================================================== * * .. Parameters .. @@ -160,7 +236,7 @@ $ GO TO 40 IF( I.LT.ILO ) $ I = ILO - II - K = SCALE( I ) + K = INT( SCALE( I ) ) IF( K.EQ.I ) $ GO TO 40 CALL DSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV ) @@ -174,7 +250,7 @@ $ GO TO 50 IF( I.LT.ILO ) $ I = ILO - II - K = SCALE( I ) + K = INT( SCALE( I ) ) IF( K.EQ.I ) $ GO TO 50 CALL DSWAP( M, V( I, 1 ), LDV, V( K, 1 ), LDV )