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

version 1.14, 2014/01/27 09:28:15 version 1.21, 2023/08/07 08:38:47
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 DBDSDC + dependencies   *> Download DBDSDC + dependencies
 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dbdsdc.f">   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dbdsdc.f">
 *> [TGZ]</a>   *> [TGZ]</a>
 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dbdsdc.f">   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dbdsdc.f">
 *> [ZIP]</a>   *> [ZIP]</a>
 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dbdsdc.f">   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dbdsdc.f">
 *> [TXT]</a>  *> [TXT]</a>
 *> \endhtmlonly   *> \endhtmlonly
 *  *
 *  Definition:  *  Definition:
 *  ===========  *  ===========
 *  *
 *       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 )
 *   *
 *       .. Scalar Arguments ..  *       .. Scalar Arguments ..
 *       CHARACTER          COMPQ, UPLO  *       CHARACTER          COMPQ, UPLO
 *       INTEGER            INFO, LDU, LDVT, N  *       INTEGER            INFO, LDU, LDVT, N
Line 30 Line 30
 *       DOUBLE PRECISION   D( * ), E( * ), Q( * ), U( LDU, * ),  *       DOUBLE PRECISION   D( * ), E( * ), Q( * ), U( LDU, * ),
 *      $                   VT( LDVT, * ), WORK( * )  *      $                   VT( LDVT, * ), WORK( * )
 *       ..  *       ..
 *    *
 *  *
 *> \par Purpose:  *> \par Purpose:
 *  =============  *  =============
Line 186 Line 186
 *  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  
 *  *
 *> \ingroup auxOTHERcomputational  *> \ingroup auxOTHERcomputational
 *  *
Line 205 Line 203
       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 --
 *  -- 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          COMPQ, UPLO        CHARACTER          COMPQ, UPLO
Line 316 Line 313
       END IF        END IF
       IF( IUPLO.EQ.2 ) THEN        IF( IUPLO.EQ.2 ) THEN
          QSTART = 5           QSTART = 5
          WSTART = 2*N - 1           IF( ICOMPQ .EQ. 2 ) WSTART = 2*N - 1
          DO 10 I = 1, N - 1           DO 10 I = 1, N - 1
             CALL DLARTG( D( I ), E( I ), CS, SN, R )              CALL DLARTG( D( I ), E( I ), CS, SN, R )
             D( I ) = R              D( I ) = R
Line 335 Line 332
 *     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 412
       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.21


CVSweb interface <joel.bertrand@systella.fr>