--- rpl/lapack/lapack/dgsvj1.f 2010/08/13 21:03:46 1.3 +++ rpl/lapack/lapack/dgsvj1.f 2010/12/21 13:48:05 1.4 @@ -1,11 +1,11 @@ SUBROUTINE DGSVJ1( JOBV, M, N, N1, A, LDA, D, SVA, MV, V, LDV, + EPS, SFMIN, TOL, NSWEEP, WORK, LWORK, INFO ) * -* -- LAPACK routine (version 3.2.2) -- +* -- LAPACK routine (version 3.3.0) -- * * -- Contributed by Zlatko Drmac of the University of Zagreb and -- * -- Kresimir Veselic of the Fernuniversitaet Hagen -- -* -- June 2010 -- +* November 2010 * * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- @@ -205,9 +205,10 @@ INFO = -4 ELSE IF( LDA.LT.M ) THEN INFO = -6 - ELSE IF( MV.LT.0 ) THEN + ELSE IF( ( RSVEC.OR.APPLV ) .AND. ( MV.LT.0 ) ) THEN INFO = -9 - ELSE IF( LDV.LT.M ) THEN + ELSE IF( ( RSVEC.AND.( LDV.LT.N ) ).OR. + & ( APPLV.AND.( LDV.LT.MV ) ) ) THEN INFO = -11 ELSE IF( TOL.LE.EPS ) THEN INFO = -14 @@ -406,8 +407,8 @@ MXSINJ = DMAX1( MXSINJ, DABS( SN ) ) SVA( q ) = AAQQ*DSQRT( DMAX1( ZERO, + ONE+T*APOAQ*AAPQ ) ) - AAPP = AAPP*DSQRT( ONE-T*AQOAP* - + AAPQ ) + AAPP = AAPP*DSQRT( DMAX1( ZERO, + + ONE-T*AQOAP*AAPQ ) ) APOAQ = D( p ) / D( q ) AQOAP = D( q ) / D( p ) @@ -555,7 +556,7 @@ + D( q ) ELSE T = ZERO - AAQQ = ZERO + AAQQ = ONE CALL DLASSQ( M, A( 1, q ), 1, T, + AAQQ ) SVA( q ) = T*DSQRT( AAQQ )*D( q ) @@ -568,7 +569,7 @@ + D( p ) ELSE T = ZERO - AAPP = ZERO + AAPP = ONE CALL DLASSQ( M, A( 1, p ), 1, T, + AAPP ) AAPP = T*DSQRT( AAPP )*D( p ) @@ -635,7 +636,7 @@ SVA( N ) = DNRM2( M, A( 1, N ), 1 )*D( N ) ELSE T = ZERO - AAPP = ZERO + AAPP = ONE CALL DLASSQ( M, A( 1, N ), 1, T, AAPP ) SVA( N ) = T*DSQRT( AAPP )*D( N ) END IF