Diff for /rpl/lapack/lapack/dgeevx.f between versions 1.11 and 1.20

version 1.11, 2012/08/22 09:48:12 version 1.20, 2023/08/07 08:38:48
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 DGEEVX + dependencies   *> Download DGEEVX + dependencies
 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dgeevx.f">   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dgeevx.f">
 *> [TGZ]</a>   *> [TGZ]</a>
 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dgeevx.f">   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dgeevx.f">
 *> [ZIP]</a>   *> [ZIP]</a>
 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dgeevx.f">   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dgeevx.f">
 *> [TXT]</a>  *> [TXT]</a>
 *> \endhtmlonly   *> \endhtmlonly
 *  *
 *  Definition:  *  Definition:
 *  ===========  *  ===========
Line 21 Line 21
 *       SUBROUTINE DGEEVX( BALANC, JOBVL, JOBVR, SENSE, N, A, LDA, WR, WI,  *       SUBROUTINE DGEEVX( BALANC, JOBVL, JOBVR, SENSE, N, A, LDA, WR, WI,
 *                          VL, LDVL, VR, LDVR, ILO, IHI, SCALE, ABNRM,  *                          VL, LDVL, VR, LDVR, ILO, IHI, SCALE, ABNRM,
 *                          RCONDE, RCONDV, WORK, LWORK, IWORK, INFO )  *                          RCONDE, RCONDV, WORK, LWORK, IWORK, INFO )
 *   *
 *       .. Scalar Arguments ..  *       .. Scalar Arguments ..
 *       CHARACTER          BALANC, JOBVL, JOBVR, SENSE  *       CHARACTER          BALANC, JOBVL, JOBVR, SENSE
 *       INTEGER            IHI, ILO, INFO, LDA, LDVL, LDVR, LWORK, N  *       INTEGER            IHI, ILO, INFO, LDA, LDVL, LDVR, LWORK, N
Line 33 Line 33
 *      $                   SCALE( * ), VL( LDVL, * ), VR( LDVR, * ),  *      $                   SCALE( * ), VL( LDVL, * ), VR( LDVR, * ),
 *      $                   WI( * ), WORK( * ), WR( * )  *      $                   WI( * ), WORK( * ), WR( * )
 *       ..  *       ..
 *    *
 *  *
 *> \par Purpose:  *> \par Purpose:
 *  =============  *  =============
Line 53 Line 53
 *>                  A * v(j) = lambda(j) * v(j)  *>                  A * v(j) = lambda(j) * v(j)
 *> where lambda(j) is its eigenvalue.  *> where lambda(j) is its eigenvalue.
 *> The left eigenvector u(j) of A satisfies  *> The left eigenvector u(j) of A satisfies
 *>               u(j)**T * A = lambda(j) * u(j)**T  *>               u(j)**H * A = lambda(j) * u(j)**H
 *> where u(j)**T denotes the transpose of u(j).  *> where u(j)**H denotes the conjugate-transpose of u(j).
 *>  *>
 *> The computed eigenvectors are normalized to have Euclidean norm  *> The computed eigenvectors are normalized to have Euclidean norm
 *> equal to 1 and largest component real.  *> equal to 1 and largest component real.
Line 289 Line 289
 *  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 November 2011  *  @precisions fortran d -> s
 *  *
 *> \ingroup doubleGEeigen  *> \ingroup doubleGEeigen
 *  *
Line 302 Line 303
       SUBROUTINE DGEEVX( BALANC, JOBVL, JOBVR, SENSE, N, A, LDA, WR, WI,        SUBROUTINE DGEEVX( BALANC, JOBVL, JOBVR, SENSE, N, A, LDA, WR, WI,
      $                   VL, LDVL, VR, LDVR, ILO, IHI, SCALE, ABNRM,       $                   VL, LDVL, VR, LDVR, ILO, IHI, SCALE, ABNRM,
      $                   RCONDE, RCONDV, WORK, LWORK, IWORK, INFO )       $                   RCONDE, RCONDV, WORK, LWORK, IWORK, INFO )
         implicit none
 *  *
 *  -- LAPACK driver routine (version 3.4.0) --  *  -- LAPACK driver 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..--
 *     November 2011  
 *  *
 *     .. Scalar Arguments ..  *     .. Scalar Arguments ..
       CHARACTER          BALANC, JOBVL, JOBVR, SENSE        CHARACTER          BALANC, JOBVL, JOBVR, SENSE
Line 330 Line 331
       LOGICAL            LQUERY, SCALEA, WANTVL, WANTVR, WNTSNB, WNTSNE,        LOGICAL            LQUERY, SCALEA, WANTVL, WANTVR, WNTSNB, WNTSNE,
      $                   WNTSNN, WNTSNV       $                   WNTSNN, WNTSNV
       CHARACTER          JOB, SIDE        CHARACTER          JOB, SIDE
       INTEGER            HSWORK, I, ICOND, IERR, ITAU, IWRK, K, MAXWRK,        INTEGER            HSWORK, I, ICOND, IERR, ITAU, IWRK, K,
      $                   MINWRK, NOUT       $                   LWORK_TREVC, MAXWRK, MINWRK, NOUT
       DOUBLE PRECISION   ANRM, BIGNUM, CS, CSCALE, EPS, R, SCL, SMLNUM,        DOUBLE PRECISION   ANRM, BIGNUM, CS, CSCALE, EPS, R, SCL, SMLNUM,
      $                   SN       $                   SN
 *     ..  *     ..
