Diff for /rpl/lapack/lapack/zbbcsd.f between versions 1.7 and 1.17

version 1.7, 2012/12/14 14:22:43 version 1.17, 2023/08/07 08:39:15
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 ZBBCSD + dependencies   *> Download ZBBCSD + dependencies
 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/zbbcsd.f">   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/zbbcsd.f">
 *> [TGZ]</a>   *> [TGZ]</a>
 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/zbbcsd.f">   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/zbbcsd.f">
 *> [ZIP]</a>   *> [ZIP]</a>
 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/zbbcsd.f">   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/zbbcsd.f">
 *> [TXT]</a>  *> [TXT]</a>
 *> \endhtmlonly   *> \endhtmlonly
 *  *
 *  Definition:  *  Definition:
 *  ===========  *  ===========
Line 22 Line 22
 *                          THETA, PHI, U1, LDU1, U2, LDU2, V1T, LDV1T,  *                          THETA, PHI, U1, LDU1, U2, LDU2, V1T, LDV1T,
 *                          V2T, LDV2T, B11D, B11E, B12D, B12E, B21D, B21E,  *                          V2T, LDV2T, B11D, B11E, B12D, B12E, B21D, B21E,
 *                          B22D, B22E, RWORK, LRWORK, INFO )  *                          B22D, B22E, RWORK, LRWORK, INFO )
 *   *
 *       .. Scalar Arguments ..  *       .. Scalar Arguments ..
 *       CHARACTER          JOBU1, JOBU2, JOBV1T, JOBV2T, TRANS  *       CHARACTER          JOBU1, JOBU2, JOBV1T, JOBV2T, TRANS
 *       INTEGER            INFO, LDU1, LDU2, LDV1T, LDV2T, LRWORK, M, P, Q  *       INTEGER            INFO, LDU1, LDU2, LDV1T, LDV2T, LRWORK, M, P, Q
Line 34 Line 34
 *       COMPLEX*16         U1( LDU1, * ), U2( LDU2, * ), V1T( LDV1T, * ),  *       COMPLEX*16         U1( LDU1, * ), U2( LDU2, * ), V1T( LDV1T, * ),
 *      $                   V2T( LDV2T, * )  *      $                   V2T( LDV2T, * )
 *       ..  *       ..
 *    *
 *  *
 *> \par Purpose:  *> \par Purpose:
 *  =============  *  =============
Line 149 Line 149
 *> \param[in,out] U1  *> \param[in,out] U1
 *> \verbatim  *> \verbatim
 *>          U1 is COMPLEX*16 array, dimension (LDU1,P)  *>          U1 is COMPLEX*16 array, dimension (LDU1,P)
 *>          On entry, an LDU1-by-P matrix. On exit, U1 is postmultiplied  *>          On entry, a P-by-P matrix. On exit, U1 is postmultiplied
 *>          by the left singular vector matrix common to [ B11 ; 0 ] and  *>          by the left singular vector matrix common to [ B11 ; 0 ] and
 *>          [ B12 0 0 ; 0 -I 0 0 ].  *>          [ B12 0 0 ; 0 -I 0 0 ].
 *> \endverbatim  *> \endverbatim
Line 157 Line 157
 *> \param[in] LDU1  *> \param[in] LDU1
 *> \verbatim  *> \verbatim
 *>          LDU1 is INTEGER  *>          LDU1 is INTEGER
 *>          The leading dimension of the array U1.  *>          The leading dimension of the array U1, LDU1 >= MAX(1,P).
 *> \endverbatim  *> \endverbatim
 *>  *>
 *> \param[in,out] U2  *> \param[in,out] U2
 *> \verbatim  *> \verbatim
 *>          U2 is COMPLEX*16 array, dimension (LDU2,M-P)  *>          U2 is COMPLEX*16 array, dimension (LDU2,M-P)
 *>          On entry, an LDU2-by-(M-P) matrix. On exit, U2 is  *>          On entry, an (M-P)-by-(M-P) matrix. On exit, U2 is
 *>          postmultiplied by the left singular vector matrix common to  *>          postmultiplied by the left singular vector matrix common to
 *>          [ B21 ; 0 ] and [ B22 0 0 ; 0 0 I ].  *>          [ B21 ; 0 ] and [ B22 0 0 ; 0 0 I ].
 *> \endverbatim  *> \endverbatim
