Diff for /rpl/lapack/lapack/dgsvj0.f between versions 1.5 and 1.6

version 1.5, 2010/12/21 13:53:27 version 1.6, 2011/07/22 07:38:05
Line 1 Line 1
       SUBROUTINE DGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS,        SUBROUTINE DGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS,
      +                   SFMIN, TOL, NSWEEP, WORK, LWORK, INFO )       $                   SFMIN, TOL, NSWEEP, WORK, LWORK, INFO )
 *  *
 *  -- LAPACK routine (version 3.3.0)                                    --  *  -- LAPACK routine (version 3.3.1)                                  --
 *  *
 *  -- Contributed by Zlatko Drmac of the University of Zagreb and     --  *  -- Contributed by Zlatko Drmac of the University of Zagreb and     --
 *  -- Kresimir Veselic of the Fernuniversitaet Hagen                  --  *  -- Kresimir Veselic of the Fernuniversitaet Hagen                  --
 *     November 2010  *  -- April 2011                                                      --
 *  *
 *  -- 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..--
Line 16 Line 16
 * eigenvalue problems Hx = lambda M x, H M x = lambda x with H, M > 0.  * eigenvalue problems Hx = lambda M x, H M x = lambda x with H, M > 0.
 *  *
       IMPLICIT NONE        IMPLICIT NONE
   *     ..
 *     .. Scalar Arguments ..  *     .. Scalar Arguments ..
       INTEGER            INFO, LDA, LDV, LWORK, M, MV, N, NSWEEP        INTEGER            INFO, LDA, LDV, LWORK, M, MV, N, NSWEEP
       DOUBLE PRECISION   EPS, SFMIN, TOL        DOUBLE PRECISION   EPS, SFMIN, TOL
Line 23 Line 24
 *     ..  *     ..
 *     .. Array Arguments ..  *     .. Array Arguments ..
       DOUBLE PRECISION   A( LDA, * ), SVA( N ), D( N ), V( LDV, * ),        DOUBLE PRECISION   A( LDA, * ), SVA( N ), D( N ), V( LDV, * ),
      +                   WORK( LWORK )       $                   WORK( LWORK )
 *     ..  *     ..
 *  *
 *  Purpose  *  Purpose
Line 144 Line 145
 *     .. Local Parameters ..  *     .. Local Parameters ..
       DOUBLE PRECISION   ZERO, HALF, ONE, TWO        DOUBLE PRECISION   ZERO, HALF, ONE, TWO
       PARAMETER          ( ZERO = 0.0D0, HALF = 0.5D0, ONE = 1.0D0,        PARAMETER          ( ZERO = 0.0D0, HALF = 0.5D0, ONE = 1.0D0,
      +                   TWO = 2.0D0 )       $                   TWO = 2.0D0 )
 *     ..  *     ..
 *     .. Local Scalars ..  *     .. Local Scalars ..
       DOUBLE PRECISION   AAPP, AAPP0, AAPQ, AAQQ, APOAQ, AQOAP, BIG,        DOUBLE PRECISION   AAPP, AAPP0, AAPQ, AAQQ, APOAQ, AQOAP, BIG,
      +                   BIGTHETA, CS, MXAAPQ, MXSINJ, ROOTBIG, ROOTEPS,       $                   BIGTHETA, CS, MXAAPQ, MXSINJ, ROOTBIG, ROOTEPS,
      +                   ROOTSFMIN, ROOTTOL, SMALL, SN, T, TEMP1, THETA,       $                   ROOTSFMIN, ROOTTOL, SMALL, SN, T, TEMP1, THETA,
      +                   THSIGN       $                   THSIGN
       INTEGER            BLSKIP, EMPTSW, i, ibr, IERR, igl, IJBLSK, ir1,        INTEGER            BLSKIP, EMPTSW, i, ibr, IERR, igl, IJBLSK, ir1,
      +                   ISWROT, jbc, jgl, KBL, LKAHEAD, MVL, NBL,       $                   ISWROT, jbc, jgl, KBL, LKAHEAD, MVL, NBL,
      +                   NOTROT, p, PSKIPPED, q, ROWSKIP, SWBAND       $                   NOTROT, p, PSKIPPED, q, ROWSKIP, SWBAND
       LOGICAL            APPLV, ROTOK, RSVEC        LOGICAL            APPLV, ROTOK, RSVEC
 *     ..  *     ..
 *     .. Local Arrays ..  *     .. Local Arrays ..
Line 173 Line 174
 *     ..  *     ..
 *     .. Executable Statements ..  *     .. Executable Statements ..
 *  *
   *     Test the input parameters.
   *
       APPLV = LSAME( JOBV, 'A' )        APPLV = LSAME( JOBV, 'A' )
       RSVEC = LSAME( JOBV, 'V' )        RSVEC = LSAME( JOBV, 'V' )
       IF( .NOT.( RSVEC .OR. APPLV .OR. LSAME( JOBV, 'N' ) ) ) THEN        IF( .NOT.( RSVEC .OR. APPLV .OR. LSAME( JOBV, 'N' ) ) ) THEN
Line 186 Line 189
       ELSE IF( ( RSVEC.OR.APPLV ) .AND. ( MV.LT.0 ) ) THEN        ELSE IF( ( RSVEC.OR.APPLV ) .AND. ( MV.LT.0 ) ) THEN
          INFO = -8           INFO = -8
       ELSE IF( ( RSVEC.AND.( LDV.LT.N ) ).OR.         ELSE IF( ( RSVEC.AND.( LDV.LT.N ) ).OR. 
      &         ( APPLV.AND.( LDV.LT.MV ) ) ) THEN       $         ( APPLV.AND.( LDV.LT.MV ) ) ) THEN
          INFO = -10           INFO = -10
       ELSE IF( TOL.LE.EPS ) THEN        ELSE IF( TOL.LE.EPS ) THEN
          INFO = -13           INFO = -13
Line 219 Line 222
       BIGTHETA = ONE / ROOTEPS        BIGTHETA = ONE / ROOTEPS
       ROOTTOL = DSQRT( TOL )        ROOTTOL = DSQRT( TOL )
 *  *
 *  
 *     -#- Row-cyclic Jacobi SVD algorithm with column pivoting -#-  *     -#- Row-cyclic Jacobi SVD algorithm with column pivoting -#-
 *  *
       EMPTSW = ( N*( N-1 ) ) / 2        EMPTSW = ( N*( N-1 ) ) / 2