Line 341 Line 342
 *     ..  *     ..
 *     .. External Subroutines ..  *     .. External Subroutines ..
       EXTERNAL           DGEBAK, DGEBAL, DGEHRD, DHSEQR, DLABAD, DLACPY,        EXTERNAL           DGEBAK, DGEBAL, DGEHRD, DHSEQR, DLABAD, DLACPY,
      $                   DLARTG, DLASCL, DORGHR, DROT, DSCAL, DTREVC,       $                   DLARTG, DLASCL, DORGHR, DROT, DSCAL, DTREVC3,
      $                   DTRSNA, XERBLA       $                   DTRSNA, XERBLA
 *     ..  *     ..
 *     .. External Functions ..  *     .. External Functions ..
Line 366 Line 367
       WNTSNE = LSAME( SENSE, 'E' )        WNTSNE = LSAME( SENSE, 'E' )
       WNTSNV = LSAME( SENSE, 'V' )        WNTSNV = LSAME( SENSE, 'V' )
       WNTSNB = LSAME( SENSE, 'B' )        WNTSNB = LSAME( SENSE, 'B' )
       IF( .NOT.( LSAME( BALANC, 'N' ) .OR. LSAME( BALANC,        IF( .NOT.( LSAME( BALANC, 'N' ) .OR. LSAME( BALANC, 'S' )
      $    'S' ) .OR. LSAME( BALANC, 'P' ) .OR. LSAME( BALANC, 'B' ) ) )       $      .OR. LSAME( BALANC, 'P' ) .OR. LSAME( BALANC, 'B' ) ) )
      $     THEN       $     THEN
          INFO = -1           INFO = -1
       ELSE IF( ( .NOT.WANTVL ) .AND. ( .NOT.LSAME( JOBVL, 'N' ) ) ) THEN        ELSE IF( ( .NOT.WANTVL ) .AND. ( .NOT.LSAME( JOBVL, 'N' ) ) ) THEN
Line 406 Line 407
             MAXWRK = N + N*ILAENV( 1, 'DGEHRD', ' ', N, 1, N, 0 )              MAXWRK = N + N*ILAENV( 1, 'DGEHRD', ' ', N, 1, N, 0 )
 *  *
             IF( WANTVL ) THEN              IF( WANTVL ) THEN
                  CALL DTREVC3( 'L', 'B', SELECT, N, A, LDA,
        $                       VL, LDVL, VR, LDVR,
        $                       N, NOUT, WORK, -1, IERR )
                  LWORK_TREVC = INT( WORK(1) )
                  MAXWRK = MAX( MAXWRK, N + LWORK_TREVC )
                CALL DHSEQR( 'S', 'V', N, 1, N, A, LDA, WR, WI, VL, LDVL,                 CALL DHSEQR( 'S', 'V', N, 1, N, A, LDA, WR, WI, VL, LDVL,
      $                WORK, -1, INFO )       $                WORK, -1, INFO )
             ELSE IF( WANTVR ) THEN              ELSE IF( WANTVR ) THEN
                  CALL DTREVC3( 'R', 'B', SELECT, N, A, LDA,
        $                       VL, LDVL, VR, LDVR,
        $                       N, NOUT, WORK, -1, IERR )
                  LWORK_TREVC = INT( WORK(1) )
                  MAXWRK = MAX( MAXWRK, N + LWORK_TREVC )
                CALL DHSEQR( 'S', 'V', N, 1, N, A, LDA, WR, WI, VR, LDVR,                 CALL DHSEQR( 'S', 'V', N, 1, N, A, LDA, WR, WI, VR, LDVR,
      $                WORK, -1, INFO )       $                WORK, -1, INFO )
             ELSE              ELSE
Line 420 Line 431
      $                LDVR, WORK, -1, INFO )       $                LDVR, WORK, -1, INFO )
                END IF                 END IF
             END IF              END IF
             HSWORK = WORK( 1 )              HSWORK = INT( WORK(1) )
 *  *
             IF( ( .NOT.WANTVL ) .AND. ( .NOT.WANTVR ) ) THEN              IF( ( .NOT.WANTVL ) .AND. ( .NOT.WANTVR ) ) THEN
                MINWRK = 2*N                 MINWRK = 2*N
Line 572 Line 583
      $                WORK( IWRK ), LWORK-IWRK+1, INFO )       $                WORK( IWRK ), LWORK-IWRK+1, INFO )
       END IF        END IF
 *  *
 *     If INFO > 0 from DHSEQR, then quit  *     If INFO .NE. 0 from DHSEQR, then quit
 *  *
       IF( INFO.GT.0 )        IF( INFO.NE.0 )
      $   GO TO 50       $   GO TO 50
 *  *
       IF( WANTVL .OR. WANTVR ) THEN        IF( WANTVL .OR. WANTVR ) THEN
 *  *
 *        Compute left and/or right eigenvectors  *        Compute left and/or right eigenvectors
 *        (Workspace: need 3*N)  *        (Workspace: need 3*N, prefer N + 2*N*NB)
 *  *
          CALL DTREVC( SIDE, 'B', SELECT, N, A, LDA, VL, LDVL, VR, LDVR,           CALL DTREVC3( SIDE, 'B', SELECT, N, A, LDA, VL, LDVL, VR, LDVR,
      $                N, NOUT, WORK( IWRK ), IERR )       $                 N, NOUT, WORK( IWRK ), LWORK-IWRK+1, IERR )
       END IF        END IF
 *  *
 *     Compute condition numbers if desired  *     Compute condition numbers if desired

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


CVSweb interface <joel.bertrand@systella.fr>