Line 171 Line 171
 *> \param[in] LDU2  *> \param[in] LDU2
 *> \verbatim  *> \verbatim
 *>          LDU2 is INTEGER  *>          LDU2 is INTEGER
 *>          The leading dimension of the array U2.  *>          The leading dimension of the array U2, LDU2 >= MAX(1,M-P).
 *> \endverbatim  *> \endverbatim
 *>  *>
 *> \param[in,out] V1T  *> \param[in,out] V1T
 *> \verbatim  *> \verbatim
 *>          V1T is COMPLEX*16 array, dimension (LDV1T,Q)  *>          V1T is COMPLEX*16 array, dimension (LDV1T,Q)
 *>          On entry, a LDV1T-by-Q matrix. On exit, V1T is premultiplied  *>          On entry, a Q-by-Q matrix. On exit, V1T is premultiplied
 *>          by the conjugate transpose of the right singular vector  *>          by the conjugate transpose of the right singular vector
 *>          matrix common to [ B11 ; 0 ] and [ B21 ; 0 ].  *>          matrix common to [ B11 ; 0 ] and [ B21 ; 0 ].
 *> \endverbatim  *> \endverbatim
Line 185 Line 185
 *> \param[in] LDV1T  *> \param[in] LDV1T
 *> \verbatim  *> \verbatim
 *>          LDV1T is INTEGER  *>          LDV1T is INTEGER
 *>          The leading dimension of the array V1T.  *>          The leading dimension of the array V1T, LDV1T >= MAX(1,Q).
 *> \endverbatim  *> \endverbatim
 *>  *>
 *> \param[in,out] V2T  *> \param[in,out] V2T
 *> \verbatim  *> \verbatim
 *>          V2T is COMPLEX*16 array, dimenison (LDV2T,M-Q)  *>          V2T is COMPLEX*16 array, dimension (LDV2T,M-Q)
 *>          On entry, a LDV2T-by-(M-Q) matrix. On exit, V2T is  *>          On entry, an (M-Q)-by-(M-Q) matrix. On exit, V2T is
 *>          premultiplied by the conjugate transpose of the right  *>          premultiplied by the conjugate transpose of the right
 *>          singular vector matrix common to [ B12 0 0 ; 0 -I 0 ] and  *>          singular vector matrix common to [ B12 0 0 ; 0 -I 0 ] and
 *>          [ B22 0 0 ; 0 0 I ].  *>          [ B22 0 0 ; 0 0 I ].
Line 200 Line 200
 *> \param[in] LDV2T  *> \param[in] LDV2T
 *> \verbatim  *> \verbatim
 *>          LDV2T is INTEGER  *>          LDV2T is INTEGER
 *>          The leading dimension of the array V2T.  *>          The leading dimension of the array V2T, LDV2T >= MAX(1,M-Q).
 *> \endverbatim  *> \endverbatim
 *>  *>
 *> \param[out] B11D  *> \param[out] B11D
Line 240 Line 240
 *> \param[out] B21D  *> \param[out] B21D
 *> \verbatim  *> \verbatim
 *>          B21D is DOUBLE PRECISION array, dimension (Q)  *>          B21D is DOUBLE PRECISION array, dimension (Q)
 *>          When CBBCSD converges, B21D contains the negative sines of  *>          When ZBBCSD converges, B21D contains the negative sines of
 *>          THETA(1), ..., THETA(Q). If CBBCSD fails to converge, then  *>          THETA(1), ..., THETA(Q). If ZBBCSD fails to converge, then
 *>          B21D contains the diagonal of the partially reduced bottom-left  *>          B21D contains the diagonal of the partially reduced bottom-left
 *>          block.  *>          block.
 *> \endverbatim  *> \endverbatim
Line 249 Line 249
 *> \param[out] B21E  *> \param[out] B21E
 *> \verbatim  *> \verbatim
 *>          B21E is DOUBLE PRECISION array, dimension (Q-1)  *>          B21E is DOUBLE PRECISION array, dimension (Q-1)
 *>          When CBBCSD converges, B21E contains zeros. If CBBCSD fails  *>          When ZBBCSD converges, B21E contains zeros. If ZBBCSD fails
 *>          to converge, then B21E contains the subdiagonal of the  *>          to converge, then B21E contains the subdiagonal of the
 *>          partially reduced bottom-left block.  *>          partially reduced bottom-left block.
 *> \endverbatim  *> \endverbatim
Line 257 Line 257
 *> \param[out] B22D  *> \param[out] B22D
 *> \verbatim  *> \verbatim
 *>          B22D is DOUBLE PRECISION array, dimension (Q)  *>          B22D is DOUBLE PRECISION array, dimension (Q)
 *>          When CBBCSD converges, B22D contains the negative sines of  *>          When ZBBCSD converges, B22D contains the negative sines of
 *>          THETA(1), ..., THETA(Q). If CBBCSD fails to converge, then  *>          THETA(1), ..., THETA(Q). If ZBBCSD fails to converge, then
 *>          B22D contains the diagonal of the partially reduced bottom-right  *>          B22D contains the diagonal of the partially reduced bottom-right
 *>          block.  *>          block.
 *> \endverbatim  *> \endverbatim
