Diff for /rpl/lapack/lapack/zlahqr.f between versions 1.12 and 1.20

version 1.12, 2012/12/14 14:22:50 version 1.20, 2023/08/07 08:39:29
Line 2 Line 2
 *  *
 *  =========== DOCUMENTATION ===========  *  =========== DOCUMENTATION ===========
 *  *
 * Online html documentation available at   * Online html documentation available at
 *            http://www.netlib.org/lapack/explore-html/   *            http://www.netlib.org/lapack/explore-html/
 *  *
 *> \htmlonly  *> \htmlonly
 *> Download ZLAHQR + dependencies   *> Download ZLAHQR + dependencies
 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/zlahqr.f">   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/zlahqr.f">
 *> [TGZ]</a>   *> [TGZ]</a>
 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/zlahqr.f">   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/zlahqr.f">
 *> [ZIP]</a>   *> [ZIP]</a>
 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/zlahqr.f">   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/zlahqr.f">
 *> [TXT]</a>  *> [TXT]</a>
 *> \endhtmlonly   *> \endhtmlonly
 *  *
 *  Definition:  *  Definition:
 *  ===========  *  ===========
 *  *
 *       SUBROUTINE ZLAHQR( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ,  *       SUBROUTINE ZLAHQR( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ,
 *                          IHIZ, Z, LDZ, INFO )  *                          IHIZ, Z, LDZ, INFO )
 *   *
 *       .. Scalar Arguments ..  *       .. Scalar Arguments ..
 *       INTEGER            IHI, IHIZ, ILO, ILOZ, INFO, LDH, LDZ, N  *       INTEGER            IHI, IHIZ, ILO, ILOZ, INFO, LDH, LDZ, N
 *       LOGICAL            WANTT, WANTZ  *       LOGICAL            WANTT, WANTZ
Line 28 Line 28
 *       .. Array Arguments ..  *       .. Array Arguments ..
 *       COMPLEX*16         H( LDH, * ), W( * ), Z( LDZ, * )  *       COMPLEX*16         H( LDH, * ), W( * ), Z( LDZ, * )
 *       ..  *       ..
 *    *
 *  *
 *> \par Purpose:  *> \par Purpose:
 *  =============  *  =============
Line 138 Line 138
 *> \param[out] INFO  *> \param[out] INFO
 *> \verbatim  *> \verbatim
 *>          INFO is INTEGER  *>          INFO is INTEGER
 *>           =   0: successful exit  *>           = 0:   successful exit
 *>          .GT. 0: if INFO = i, ZLAHQR failed to compute all the  *>           > 0:   if INFO = i, ZLAHQR failed to compute all the
 *>                  eigenvalues ILO to IHI in a total of 30 iterations  *>                  eigenvalues ILO to IHI in a total of 30 iterations
 *>                  per eigenvalue; elements i+1:ihi of W contain  *>                  per eigenvalue; elements i+1:ihi of W contain
 *>                  those eigenvalues which have been successfully  *>                  those eigenvalues which have been successfully
 *>                  computed.  *>                  computed.
 *>  *>
 *>                  If INFO .GT. 0 and WANTT is .FALSE., then on exit,  *>                  If INFO > 0 and WANTT is .FALSE., then on exit,
 *>                  the remaining unconverged eigenvalues are the  *>                  the remaining unconverged eigenvalues are the
 *>                  eigenvalues of the upper Hessenberg matrix  *>                  eigenvalues of the upper Hessenberg matrix
 *>                  rows and columns ILO thorugh INFO of the final,  *>                  rows and columns ILO through INFO of the final,
 *>                  output value of H.  *>                  output value of H.
 *>  *>
 *>                  If INFO .GT. 0 and WANTT is .TRUE., then on exit  *>                  If INFO > 0 and WANTT is .TRUE., then on exit
 *>          (*)       (initial value of H)*U  = U*(final value of H)  *>          (*)       (initial value of H)*U  = U*(final value of H)
 *>                  where U is an orthognal matrix.    The final  *>                  where U is an orthogonal matrix.    The final
 *>                  value of H is upper Hessenberg and triangular in  *>                  value of H is upper Hessenberg and triangular in
 *>                  rows and columns INFO+1 through IHI.  *>                  rows and columns INFO+1 through IHI.
 *>  *>
 *>                  If INFO .GT. 0 and WANTZ is .TRUE., then on exit  *>                  If INFO > 0 and WANTZ is .TRUE., then on exit
 *>                      (final value of Z)  = (initial value of Z)*U  *>                      (final value of Z)  = (initial value of Z)*U
 *>                  where U is the orthogonal matrix in (*)  *>                  where U is the orthogonal matrix in (*)
 *>                  (regardless of the value of WANTT.)  *>                  (regardless of the value of WANTT.)
Line 166 Line 166
 *  Authors:  *  Authors:
 *  ========  *  ========
 *  *
 *> \author Univ. of Tennessee   *> \author Univ. of Tennessee
 *> \author Univ. of California Berkeley   *> \author Univ. of California Berkeley
 *> \author Univ. of Colorado Denver   *> \author Univ. of Colorado Denver
 *> \author NAG Ltd.   *> \author NAG Ltd.
 *  
 *> \date September 2012  
 *  *
 *> \ingroup complex16OTHERauxiliary  *> \ingroup complex16OTHERauxiliary
 *  *