Line 280 Line 282
                   IF( p.NE.q ) THEN                    IF( p.NE.q ) THEN
                      CALL DSWAP( M, A( 1, p ), 1, A( 1, q ), 1 )                       CALL DSWAP( M, A( 1, p ), 1, A( 1, q ), 1 )
                      IF( RSVEC )CALL DSWAP( MVL, V( 1, p ), 1,                       IF( RSVEC )CALL DSWAP( MVL, V( 1, p ), 1,
      +                                      V( 1, q ), 1 )       $                                      V( 1, q ), 1 )
                      TEMP1 = SVA( p )                       TEMP1 = SVA( p )
                      SVA( p ) = SVA( q )                       SVA( p ) = SVA( q )
                      SVA( q ) = TEMP1                       SVA( q ) = TEMP1
Line 304 Line 306
 *        below should read "AAPP = DNRM2( M, A(1,p), 1 ) * D(p)".  *        below should read "AAPP = DNRM2( M, A(1,p), 1 ) * D(p)".
 *  *
                      IF( ( SVA( p ).LT.ROOTBIG ) .AND.                       IF( ( SVA( p ).LT.ROOTBIG ) .AND.
      +                   ( SVA( p ).GT.ROOTSFMIN ) ) THEN       $                   ( SVA( p ).GT.ROOTSFMIN ) ) THEN
                         SVA( p ) = DNRM2( M, A( 1, p ), 1 )*D( p )                          SVA( p ) = DNRM2( M, A( 1, p ), 1 )*D( p )
                      ELSE                       ELSE
                         TEMP1 = ZERO                          TEMP1 = ZERO
Line 333 Line 335
                               ROTOK = ( SMALL*AAPP ).LE.AAQQ                                ROTOK = ( SMALL*AAPP ).LE.AAQQ
                               IF( AAPP.LT.( BIG / AAQQ ) ) THEN                                IF( AAPP.LT.( BIG / AAQQ ) ) THEN
                                  AAPQ = ( DDOT( M, A( 1, p ), 1, A( 1,                                   AAPQ = ( DDOT( M, A( 1, p ), 1, A( 1,
      +                                  q ), 1 )*D( p )*D( q ) / AAQQ )       $                                  q ), 1 )*D( p )*D( q ) / AAQQ )
      +                                  / AAPP       $                                  / AAPP
                               ELSE                                ELSE
                                  CALL DCOPY( M, A( 1, p ), 1, WORK, 1 )                                   CALL DCOPY( M, A( 1, p ), 1, WORK, 1 )
                                  CALL DLASCL( 'G', 0, 0, AAPP, D( p ),                                   CALL DLASCL( 'G', 0, 0, AAPP, D( p ),
      +                                        M, 1, WORK, LDA, IERR )       $                                        M, 1, WORK, LDA, IERR )
                                  AAPQ = DDOT( M, WORK, 1, A( 1, q ),                                   AAPQ = DDOT( M, WORK, 1, A( 1, q ),
      +                                  1 )*D( q ) / AAQQ       $                                  1 )*D( q ) / AAQQ
                               END IF                                END IF
                            ELSE                             ELSE
                               ROTOK = AAPP.LE.( AAQQ / SMALL )                                ROTOK = AAPP.LE.( AAQQ / SMALL )
                               IF( AAPP.GT.( SMALL / AAQQ ) ) THEN                                IF( AAPP.GT.( SMALL / AAQQ ) ) THEN
                                  AAPQ = ( DDOT( M, A( 1, p ), 1, A( 1,                                   AAPQ = ( DDOT( M, A( 1, p ), 1, A( 1,
      +                                  q ), 1 )*D( p )*D( q ) / AAQQ )       $                                  q ), 1 )*D( p )*D( q ) / AAQQ )
      +                                  / AAPP       $                                  / AAPP
                               ELSE                                ELSE
                                  CALL DCOPY( M, A( 1, q ), 1, WORK, 1 )                                   CALL DCOPY( M, A( 1, q ), 1, WORK, 1 )
                                  CALL DLASCL( 'G', 0, 0, AAQQ, D( q ),                                   CALL DLASCL( 'G', 0, 0, AAQQ, D( q ),
      +                                        M, 1, WORK, LDA, IERR )       $                                        M, 1, WORK, LDA, IERR )
                                  AAPQ = DDOT( M, WORK, 1, A( 1, p ),                                   AAPQ = DDOT( M, WORK, 1, A( 1, p ),
      +                                  1 )*D( p ) / AAPP       $                                  1 )*D( p ) / AAPP
                               END IF                                END IF
                            END IF                             END IF
 *  *
Line 376 Line 378
 *  *
                                  AQOAP = AAQQ / AAPP                                   AQOAP = AAQQ / AAPP
                                  APOAQ = AAPP / AAQQ                                   APOAQ = AAPP / AAQQ
                                  THETA = -HALF*DABS( AQOAP-APOAQ ) /                                   THETA = -HALF*DABS( AQOAP-APOAQ )/AAPQ
      +                                   AAPQ  
 *  *
                                  IF( DABS( THETA ).GT.BIGTHETA ) THEN                                   IF( DABS( THETA ).GT.BIGTHETA ) THEN
 *  *
Line 385 Line 386
                                     FASTR( 3 ) = T*D( p ) / D( q )                                      FASTR( 3 ) = T*D( p ) / D( q )
                                     FASTR( 4 ) = -T*D( q ) / D( p )                                      FASTR( 4 ) = -T*D( q ) / D( p )
                                     CALL DROTM( M, A( 1, p ), 1,                                      CALL DROTM( M, A( 1, p ), 1,
      +                                          A( 1, q ), 1, FASTR )       $                                          A( 1, q ), 1, FASTR )
                                     IF( RSVEC )CALL DROTM( MVL,                                      IF( RSVEC )CALL DROTM( MVL,
      +                                              V( 1, p ), 1,       $                                              V( 1, p ), 1,
      +                                              V( 1, q ), 1,       $                                              V( 1, q ), 1,
      +                                              FASTR )       $                                              FASTR )
                                     SVA( q ) = AAQQ*DSQRT( DMAX1( ZERO,                                      SVA( q ) = AAQQ*DSQRT( DMAX1( ZERO,
      +                                         ONE+T*APOAQ*AAPQ ) )       $                                         ONE+T*APOAQ*AAPQ ) )
                                     AAPP = AAPP*DSQRT( DMAX1( ZERO,                                       AAPP = AAPP*DSQRT( DMAX1( ZERO, 
      +                                     ONE-T*AQOAP*AAPQ ) )       $                                     ONE-T*AQOAP*AAPQ ) )
                                     MXSINJ = DMAX1( MXSINJ, DABS( T ) )                                      MXSINJ = DMAX1( MXSINJ, DABS( T ) )
 *  *
                                  ELSE                                   ELSE
