Diff for /rpl/lapack/lapack/dsgesv.f between versions 1.8 and 1.9

version 1.8, 2010/12/21 13:53:37 version 1.9, 2011/07/22 07:38:10
Line 1 Line 1
       SUBROUTINE DSGESV( N, NRHS, A, LDA, IPIV, B, LDB, X, LDX, WORK,        SUBROUTINE DSGESV( N, NRHS, A, LDA, IPIV, B, LDB, X, LDX, WORK,
      +                   SWORK, ITER, INFO )       $                   SWORK, ITER, INFO )
 *  *
 *  -- LAPACK PROTOTYPE driver routine (version 3.2.2) --  *  -- LAPACK PROTOTYPE driver routine (version 3.3.1) --
 *  -- 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..--
 *     February 2007  *  -- April 2011                                                      --
 *  *
 *     ..  *     ..
 *     .. Scalar Arguments ..  *     .. Scalar Arguments ..
Line 14 Line 14
       INTEGER            IPIV( * )        INTEGER            IPIV( * )
       REAL               SWORK( * )        REAL               SWORK( * )
       DOUBLE PRECISION   A( LDA, * ), B( LDB, * ), WORK( N, * ),        DOUBLE PRECISION   A( LDA, * ), B( LDB, * ), WORK( N, * ),
      +                   X( LDX, * )       $                   X( LDX, * )
 *     ..  *     ..
 *  *
 *  Purpose  *  Purpose
Line 122 Line 122
 *                but the factor U is exactly singular, so the solution  *                but the factor U is exactly singular, so the solution
 *                could not be computed.  *                could not be computed.
 *  *
 *  =========  *  =====================================================================
 *  *
 *     .. Parameters ..  *     .. Parameters ..
       LOGICAL            DOITREF        LOGICAL            DOITREF
Line 143 Line 143
 *  *
 *     .. External Subroutines ..  *     .. External Subroutines ..
       EXTERNAL           DAXPY, DGEMM, DLACPY, DLAG2S, SLAG2D, SGETRF,        EXTERNAL           DAXPY, DGEMM, DLACPY, DLAG2S, SLAG2D, SGETRF,
      +                   SGETRS, XERBLA       $                   SGETRS, XERBLA
 *     ..  *     ..
 *     .. External Functions ..  *     .. External Functions ..
       INTEGER            IDAMAX        INTEGER            IDAMAX
Line 179 Line 179
 *     Quick return if (N.EQ.0).  *     Quick return if (N.EQ.0).
 *  *
       IF( N.EQ.0 )        IF( N.EQ.0 )
      +   RETURN       $   RETURN
 *  *
 *     Skip single precision iterative refinement if a priori slower  *     Skip single precision iterative refinement if a priori slower
 *     than double precision factorization.  *     than double precision factorization.
Line 232 Line 232
 *     Solve the system SA*SX = SB.  *     Solve the system SA*SX = SB.
 *  *
       CALL SGETRS( 'No transpose', N, NRHS, SWORK( PTSA ), N, IPIV,        CALL SGETRS( 'No transpose', N, NRHS, SWORK( PTSA ), N, IPIV,
      +             SWORK( PTSX ), N, INFO )       $             SWORK( PTSX ), N, INFO )
 *  *
 *     Convert SX back to double precision  *     Convert SX back to double precision
 *  *
Line 243 Line 243
       CALL DLACPY( 'All', N, NRHS, B, LDB, WORK, N )        CALL DLACPY( 'All', N, NRHS, B, LDB, WORK, N )
 *  *
       CALL DGEMM( 'No Transpose', 'No Transpose', N, NRHS, N, NEGONE, A,        CALL DGEMM( 'No Transpose', 'No Transpose', N, NRHS, N, NEGONE, A,
      +            LDA, X, LDX, ONE, WORK, N )       $            LDA, X, LDX, ONE, WORK, N )
 *  *
 *     Check whether the NRHS normwise backward errors satisfy the  *     Check whether the NRHS normwise backward errors satisfy the
 *     stopping criterion. If yes, set ITER=0 and return.  *     stopping criterion. If yes, set ITER=0 and return.
