Diff for /rpl/lapack/lapack/dbdsdc.f between versions 1.14 and 1.15

version 1.14, 2014/01/27 09:28:15 version 1.15, 2016/08/27 15:27:07
Line 191 Line 191
 *> \author Univ. of Colorado Denver   *> \author Univ. of Colorado Denver 
 *> \author NAG Ltd.   *> \author NAG Ltd. 
 *  *
 *> \date November 2011  *> \date June 2016
 *  *
 *> \ingroup auxOTHERcomputational  *> \ingroup auxOTHERcomputational
 *  *
Line 205 Line 205
       SUBROUTINE DBDSDC( UPLO, COMPQ, N, D, E, U, LDU, VT, LDVT, Q, IQ,        SUBROUTINE DBDSDC( UPLO, COMPQ, N, D, E, U, LDU, VT, LDVT, Q, IQ,
      $                   WORK, IWORK, INFO )       $                   WORK, IWORK, INFO )
 *  *
 *  -- LAPACK computational routine (version 3.4.0) --  *  -- LAPACK computational routine (version 3.6.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..--
 *     November 2011  *     June 2016
 *  *
 *     .. Scalar Arguments ..  *     .. Scalar Arguments ..
       CHARACTER          COMPQ, UPLO        CHARACTER          COMPQ, UPLO
Line 311 Line 311
       WSTART = 1        WSTART = 1
       QSTART = 3        QSTART = 3
       IF( ICOMPQ.EQ.1 ) THEN        IF( ICOMPQ.EQ.1 ) THEN
          CALL DCOPY( N, D, 1, Q( 1 ), 1 )           CALL DCOPY( N,   D, 1, Q( 1 ),   1 )
          CALL DCOPY( N-1, E, 1, Q( N+1 ), 1 )           CALL DCOPY( N-1, E, 1, Q( N+1 ), 1 )
       END IF        END IF
       IF( IUPLO.EQ.2 ) THEN        IF( IUPLO.EQ.2 ) THEN
Line 335 Line 335
 *     If ICOMPQ = 0, use DLASDQ to compute the singular values.  *     If ICOMPQ = 0, use DLASDQ to compute the singular values.
 *  *
       IF( ICOMPQ.EQ.0 ) THEN        IF( ICOMPQ.EQ.0 ) THEN
   *        Ignore WSTART, instead using WORK( 1 ), since the two vectors
   *        for CS and -SN above are added only if ICOMPQ == 2,
   *        and adding them exceeds documented WORK size of 4*n.
          CALL DLASDQ( 'U', 0, N, 0, 0, 0, D, E, VT, LDVT, U, LDU, U,           CALL DLASDQ( 'U', 0, N, 0, 0, 0, D, E, VT, LDVT, U, LDU, U,
      $                LDU, WORK( WSTART ), INFO )       $                LDU, WORK( 1 ), INFO )
          GO TO 40           GO TO 40
       END IF        END IF
 *  *
Line 412 Line 415
       DO 30 I = 1, NM1        DO 30 I = 1, NM1
          IF( ( ABS( E( I ) ).LT.EPS ) .OR. ( I.EQ.NM1 ) ) THEN           IF( ( ABS( E( I ) ).LT.EPS ) .OR. ( I.EQ.NM1 ) ) THEN
 *  *
 *        Subproblem found. First determine its size and then  *           Subproblem found. First determine its size and then
 *        apply divide and conquer on it.  *           apply divide and conquer on it.
 *  *
             IF( I.LT.NM1 ) THEN              IF( I.LT.NM1 ) THEN
 *  *
 *        A subproblem with E(I) small for I < NM1.  *              A subproblem with E(I) small for I < NM1.
 *  *
                NSIZE = I - START + 1                 NSIZE = I - START + 1
             ELSE IF( ABS( E( I ) ).GE.EPS ) THEN              ELSE IF( ABS( E( I ) ).GE.EPS ) THEN
 *  *
 *        A subproblem with E(NM1) not too small but I = NM1.  *              A subproblem with E(NM1) not too small but I = NM1.
 *  *
                NSIZE = N - START + 1                 NSIZE = N - START + 1
             ELSE              ELSE
 *  *
 *        A subproblem with E(NM1) small. This implies an  *              A subproblem with E(NM1) small. This implies an
 *        1-by-1 subproblem at D(N). Solve this 1-by-1 problem  *              1-by-1 subproblem at D(N). Solve this 1-by-1 problem
 *        first.  *              first.
 *  *
                NSIZE = I - START + 1                 NSIZE = I - START + 1
                IF( ICOMPQ.EQ.2 ) THEN                 IF( ICOMPQ.EQ.2 ) THEN

Removed from v.1.14  
changed lines
  Added in v.1.15


CVSweb interface <joel.bertrand@systella.fr>