Line 402 Line 403
 *  *
                                     THSIGN = -DSIGN( ONE, AAPQ )                                      THSIGN = -DSIGN( ONE, AAPQ )
                                     T = ONE / ( THETA+THSIGN*                                      T = ONE / ( THETA+THSIGN*
      +                                  DSQRT( ONE+THETA*THETA ) )       $                                  DSQRT( ONE+THETA*THETA ) )
                                     CS = DSQRT( ONE / ( ONE+T*T ) )                                      CS = DSQRT( ONE / ( ONE+T*T ) )
                                     SN = T*CS                                      SN = T*CS
 *  *
                                     MXSINJ = DMAX1( MXSINJ, DABS( SN ) )                                      MXSINJ = DMAX1( MXSINJ, DABS( SN ) )
                                     SVA( q ) = AAQQ*DSQRT( DMAX1( ZERO,                                      SVA( q ) = AAQQ*DSQRT( DMAX1( ZERO,
      +                                         ONE+T*APOAQ*AAPQ ) )       $                                         ONE+T*APOAQ*AAPQ ) )
                                     AAPP = AAPP*DSQRT( DMAX1( ZERO,                                      AAPP = AAPP*DSQRT( DMAX1( ZERO,
      +                                     ONE-T*AQOAP*AAPQ ) )       $                                     ONE-T*AQOAP*AAPQ ) )
 *  *
                                     APOAQ = D( p ) / D( q )                                      APOAQ = D( p ) / D( q )
                                     AQOAP = D( q ) / D( p )                                      AQOAP = D( q ) / D( p )
Line 421 Line 422
                                           D( p ) = D( p )*CS                                            D( p ) = D( p )*CS
                                           D( q ) = D( q )*CS                                            D( q ) = D( q )*CS
                                           CALL DROTM( M, A( 1, p ), 1,                                            CALL DROTM( M, A( 1, p ), 1,
      +                                                A( 1, q ), 1,       $                                                A( 1, q ), 1,
      +                                                FASTR )       $                                                FASTR )
                                           IF( RSVEC )CALL DROTM( MVL,                                            IF( RSVEC )CALL DROTM( MVL,
      +                                        V( 1, p ), 1, V( 1, q ),       $                                        V( 1, p ), 1, V( 1, q ),
      +                                        1, FASTR )       $                                        1, FASTR )
                                        ELSE                                         ELSE
                                           CALL DAXPY( M, -T*AQOAP,                                            CALL DAXPY( M, -T*AQOAP,
      +                                                A( 1, q ), 1,       $                                                A( 1, q ), 1,
      +                                                A( 1, p ), 1 )       $                                                A( 1, p ), 1 )
                                           CALL DAXPY( M, CS*SN*APOAQ,                                            CALL DAXPY( M, CS*SN*APOAQ,
      +                                                A( 1, p ), 1,       $                                                A( 1, p ), 1,
      +                                                A( 1, q ), 1 )       $                                                A( 1, q ), 1 )
                                           D( p ) = D( p )*CS                                            D( p ) = D( p )*CS
                                           D( q ) = D( q ) / CS                                            D( q ) = D( q ) / CS
                                           IF( RSVEC ) THEN                                            IF( RSVEC ) THEN
                                              CALL DAXPY( MVL, -T*AQOAP,                                               CALL DAXPY( MVL, -T*AQOAP,
      +                                                   V( 1, q ), 1,       $                                                   V( 1, q ), 1,
      +                                                   V( 1, p ), 1 )       $                                                   V( 1, p ), 1 )
                                              CALL DAXPY( MVL,                                               CALL DAXPY( MVL,
      +                                                   CS*SN*APOAQ,       $                                                   CS*SN*APOAQ,
      +                                                   V( 1, p ), 1,       $                                                   V( 1, p ), 1,
      +                                                   V( 1, q ), 1 )       $                                                   V( 1, q ), 1 )
                                           END IF                                            END IF
                                        END IF                                         END IF
                                     ELSE                                      ELSE
                                        IF( D( q ).GE.ONE ) THEN                                         IF( D( q ).GE.ONE ) THEN
                                           CALL DAXPY( M, T*APOAQ,                                            CALL DAXPY( M, T*APOAQ,
      +                                                A( 1, p ), 1,       $                                                A( 1, p ), 1,
      +                                                A( 1, q ), 1 )       $                                                A( 1, q ), 1 )
                                           CALL DAXPY( M, -CS*SN*AQOAP,                                            CALL DAXPY( M, -CS*SN*AQOAP,
      +                                                A( 1, q ), 1,       $                                                A( 1, q ), 1,
      +                                                A( 1, p ), 1 )       $                                                A( 1, p ), 1 )
                                           D( p ) = D( p ) / CS                                            D( p ) = D( p ) / CS
                                           D( q ) = D( q )*CS                                            D( q ) = D( q )*CS
                                           IF( RSVEC ) THEN                                            IF( RSVEC ) THEN
                                              CALL DAXPY( MVL, T*APOAQ,                                               CALL DAXPY( MVL, T*APOAQ,
      +                                                   V( 1, p ), 1,       $                                                   V( 1, p ), 1,
      +                                                   V( 1, q ), 1 )       $                                                   V( 1, q ), 1 )
                                              CALL DAXPY( MVL,                                               CALL DAXPY( MVL,
      +                                                   -CS*SN*AQOAP,       $                                                   -CS*SN*AQOAP,
      +                                                   V( 1, q ), 1,       $                                                   V( 1, q ), 1,
      +                                                   V( 1, p ), 1 )       $                                                   V( 1, p ), 1 )
                                           END IF                                            END IF
                                        ELSE                                         ELSE
                                           IF( D( p ).GE.D( q ) ) THEN                                            IF( D( p ).GE.D( q ) ) THEN
                                              CALL DAXPY( M, -T*AQOAP,                                               CALL DAXPY( M, -T*AQOAP,
      +                                                   A( 1, q ), 1,       $                                                   A( 1, q ), 1,
      +                                                   A( 1, p ), 1 )       $                                                   A( 1, p ), 1 )
                                              CALL DAXPY( M, CS*SN*APOAQ,                                               CALL DAXPY( M, CS*SN*APOAQ,
      +                                                   A( 1, p ), 1,       $                                                   A( 1, p ), 1,
      +                                                   A( 1, q ), 1 )       $                                                   A( 1, q ), 1 )
                                              D( p ) = D( p )*CS                                               D( p ) = D( p )*CS
                                              D( q ) = D( q ) / CS                                               D( q ) = D( q ) / CS
                                              IF( RSVEC ) THEN                                               IF( RSVEC ) THEN
                                                 CALL DAXPY( MVL,                                                  CALL DAXPY( MVL,
      +                                               -T*AQOAP,       $                                               -T*AQOAP,
      +                                               V( 1, q ), 1,       $                                               V( 1, q ), 1,
      +                                               V( 1, p ), 1 )       $                                               V( 1, p ), 1 )
                                                 CALL DAXPY( MVL,                                                  CALL DAXPY( MVL,
      +                                               CS*SN*APOAQ,       $                                               CS*SN*APOAQ,
      +                                               V( 1, p ), 1,       $                                               V( 1, p ), 1,
      +                                               V( 1, q ), 1 )       $                                               V( 1, q ), 1 )
                                              END IF                                               END IF
                                           ELSE                                            ELSE
                                              CALL DAXPY( M, T*APOAQ,                                               CALL DAXPY( M, T*APOAQ,
      +                                                   A( 1, p ), 1,       $                                                   A( 1, p ), 1,
      +                                                   A( 1, q ), 1 )       $                                                   A( 1, q ), 1 )
                                              CALL DAXPY( M,                                               CALL DAXPY( M,
      +                                                   -CS*SN*AQOAP,       $                                                   -CS*SN*AQOAP,
      +                                                   A( 1, q ), 1,       $                                                   A( 1, q ), 1,
      +                                                   A( 1, p ), 1 )       $                                                   A( 1, p ), 1 )
                                              D( p ) = D( p ) / CS                                               D( p ) = D( p ) / CS
                                              D( q ) = D( q )*CS                                               D( q ) = D( q )*CS
                                              IF( RSVEC ) THEN                                               IF( RSVEC ) THEN
                                                 CALL DAXPY( MVL,                                                  CALL DAXPY( MVL,
      +                                               T*APOAQ, V( 1, p ),       $                                               T*APOAQ, V( 1, p ),
      +                                               1, V( 1, q ), 1 )       $                                               1, V( 1, q ), 1 )
                                                 CALL DAXPY( MVL,                                                  CALL DAXPY( MVL,
      +                                               -CS*SN*AQOAP,       $                                               -CS*SN*AQOAP,
      +                                               V( 1, q ), 1,       $                                               V( 1, q ), 1,
      +                                               V( 1, p ), 1 )       $                                               V( 1, p ), 1 )
                                              END IF                                               END IF
                                           END IF                                            END IF
                                        END IF                                         END IF