Line 252 Line 252
          XNRM = ABS( X( IDAMAX( N, X( 1, I ), 1 ), I ) )           XNRM = ABS( X( IDAMAX( N, X( 1, I ), 1 ), I ) )
          RNRM = ABS( WORK( IDAMAX( N, WORK( 1, I ), 1 ), I ) )           RNRM = ABS( WORK( IDAMAX( N, WORK( 1, I ), 1 ), I ) )
          IF( RNRM.GT.XNRM*CTE )           IF( RNRM.GT.XNRM*CTE )
      +      GO TO 10       $      GO TO 10
       END DO        END DO
 *  *
 *     If we are here, the NRHS normwise backward errors satisfy the  *     If we are here, the NRHS normwise backward errors satisfy the
Line 278 Line 278
 *        Solve the system SA*SX = SR.  *        Solve the system SA*SX = SR.
 *  *
          CALL SGETRS( 'No transpose', N, NRHS, SWORK( PTSA ), N, IPIV,           CALL SGETRS( 'No transpose', N, NRHS, SWORK( PTSA ), N, IPIV,
      +                SWORK( PTSX ), N, INFO )       $                SWORK( PTSX ), N, INFO )
 *  *
 *        Convert SX back to double precision and update the current  *        Convert SX back to double precision and update the current
 *        iterate.  *        iterate.
Line 294 Line 294
          CALL DLACPY( 'All', N, NRHS, B, LDB, WORK, N )           CALL DLACPY( 'All', N, NRHS, B, LDB, WORK, N )
 *  *
          CALL DGEMM( 'No Transpose', 'No Transpose', N, NRHS, N, NEGONE,           CALL DGEMM( 'No Transpose', 'No Transpose', N, NRHS, N, NEGONE,
      +               A, LDA, X, LDX, ONE, WORK, N )       $               A, LDA, X, LDX, ONE, WORK, N )
 *  *
 *        Check whether the NRHS normwise backward errors satisfy the  *        Check whether the NRHS normwise backward errors satisfy the
 *        stopping criterion. If yes, set ITER=IITER>0 and return.  *        stopping criterion. If yes, set ITER=IITER>0 and return.
Line 303 Line 303
             XNRM = ABS( X( IDAMAX( N, X( 1, I ), 1 ), I ) )              XNRM = ABS( X( IDAMAX( N, X( 1, I ), 1 ), I ) )
             RNRM = ABS( WORK( IDAMAX( N, WORK( 1, I ), 1 ), I ) )              RNRM = ABS( WORK( IDAMAX( N, WORK( 1, I ), 1 ), I ) )
             IF( RNRM.GT.XNRM*CTE )              IF( RNRM.GT.XNRM*CTE )
      +         GO TO 20       $         GO TO 20
          END DO           END DO
 *  *
 *        If we are here, the NRHS normwise backward errors satisfy the  *        If we are here, the NRHS normwise backward errors satisfy the
Line 332 Line 332
       CALL DGETRF( N, N, A, LDA, IPIV, INFO )        CALL DGETRF( N, N, A, LDA, IPIV, INFO )
 *  *
       IF( INFO.NE.0 )        IF( INFO.NE.0 )
      +   RETURN       $   RETURN
 *  *
       CALL DLACPY( 'All', N, NRHS, B, LDB, X, LDX )        CALL DLACPY( 'All', N, NRHS, B, LDB, X, LDX )
       CALL DGETRS( 'No transpose', N, NRHS, A, LDA, IPIV, X, LDX,        CALL DGETRS( 'No transpose', N, NRHS, A, LDA, IPIV, X, LDX,
      +             INFO )       $             INFO )
 *  *
       RETURN        RETURN
 *  *

Removed from v.1.8  
changed lines
  Added in v.1.9


CVSweb interface <joel.bertrand@systella.fr>