Line 194 Line 192
 *  =====================================================================  *  =====================================================================
       SUBROUTINE ZLAHQR( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ,        SUBROUTINE ZLAHQR( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ,
      $                   IHIZ, Z, LDZ, INFO )       $                   IHIZ, Z, LDZ, INFO )
         IMPLICIT NONE
 *  *
 *  -- LAPACK auxiliary routine (version 3.4.2) --  *  -- LAPACK auxiliary routine --
 *  -- 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..--
 *     September 2012  
 *  *
 *     .. Scalar Arguments ..  *     .. Scalar Arguments ..
       INTEGER            IHI, IHIZ, ILO, ILOZ, INFO, LDH, LDZ, N        INTEGER            IHI, IHIZ, ILO, ILOZ, INFO, LDH, LDZ, N
Line 211 Line 209
 *  =========================================================  *  =========================================================
 *  *
 *     .. Parameters ..  *     .. Parameters ..
       INTEGER            ITMAX  
       PARAMETER          ( ITMAX = 30 )  
       COMPLEX*16         ZERO, ONE        COMPLEX*16         ZERO, ONE
       PARAMETER          ( ZERO = ( 0.0d0, 0.0d0 ),        PARAMETER          ( ZERO = ( 0.0d0, 0.0d0 ),
      $                   ONE = ( 1.0d0, 0.0d0 ) )       $                   ONE = ( 1.0d0, 0.0d0 ) )
Line 220 Line 216
       PARAMETER          ( RZERO = 0.0d0, RONE = 1.0d0, HALF = 0.5d0 )        PARAMETER          ( RZERO = 0.0d0, RONE = 1.0d0, HALF = 0.5d0 )
       DOUBLE PRECISION   DAT1        DOUBLE PRECISION   DAT1
       PARAMETER          ( DAT1 = 3.0d0 / 4.0d0 )        PARAMETER          ( DAT1 = 3.0d0 / 4.0d0 )
         INTEGER            KEXSH
         PARAMETER          ( KEXSH = 10 )
 *     ..  *     ..
 *     .. Local Scalars ..  *     .. Local Scalars ..
       COMPLEX*16         CDUM, H11, H11S, H22, SC, SUM, T, T1, TEMP, U,        COMPLEX*16         CDUM, H11, H11S, H22, SC, SUM, T, T1, TEMP, U,
      $                   V2, X, Y       $                   V2, X, Y
       DOUBLE PRECISION   AA, AB, BA, BB, H10, H21, RTEMP, S, SAFMAX,        DOUBLE PRECISION   AA, AB, BA, BB, H10, H21, RTEMP, S, SAFMAX,
      $                   SAFMIN, SMLNUM, SX, T2, TST, ULP       $                   SAFMIN, SMLNUM, SX, T2, TST, ULP
       INTEGER            I, I1, I2, ITS, J, JHI, JLO, K, L, M, NH, NZ        INTEGER            I, I1, I2, ITS, ITMAX, J, JHI, JLO, K, L, M,
        $                   NH, NZ, KDEFL
 *     ..  *     ..
 *     .. Local Arrays ..  *     .. Local Arrays ..
       COMPLEX*16         V( 2 )        COMPLEX*16         V( 2 )
Line 312 Line 311
          I2 = N           I2 = N
       END IF        END IF
 *  *
   *     ITMAX is the total number of QR iterations allowed.
   *
         ITMAX = 30 * MAX( 10, NH )
   *
   *     KDEFL counts the number of iterations since a deflation
   *
         KDEFL = 0
   *
 *     The main loop begins here. I is the loop index and decreases from  *     The main loop begins here. I is the loop index and decreases from
 *     IHI to ILO in steps of 1. Each iteration of the loop works  *     IHI to ILO in steps of 1. Each iteration of the loop works
 *     with the active submatrix in rows and columns L to I.  *     with the active submatrix in rows and columns L to I.
Line 371 Line 378
 *  *
          IF( L.GE.I )           IF( L.GE.I )
      $      GO TO 140       $      GO TO 140
            KDEFL = KDEFL + 1
 *  *
 *        Now the active submatrix is in rows and columns L to I. If  *        Now the active submatrix is in rows and columns L to I. If
 *        eigenvalues only are being computed, only the active submatrix  *        eigenvalues only are being computed, only the active submatrix
Line 381 Line 389
             I2 = I              I2 = I
          END IF           END IF
 *  *
          IF( ITS.EQ.10 ) THEN           IF( MOD(KDEFL,2*KEXSH).EQ.0 ) THEN
 *  *
 *           Exceptional shift.  *           Exceptional shift.
 *  *
             S = DAT1*ABS( DBLE( H( L+1, L ) ) )              S = DAT1*ABS( DBLE( H( I, I-1 ) ) )
             T = S + H( L, L )              T = S + H( I, I )
          ELSE IF( ITS.EQ.20 ) THEN           ELSE IF( MOD(KDEFL,KEXSH).EQ.0 ) THEN
 *  *
 *           Exceptional shift.  *           Exceptional shift.
 *  *
             S = DAT1*ABS( DBLE( H( I, I-1 ) ) )              S = DAT1*ABS( DBLE( H( L+1, L ) ) )
             T = S + H( I, I )              T = S + H( L, L )
          ELSE           ELSE
 *  *
 *           Wilkinson's shift.  *           Wilkinson's shift.
Line 554 Line 562
 *     H(I,I-1) is negligible: one eigenvalue has converged.  *     H(I,I-1) is negligible: one eigenvalue has converged.
 *  *
       W( I ) = H( I, I )        W( I ) = H( I, I )
   *     reset deflation counter
         KDEFL = 0
 *  *
 *     return to start of the main loop with new value of I.  *     return to start of the main loop with new value of I.
 *  *

Removed from v.1.12  
changed lines
  Added in v.1.20


CVSweb interface <joel.bertrand@systella.fr>