Line 512 Line 513
 *              .. have to use modified Gram-Schmidt like transformation  *              .. have to use modified Gram-Schmidt like transformation
                                  CALL DCOPY( M, A( 1, p ), 1, WORK, 1 )                                   CALL DCOPY( M, A( 1, p ), 1, WORK, 1 )
                                  CALL DLASCL( 'G', 0, 0, AAPP, ONE, M,                                   CALL DLASCL( 'G', 0, 0, AAPP, ONE, M,
      +                                        1, WORK, LDA, IERR )       $                                        1, WORK, LDA, IERR )
                                  CALL DLASCL( 'G', 0, 0, AAQQ, ONE, M,                                   CALL DLASCL( 'G', 0, 0, AAQQ, ONE, M,
      +                                        1, A( 1, q ), LDA, IERR )       $                                        1, A( 1, q ), LDA, IERR )
                                  TEMP1 = -AAPQ*D( p ) / D( q )                                   TEMP1 = -AAPQ*D( p ) / D( q )
                                  CALL DAXPY( M, TEMP1, WORK, 1,                                   CALL DAXPY( M, TEMP1, WORK, 1,
      +                                       A( 1, q ), 1 )       $                                       A( 1, q ), 1 )
                                  CALL DLASCL( 'G', 0, 0, ONE, AAQQ, M,                                   CALL DLASCL( 'G', 0, 0, ONE, AAQQ, M,
      +                                        1, A( 1, q ), LDA, IERR )       $                                        1, A( 1, q ), LDA, IERR )
                                  SVA( q ) = AAQQ*DSQRT( DMAX1( ZERO,                                   SVA( q ) = AAQQ*DSQRT( DMAX1( ZERO,
      +                                      ONE-AAPQ*AAPQ ) )       $                                      ONE-AAPQ*AAPQ ) )
                                  MXSINJ = DMAX1( MXSINJ, SFMIN )                                   MXSINJ = DMAX1( MXSINJ, SFMIN )
                               END IF                                END IF
 *           END IF ROTOK THEN ... ELSE  *           END IF ROTOK THEN ... ELSE
Line 529 Line 530
 *           In the case of cancellation in updating SVA(q), SVA(p)  *           In the case of cancellation in updating SVA(q), SVA(p)
 *           recompute SVA(q), SVA(p).  *           recompute SVA(q), SVA(p).
                               IF( ( SVA( q ) / AAQQ )**2.LE.ROOTEPS )                                IF( ( SVA( q ) / AAQQ )**2.LE.ROOTEPS )
      +                            THEN       $                            THEN
                                  IF( ( AAQQ.LT.ROOTBIG ) .AND.                                   IF( ( AAQQ.LT.ROOTBIG ) .AND.
      +                               ( AAQQ.GT.ROOTSFMIN ) ) THEN       $                               ( AAQQ.GT.ROOTSFMIN ) ) THEN
                                     SVA( q ) = DNRM2( M, A( 1, q ), 1 )*                                      SVA( q ) = DNRM2( M, A( 1, q ), 1 )*
      +                                         D( q )       $                                         D( q )
                                  ELSE                                   ELSE
                                     T = ZERO                                      T = ZERO
                                     AAQQ = ONE                                      AAQQ = ONE
                                     CALL DLASSQ( M, A( 1, q ), 1, T,                                      CALL DLASSQ( M, A( 1, q ), 1, T,
      +                                           AAQQ )       $                                           AAQQ )
                                     SVA( q ) = T*DSQRT( AAQQ )*D( q )                                      SVA( q ) = T*DSQRT( AAQQ )*D( q )
                                  END IF                                   END IF
                               END IF                                END IF
                               IF( ( AAPP / AAPP0 ).LE.ROOTEPS ) THEN                                IF( ( AAPP / AAPP0 ).LE.ROOTEPS ) THEN
                                  IF( ( AAPP.LT.ROOTBIG ) .AND.                                   IF( ( AAPP.LT.ROOTBIG ) .AND.
      +                               ( AAPP.GT.ROOTSFMIN ) ) THEN       $                               ( AAPP.GT.ROOTSFMIN ) ) THEN
                                     AAPP = DNRM2( M, A( 1, p ), 1 )*                                      AAPP = DNRM2( M, A( 1, p ), 1 )*
      +                                     D( p )       $                                     D( p )
                                  ELSE                                   ELSE
                                     T = ZERO                                      T = ZERO
                                     AAPP = ONE                                      AAPP = ONE
                                     CALL DLASSQ( M, A( 1, p ), 1, T,                                      CALL DLASSQ( M, A( 1, p ), 1, T,
      +                                           AAPP )       $                                           AAPP )
                                     AAPP = T*DSQRT( AAPP )*D( p )                                      AAPP = T*DSQRT( AAPP )*D( p )
                                  END IF                                   END IF
                                  SVA( p ) = AAPP                                   SVA( p ) = AAPP