Line 266 Line 266
 *> \param[out] B22E  *> \param[out] B22E
 *> \verbatim  *> \verbatim
 *>          B22E is DOUBLE PRECISION array, dimension (Q-1)  *>          B22E is DOUBLE PRECISION array, dimension (Q-1)
 *>          When CBBCSD converges, B22E contains zeros. If CBBCSD fails  *>          When ZBBCSD converges, B22E contains zeros. If ZBBCSD fails
 *>          to converge, then B22E contains the subdiagonal of the  *>          to converge, then B22E contains the subdiagonal of the
 *>          partially reduced bottom-right block.  *>          partially reduced bottom-right block.
 *> \endverbatim  *> \endverbatim
 *>  *>
 *> \param[out] RWORK  *> \param[out] RWORK
 *> \verbatim  *> \verbatim
 *>          RWORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK))  *>          RWORK is DOUBLE PRECISION array, dimension (MAX(1,LRWORK))
 *>          On exit, if INFO = 0, WORK(1) returns the optimal LWORK.  *>          On exit, if INFO = 0, RWORK(1) returns the optimal LRWORK.
 *> \endverbatim  *> \endverbatim
 *>  *>
 *> \param[in] LRWORK  *> \param[in] LRWORK
Line 317 Line 317
 *  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 complex16OTHERcomputational  *> \ingroup complex16OTHERcomputational
 *  *
Line 332 Line 330
      $                   V2T, LDV2T, B11D, B11E, B12D, B12E, B21D, B21E,       $                   V2T, LDV2T, B11D, B11E, B12D, B12E, B21D, B21E,
      $                   B22D, B22E, RWORK, LRWORK, INFO )       $                   B22D, B22E, RWORK, LRWORK, 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          JOBU1, JOBU2, JOBV1T, JOBV2T, TRANS        CHARACTER          JOBU1, JOBU2, JOBV1T, JOBV2T, TRANS
Line 354 Line 351
 *     .. Parameters ..  *     .. Parameters ..
       INTEGER            MAXITR        INTEGER            MAXITR
       PARAMETER          ( MAXITR = 6 )        PARAMETER          ( MAXITR = 6 )
       DOUBLE PRECISION   HUNDRED, MEIGHTH, ONE, PIOVER2, TEN, ZERO        DOUBLE PRECISION   HUNDRED, MEIGHTH, ONE, TEN, ZERO
       PARAMETER          ( HUNDRED = 100.0D0, MEIGHTH = -0.125D0,        PARAMETER          ( HUNDRED = 100.0D0, MEIGHTH = -0.125D0,
      $                     ONE = 1.0D0, PIOVER2 = 1.57079632679489662D0,       $                     ONE = 1.0D0, TEN = 10.0D0, ZERO = 0.0D0 )
      $                     TEN = 10.0D0, ZERO = 0.0D0 )  
       COMPLEX*16         NEGONECOMPLEX        COMPLEX*16         NEGONECOMPLEX
       PARAMETER          ( NEGONECOMPLEX = (-1.0D0,0.0D0) )        PARAMETER          ( NEGONECOMPLEX = (-1.0D0,0.0D0) )
         DOUBLE PRECISION   PIOVER2
         PARAMETER ( PIOVER2 = 1.57079632679489661923132169163975144210D0 )
 *     ..  *     ..
 *     .. Local Scalars ..  *     .. Local Scalars ..
       LOGICAL            COLMAJOR, LQUERY, RESTART11, RESTART12,        LOGICAL            COLMAJOR, LQUERY, RESTART11, RESTART12,
Line 476 Line 474
 *     Initial deflation  *     Initial deflation
 *  *
       IMAX = Q        IMAX = Q
       DO WHILE( ( IMAX .GT. 1 ) .AND. ( PHI(IMAX-1) .EQ. ZERO ) )        DO WHILE( IMAX .GT. 1 )
            IF( PHI(IMAX-1) .NE. ZERO ) THEN
               EXIT
            END IF
          IMAX = IMAX - 1           IMAX = IMAX - 1
       END DO        END DO
       IMIN = IMAX - 1        IMIN = IMAX - 1

Removed from v.1.7  
changed lines
  Added in v.1.17


CVSweb interface <joel.bertrand@systella.fr>