Line 569 Line 570
                         END IF                          END IF
 *  *
                         IF( ( i.LE.SWBAND ) .AND.                          IF( ( i.LE.SWBAND ) .AND.
      +                      ( PSKIPPED.GT.ROWSKIP ) ) THEN       $                      ( PSKIPPED.GT.ROWSKIP ) ) THEN
                            IF( ir1.EQ.0 )AAPP = -AAPP                             IF( ir1.EQ.0 )AAPP = -AAPP
                            NOTROT = 0                             NOTROT = 0
                            GO TO 2103                             GO TO 2103
Line 586 Line 587
                   ELSE                    ELSE
                      SVA( p ) = AAPP                       SVA( p ) = AAPP
                      IF( ( ir1.EQ.0 ) .AND. ( AAPP.EQ.ZERO ) )                       IF( ( ir1.EQ.0 ) .AND. ( AAPP.EQ.ZERO ) )
      +                   NOTROT = NOTROT + MIN0( igl+KBL-1, N ) - p       $                   NOTROT = NOTROT + MIN0( igl+KBL-1, N ) - p
                   END IF                    END IF
 *  *
  2001          CONTINUE   2001          CONTINUE
Line 634 Line 635
                               END IF                                END IF
                               IF( AAPP.LT.( BIG / AAQQ ) ) THEN                                IF( AAPP.LT.( BIG / AAQQ ) ) THEN
                                  AAPQ = ( DDOT( M, A( 1, p ), 1, A( 1,                                   AAPQ = ( DDOT( M, A( 1, p ), 1, A( 1,
      +                                  q ), 1 )*D( p )*D( q ) / AAQQ )       $                                  q ), 1 )*D( p )*D( q ) / AAQQ )
      +                                  / AAPP       $                                  / AAPP
                               ELSE                                ELSE
                                  CALL DCOPY( M, A( 1, p ), 1, WORK, 1 )                                   CALL DCOPY( M, A( 1, p ), 1, WORK, 1 )
                                  CALL DLASCL( 'G', 0, 0, AAPP, D( p ),                                   CALL DLASCL( 'G', 0, 0, AAPP, D( p ),
      +                                        M, 1, WORK, LDA, IERR )       $                                        M, 1, WORK, LDA, IERR )
                                  AAPQ = DDOT( M, WORK, 1, A( 1, q ),                                   AAPQ = DDOT( M, WORK, 1, A( 1, q ),
      +                                  1 )*D( q ) / AAQQ       $                                  1 )*D( q ) / AAQQ
                               END IF                                END IF
                            ELSE                             ELSE
                               IF( AAPP.GE.AAQQ ) THEN                                IF( AAPP.GE.AAQQ ) THEN
Line 651 Line 652
                               END IF                                END IF
                               IF( AAPP.GT.( SMALL / AAQQ ) ) THEN                                IF( AAPP.GT.( SMALL / AAQQ ) ) THEN
                                  AAPQ = ( DDOT( M, A( 1, p ), 1, A( 1,                                   AAPQ = ( DDOT( M, A( 1, p ), 1, A( 1,
      +                                  q ), 1 )*D( p )*D( q ) / AAQQ )       $                                  q ), 1 )*D( p )*D( q ) / AAQQ )
      +                                  / AAPP       $                                  / AAPP
                               ELSE                                ELSE
                                  CALL DCOPY( M, A( 1, q ), 1, WORK, 1 )                                   CALL DCOPY( M, A( 1, q ), 1, WORK, 1 )
                                  CALL DLASCL( 'G', 0, 0, AAQQ, D( q ),                                   CALL DLASCL( 'G', 0, 0, AAQQ, D( q ),
      +                                        M, 1, WORK, LDA, IERR )       $                                        M, 1, WORK, LDA, IERR )
                                  AAPQ = DDOT( M, WORK, 1, A( 1, p ),                                   AAPQ = DDOT( M, WORK, 1, A( 1, p ),
      +                                  1 )*D( p ) / AAPP       $                                  1 )*D( p ) / AAPP
                               END IF                                END IF
                            END IF                             END IF
 *  *
Line 676 Line 677
 *  *
                                  AQOAP = AAQQ / AAPP                                   AQOAP = AAQQ / AAPP
                                  APOAQ = AAPP / AAQQ                                   APOAQ = AAPP / AAQQ
                                  THETA = -HALF*DABS( AQOAP-APOAQ ) /                                   THETA = -HALF*DABS( AQOAP-APOAQ )/AAPQ
      +                                   AAPQ  
                                  IF( AAQQ.GT.AAPP0 )THETA = -THETA                                   IF( AAQQ.GT.AAPP0 )THETA = -THETA
 *  *
                                  IF( DABS( THETA ).GT.BIGTHETA ) THEN                                   IF( DABS( THETA ).GT.BIGTHETA ) THEN
Line 685 Line 685
                                     FASTR( 3 ) = T*D( p ) / D( q )                                      FASTR( 3 ) = T*D( p ) / D( q )
                                     FASTR( 4 ) = -T*D( q ) / D( p )                                      FASTR( 4 ) = -T*D( q ) / D( p )
                                     CALL DROTM( M, A( 1, p ), 1,                                      CALL DROTM( M, A( 1, p ), 1,
      +                                          A( 1, q ), 1, FASTR )       $                                          A( 1, q ), 1, FASTR )
                                     IF( RSVEC )CALL DROTM( MVL,                                      IF( RSVEC )CALL DROTM( MVL,
      +                                              V( 1, p ), 1,       $                                              V( 1, p ), 1,
      +                                              V( 1, q ), 1,       $                                              V( 1, q ), 1,
      +                                              FASTR )       $                                              FASTR )
                                     SVA( q ) = AAQQ*DSQRT( DMAX1( ZERO,                                      SVA( q ) = AAQQ*DSQRT( DMAX1( ZERO,
      +                                         ONE+T*APOAQ*AAPQ ) )       $                                         ONE+T*APOAQ*AAPQ ) )
                                     AAPP = AAPP*DSQRT( DMAX1( ZERO,                                      AAPP = AAPP*DSQRT( DMAX1( ZERO,
      +                                     ONE-T*AQOAP*AAPQ ) )       $                                     ONE-T*AQOAP*AAPQ ) )
                                     MXSINJ = DMAX1( MXSINJ, DABS( T ) )                                      MXSINJ = DMAX1( MXSINJ, DABS( T ) )
                                  ELSE                                   ELSE
 *  *
Line 702 Line 702
                                     THSIGN = -DSIGN( ONE, AAPQ )                                      THSIGN = -DSIGN( ONE, AAPQ )
                                     IF( AAQQ.GT.AAPP0 )THSIGN = -THSIGN                                      IF( AAQQ.GT.AAPP0 )THSIGN = -THSIGN
                                     T = ONE / ( THETA+THSIGN*                                      T = ONE / ( THETA+THSIGN*
      +                                  DSQRT( ONE+THETA*THETA ) )       $                                  DSQRT( ONE+THETA*THETA ) )
                                     CS = DSQRT( ONE / ( ONE+T*T ) )                                      CS = DSQRT( ONE / ( ONE+T*T ) )
                                     SN = T*CS                                      SN = T*CS
                                     MXSINJ = DMAX1( MXSINJ, DABS( SN ) )                                      MXSINJ = DMAX1( MXSINJ, DABS( SN ) )
                                     SVA( q ) = AAQQ*DSQRT( DMAX1( ZERO,                                      SVA( q ) = AAQQ*DSQRT( DMAX1( ZERO,
      +                                         ONE+T*APOAQ*AAPQ ) )       $                                         ONE+T*APOAQ*AAPQ ) )
                                     AAPP = AAPP*DSQRT( DMAX1( ZERO,                                       AAPP = AAPP*DSQRT( DMAX1( ZERO, 
      +                                     ONE-T*AQOAP*AAPQ ) )       $                                     ONE-T*AQOAP*AAPQ ) )
 *  *
                                     APOAQ = D( p ) / D( q )                                      APOAQ = D( p ) / D( q )
                                     AQOAP = D( q ) / D( p )                                      AQOAP = D( q ) / D( p )
Line 721 Line 721
                                           D( p ) = D( p )*CS                                            D( p ) = D( p )*CS
                                           D( q ) = D( q )*CS                                            D( q ) = D( q )*CS
                                           CALL DROTM( M, A( 1, p ), 1,                                            CALL DROTM( M, A( 1, p ), 1,
      +                                                A( 1, q ), 1,       $                                                A( 1, q ), 1,
      +                                                FASTR )       $                                                FASTR )
                                           IF( RSVEC )CALL DROTM( MVL,                                            IF( RSVEC )CALL DROTM( MVL,
      +                                        V( 1, p ), 1, V( 1, q ),       $                                        V( 1, p ), 1, V( 1, q ),
      +                                        1, FASTR )       $                                        1, FASTR )
                                        ELSE                                         ELSE
                                           CALL DAXPY( M, -T*AQOAP,                                            CALL DAXPY( M, -T*AQOAP,
      +                                                A( 1, q ), 1,       $                                                A( 1, q ), 1,
      +                                                A( 1, p ), 1 )       $                                                A( 1, p ), 1 )
                                           CALL DAXPY( M, CS*SN*APOAQ,                                            CALL DAXPY( M, CS*SN*APOAQ,
      +                                                A( 1, p ), 1,       $                                                A( 1, p ), 1,
      +                                                A( 1, q ), 1 )       $                                                A( 1, q ), 1 )
                                           IF( RSVEC ) THEN                                            IF( RSVEC ) THEN
                                              CALL DAXPY( MVL, -T*AQOAP,                                               CALL DAXPY( MVL, -T*AQOAP,
      +                                                   V( 1, q ), 1,       $                                                   V( 1, q ), 1,
      +                                                   V( 1, p ), 1 )       $                                                   V( 1, p ), 1 )
                                              CALL DAXPY( MVL,                                               CALL DAXPY( MVL,
      +                                                   CS*SN*APOAQ,       $                                                   CS*SN*APOAQ,
      +                                                   V( 1, p ), 1,       $                                                   V( 1, p ), 1,
      +                                                   V( 1, q ), 1 )       $                                                   V( 1, q ), 1 )
                                           END IF                                            END IF
                                           D( p ) = D( p )*CS                                            D( p ) = D( p )*CS
                                           D( q ) = D( q ) / CS                                            D( q ) = D( q ) / CS
Line 748 Line 748
                                     ELSE                                      ELSE
                                        IF( D( q ).GE.ONE ) THEN                                         IF( D( q ).GE.ONE ) THEN
                                           CALL DAXPY( M, T*APOAQ,                                            CALL DAXPY( M, T*APOAQ,
      +                                                A( 1, p ), 1,       $                                                A( 1, p ), 1,
      +                                                A( 1, q ), 1 )       $                                                A( 1, q ), 1 )
                                           CALL DAXPY( M, -CS*SN*AQOAP,                                            CALL DAXPY( M, -CS*SN*AQOAP,
      +                                                A( 1, q ), 1,       $                                                A( 1, q ), 1,
      +                                                A( 1, p ), 1 )       $                                                A( 1, p ), 1 )
                                           IF( RSVEC ) THEN                                            IF( RSVEC ) THEN
                                              CALL DAXPY( MVL, T*APOAQ,                                               CALL DAXPY( MVL, T*APOAQ,
      +                                                   V( 1, p ), 1,       $                                                   V( 1, p ), 1,
      +                                                   V( 1, q ), 1 )       $                                                   V( 1, q ), 1 )
                                              CALL DAXPY( MVL,                                               CALL DAXPY( MVL,
      +                                                   -CS*SN*AQOAP,       $                                                   -CS*SN*AQOAP,
      +                                                   V( 1, q ), 1,       $                                                   V( 1, q ), 1,
      +                                                   V( 1, p ), 1 )       $                                                   V( 1, p ), 1 )
                                           END IF                                            END IF
                                           D( p ) = D( p ) / CS                                            D( p ) = D( p ) / CS
                                           D( q ) = D( q )*CS                                            D( q ) = D( q )*CS
                                        ELSE                                         ELSE
                                           IF( D( p ).GE.D( q ) ) THEN                                            IF( D( p ).GE.D( q ) ) THEN
                                              CALL DAXPY( M, -T*AQOAP,                                               CALL DAXPY( M, -T*AQOAP,
      +                                                   A( 1, q ), 1,       $                                                   A( 1, q ), 1,
      +                                                   A( 1, p ), 1 )       $                                                   A( 1, p ), 1 )
                                              CALL DAXPY( M, CS*SN*APOAQ,                                               CALL DAXPY( M, CS*SN*APOAQ,
      +                                                   A( 1, p ), 1,       $                                                   A( 1, p ), 1,
      +                                                   A( 1, q ), 1 )       $                                                   A( 1, q ), 1 )
                                              D( p ) = D( p )*CS                                               D( p ) = D( p )*CS
                                              D( q ) = D( q ) / CS                                               D( q ) = D( q ) / CS
                                              IF( RSVEC ) THEN                                               IF( RSVEC ) THEN
                                                 CALL DAXPY( MVL,                                                  CALL DAXPY( MVL,
      +                                               -T*AQOAP,       $                                               -T*AQOAP,
      +                                               V( 1, q ), 1,       $                                               V( 1, q ), 1,
      +                                               V( 1, p ), 1 )       $                                               V( 1, p ), 1 )
                                                 CALL DAXPY( MVL,                                                  CALL DAXPY( MVL,
      +                                               CS*SN*APOAQ,       $                                               CS*SN*APOAQ,
      +                                               V( 1, p ), 1,       $                                               V( 1, p ), 1,
      +                                               V( 1, q ), 1 )       $                                               V( 1, q ), 1 )
                                              END IF                                               END IF
                                           ELSE                                            ELSE
                                              CALL DAXPY( M, T*APOAQ,                                               CALL DAXPY( M, T*APOAQ,
      +                                                   A( 1, p ), 1,       $                                                   A( 1, p ), 1,
      +                                                   A( 1, q ), 1 )       $                                                   A( 1, q ), 1 )
                                              CALL DAXPY( M,                                               CALL DAXPY( M,
      +                                                   -CS*SN*AQOAP,       $                                                   -CS*SN*AQOAP,
      +                                                   A( 1, q ), 1,       $                                                   A( 1, q ), 1,
      +                                                   A( 1, p ), 1 )       $                                                   A( 1, p ), 1 )
                                              D( p ) = D( p ) / CS                                               D( p ) = D( p ) / CS
                                              D( q ) = D( q )*CS                                               D( q ) = D( q )*CS
                                              IF( RSVEC ) THEN                                               IF( RSVEC ) THEN
                                                 CALL DAXPY( MVL,                                                  CALL DAXPY( MVL,
      +                                               T*APOAQ, V( 1, p ),       $                                               T*APOAQ, V( 1, p ),
      +                                               1, V( 1, q ), 1 )       $                                               1, V( 1, q ), 1 )
                                                 CALL DAXPY( MVL,                                                  CALL DAXPY( MVL,
      +                                               -CS*SN*AQOAP,       $                                               -CS*SN*AQOAP,
      +                                               V( 1, q ), 1,       $                                               V( 1, q ), 1,
      +                                               V( 1, p ), 1 )       $                                               V( 1, p ), 1 )
                                              END IF                                               END IF
                                           END IF                                            END IF
                                        END IF                                         END IF
Line 811 Line 811
                               ELSE                                ELSE
                                  IF( AAPP.GT.AAQQ ) THEN                                   IF( AAPP.GT.AAQQ ) THEN
                                     CALL DCOPY( M, A( 1, p ), 1, WORK,                                      CALL DCOPY( M, A( 1, p ), 1, WORK,
      +                                          1 )       $                                          1 )
                                     CALL DLASCL( 'G', 0, 0, AAPP, ONE,                                      CALL DLASCL( 'G', 0, 0, AAPP, ONE,
      +                                           M, 1, WORK, LDA, IERR )       $                                           M, 1, WORK, LDA, IERR )
                                     CALL DLASCL( 'G', 0, 0, AAQQ, ONE,                                      CALL DLASCL( 'G', 0, 0, AAQQ, ONE,
      +                                           M, 1, A( 1, q ), LDA,       $                                           M, 1, A( 1, q ), LDA,
      +                                           IERR )       $                                           IERR )
                                     TEMP1 = -AAPQ*D( p ) / D( q )                                      TEMP1 = -AAPQ*D( p ) / D( q )
                                     CALL DAXPY( M, TEMP1, WORK, 1,                                      CALL DAXPY( M, TEMP1, WORK, 1,
      +                                          A( 1, q ), 1 )       $                                          A( 1, q ), 1 )
                                     CALL DLASCL( 'G', 0, 0, ONE, AAQQ,                                      CALL DLASCL( 'G', 0, 0, ONE, AAQQ,
      +                                           M, 1, A( 1, q ), LDA,       $                                           M, 1, A( 1, q ), LDA,
      +                                           IERR )       $                                           IERR )
                                     SVA( q ) = AAQQ*DSQRT( DMAX1( ZERO,                                      SVA( q ) = AAQQ*DSQRT( DMAX1( ZERO,
      +                                         ONE-AAPQ*AAPQ ) )       $                                         ONE-AAPQ*AAPQ ) )
                                     MXSINJ = DMAX1( MXSINJ, SFMIN )                                      MXSINJ = DMAX1( MXSINJ, SFMIN )
                                  ELSE                                   ELSE
                                     CALL DCOPY( M, A( 1, q ), 1, WORK,                                      CALL DCOPY( M, A( 1, q ), 1, WORK,
      +                                          1 )       $                                          1 )
                                     CALL DLASCL( 'G', 0, 0, AAQQ, ONE,                                      CALL DLASCL( 'G', 0, 0, AAQQ, ONE,
      +                                           M, 1, WORK, LDA, IERR )       $                                           M, 1, WORK, LDA, IERR )
                                     CALL DLASCL( 'G', 0, 0, AAPP, ONE,                                      CALL DLASCL( 'G', 0, 0, AAPP, ONE,
      +                                           M, 1, A( 1, p ), LDA,       $                                           M, 1, A( 1, p ), LDA,
      +                                           IERR )       $                                           IERR )
                                     TEMP1 = -AAPQ*D( q ) / D( p )                                      TEMP1 = -AAPQ*D( q ) / D( p )
                                     CALL DAXPY( M, TEMP1, WORK, 1,                                      CALL DAXPY( M, TEMP1, WORK, 1,
      +                                          A( 1, p ), 1 )       $                                          A( 1, p ), 1 )
                                     CALL DLASCL( 'G', 0, 0, ONE, AAPP,                                      CALL DLASCL( 'G', 0, 0, ONE, AAPP,
      +                                           M, 1, A( 1, p ), LDA,       $                                           M, 1, A( 1, p ), LDA,
      +                                           IERR )       $                                           IERR )
                                     SVA( p ) = AAPP*DSQRT( DMAX1( ZERO,                                      SVA( p ) = AAPP*DSQRT( DMAX1( ZERO,
      +                                         ONE-AAPQ*AAPQ ) )       $                                         ONE-AAPQ*AAPQ ) )
                                     MXSINJ = DMAX1( MXSINJ, SFMIN )                                      MXSINJ = DMAX1( MXSINJ, SFMIN )
                                  END IF                                   END IF
                               END IF                                END IF
Line 850 Line 850
 *           In the case of cancellation in updating SVA(q)  *           In the case of cancellation in updating SVA(q)
 *           .. recompute SVA(q)  *           .. recompute SVA(q)
                               IF( ( SVA( q ) / AAQQ )**2.LE.ROOTEPS )                                IF( ( SVA( q ) / AAQQ )**2.LE.ROOTEPS )
      +                            THEN       $                            THEN
                                  IF( ( AAQQ.LT.ROOTBIG ) .AND.                                   IF( ( AAQQ.LT.ROOTBIG ) .AND.
      +                               ( AAQQ.GT.ROOTSFMIN ) ) THEN       $                               ( AAQQ.GT.ROOTSFMIN ) ) THEN
                                     SVA( q ) = DNRM2( M, A( 1, q ), 1 )*                                      SVA( q ) = DNRM2( M, A( 1, q ), 1 )*
      +                                         D( q )       $                                         D( q )
                                  ELSE                                   ELSE
                                     T = ZERO                                      T = ZERO
                                     AAQQ = ONE                                      AAQQ = ONE
                                     CALL DLASSQ( M, A( 1, q ), 1, T,                                      CALL DLASSQ( M, A( 1, q ), 1, T,
      +                                           AAQQ )       $                                           AAQQ )
                                     SVA( q ) = T*DSQRT( AAQQ )*D( q )                                      SVA( q ) = T*DSQRT( AAQQ )*D( q )
                                  END IF                                   END IF
                               END IF                                END IF
                               IF( ( AAPP / AAPP0 )**2.LE.ROOTEPS ) THEN                                IF( ( AAPP / AAPP0 )**2.LE.ROOTEPS ) THEN
                                  IF( ( AAPP.LT.ROOTBIG ) .AND.                                   IF( ( AAPP.LT.ROOTBIG ) .AND.
      +                               ( AAPP.GT.ROOTSFMIN ) ) THEN       $                               ( AAPP.GT.ROOTSFMIN ) ) THEN
                                     AAPP = DNRM2( M, A( 1, p ), 1 )*                                      AAPP = DNRM2( M, A( 1, p ), 1 )*
      +                                     D( p )       $                                     D( p )
                                  ELSE                                   ELSE
                                     T = ZERO                                      T = ZERO
                                     AAPP = ONE                                      AAPP = ONE
                                     CALL DLASSQ( M, A( 1, p ), 1, T,                                      CALL DLASSQ( M, A( 1, p ), 1, T,
      +                                           AAPP )       $                                           AAPP )
                                     AAPP = T*DSQRT( AAPP )*D( p )                                      AAPP = T*DSQRT( AAPP )*D( p )
                                  END IF                                   END IF
                                  SVA( p ) = AAPP                                   SVA( p ) = AAPP
Line 890 Line 890
                         END IF                          END IF
 *  *
                         IF( ( i.LE.SWBAND ) .AND. ( IJBLSK.GE.BLSKIP ) )                          IF( ( i.LE.SWBAND ) .AND. ( IJBLSK.GE.BLSKIP ) )
      +                      THEN       $                      THEN
                            SVA( p ) = AAPP                             SVA( p ) = AAPP
                            NOTROT = 0                             NOTROT = 0
                            GO TO 2011                             GO TO 2011
                         END IF                          END IF
                         IF( ( i.LE.SWBAND ) .AND.                          IF( ( i.LE.SWBAND ) .AND.
      +                      ( PSKIPPED.GT.ROWSKIP ) ) THEN       $                      ( PSKIPPED.GT.ROWSKIP ) ) THEN
                            AAPP = -AAPP                             AAPP = -AAPP
                            NOTROT = 0                             NOTROT = 0
                            GO TO 2203                             GO TO 2203
Line 910 Line 910
 *  *
                   ELSE                    ELSE
                      IF( AAPP.EQ.ZERO )NOTROT = NOTROT +                       IF( AAPP.EQ.ZERO )NOTROT = NOTROT +
      +                   MIN0( jgl+KBL-1, N ) - jgl + 1       $                   MIN0( jgl+KBL-1, N ) - jgl + 1
                      IF( AAPP.LT.ZERO )NOTROT = 0                       IF( AAPP.LT.ZERO )NOTROT = 0
                   END IF                    END IF
   
Line 929 Line 929
 *  *
 *     .. update SVA(N)  *     .. update SVA(N)
          IF( ( SVA( N ).LT.ROOTBIG ) .AND. ( SVA( N ).GT.ROOTSFMIN ) )           IF( ( SVA( N ).LT.ROOTBIG ) .AND. ( SVA( N ).GT.ROOTSFMIN ) )
      +       THEN       $       THEN
             SVA( N ) = DNRM2( M, A( 1, N ), 1 )*D( N )              SVA( N ) = DNRM2( M, A( 1, N ), 1 )*D( N )
          ELSE           ELSE
             T = ZERO              T = ZERO
Line 941 Line 941
 *     Additional steering devices  *     Additional steering devices
 *  *
          IF( ( i.LT.SWBAND ) .AND. ( ( MXAAPQ.LE.ROOTTOL ) .OR.           IF( ( i.LT.SWBAND ) .AND. ( ( MXAAPQ.LE.ROOTTOL ) .OR.
      +       ( ISWROT.LE.N ) ) )SWBAND = i       $       ( ISWROT.LE.N ) ) )SWBAND = i
 *  *
          IF( ( i.GT.SWBAND+1 ) .AND. ( MXAAPQ.LT.DBLE( N )*TOL ) .AND.           IF( ( i.GT.SWBAND+1 ) .AND. ( MXAAPQ.LT.DBLE( N )*TOL ) .AND.
      +       ( DBLE( N )*MXAAPQ*MXSINJ.LT.TOL ) ) THEN       $       ( DBLE( N )*MXAAPQ*MXSINJ.LT.TOL ) ) THEN
             GO TO 1994              GO TO 1994
          END IF           END IF
 *  *

Removed from v.1.5  
changed lines
  Added in v.1.6


CVSweb interface <joel.bertrand@systella.fr>