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

version 1.8, 2012/12/14 14:22:57 version 1.9, 2014/01/27 09:24:37
Line 308 Line 308
 *> \author Univ. of Colorado Denver   *> \author Univ. of Colorado Denver 
 *> \author NAG Ltd.   *> \author NAG Ltd. 
 *  *
 *> \date November 2011  *> \date November 2013
 *  *
 *> \ingroup complex16OTHERcomputational  *> \ingroup complex16OTHERcomputational
 *  *
Line 320 Line 320
      $                             LDV2T, WORK, LWORK, RWORK, LRWORK,       $                             LDV2T, WORK, LWORK, RWORK, LRWORK,
      $                             IWORK, INFO )       $                             IWORK, INFO )
 *  *
 *  -- LAPACK computational routine (version 3.4.0) --  *  -- LAPACK computational routine (version 3.5.0) --
 *  -- 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  *     November 2013
 *  *
 *     .. Scalar Arguments ..  *     .. Scalar Arguments ..
       CHARACTER          JOBU1, JOBU2, JOBV1T, JOBV2T, SIGNS, TRANS        CHARACTER          JOBU1, JOBU2, JOBV1T, JOBV2T, SIGNS, TRANS
Line 356 Line 356
      $                   LBBCSDWORKOPT, LORBDBWORK, LORBDBWORKMIN,       $                   LBBCSDWORKOPT, LORBDBWORK, LORBDBWORKMIN,
      $                   LORBDBWORKOPT, LORGLQWORK, LORGLQWORKMIN,       $                   LORBDBWORKOPT, LORGLQWORK, LORGLQWORKMIN,
      $                   LORGLQWORKOPT, LORGQRWORK, LORGQRWORKMIN,       $                   LORGLQWORKOPT, LORGQRWORK, LORGQRWORKMIN,
      $                   LORGQRWORKOPT, LWORKMIN, LWORKOPT       $                   LORGQRWORKOPT, LWORKMIN, LWORKOPT, P1, Q1
       LOGICAL            COLMAJOR, DEFAULTSIGNS, LQUERY, WANTU1, WANTU2,        LOGICAL            COLMAJOR, DEFAULTSIGNS, LQUERY, WANTU1, WANTU2,
      $                   WANTV1T, WANTV2T       $                   WANTV1T, WANTV2T
       INTEGER            LRWORKMIN, LRWORKOPT        INTEGER            LRWORKMIN, LRWORKOPT
Line 371 Line 371
       EXTERNAL           LSAME        EXTERNAL           LSAME
 *     ..  *     ..
 *     .. Intrinsic Functions  *     .. Intrinsic Functions
       INTRINSIC          COS, INT, MAX, MIN, SIN        INTRINSIC          INT, MAX, MIN
 *     ..  *     ..
 *     .. Executable Statements ..  *     .. Executable Statements ..
 *  *
Line 392 Line 392
          INFO = -8           INFO = -8
       ELSE IF( Q .LT. 0 .OR. Q .GT. M ) THEN        ELSE IF( Q .LT. 0 .OR. Q .GT. M ) THEN
          INFO = -9           INFO = -9
       ELSE IF( ( COLMAJOR .AND. LDX11 .LT. MAX(1,P) ) .OR.        ELSE IF ( COLMAJOR .AND.  LDX11 .LT. MAX( 1, P ) ) THEN
      $         ( .NOT.COLMAJOR .AND. LDX11 .LT. MAX(1,Q) ) ) THEN          INFO = -11
          INFO = -11        ELSE IF (.NOT. COLMAJOR .AND. LDX11 .LT. MAX( 1, Q ) ) THEN
           INFO = -11
         ELSE IF (COLMAJOR .AND. LDX12 .LT. MAX( 1, P ) ) THEN
           INFO = -13
         ELSE IF (.NOT. COLMAJOR .AND. LDX12 .LT. MAX( 1, M-Q ) ) THEN
           INFO = -13
         ELSE IF (COLMAJOR .AND. LDX21 .LT. MAX( 1, M-P ) ) THEN
           INFO = -15
         ELSE IF (.NOT. COLMAJOR .AND. LDX21 .LT. MAX( 1, Q ) ) THEN
           INFO = -15
         ELSE IF (COLMAJOR .AND. LDX22 .LT. MAX( 1, M-P ) ) THEN
           INFO = -17
         ELSE IF (.NOT. COLMAJOR .AND. LDX22 .LT. MAX( 1, M-Q ) ) THEN
           INFO = -17
       ELSE IF( WANTU1 .AND. LDU1 .LT. P ) THEN        ELSE IF( WANTU1 .AND. LDU1 .LT. P ) THEN
          INFO = -20           INFO = -20
       ELSE IF( WANTU2 .AND. LDU2 .LT. M-P ) THEN        ELSE IF( WANTU2 .AND. LDU2 .LT. M-P ) THEN
Line 458 Line 471
          IB22D = IB21E + MAX( 1, Q - 1 )           IB22D = IB21E + MAX( 1, Q - 1 )
          IB22E = IB22D + MAX( 1, Q )           IB22E = IB22D + MAX( 1, Q )
          IBBCSD = IB22E + MAX( 1, Q - 1 )           IBBCSD = IB22E + MAX( 1, Q - 1 )
          CALL ZBBCSD( JOBU1, JOBU2, JOBV1T, JOBV2T, TRANS, M, P, Q, 0,           CALL ZBBCSD( JOBU1, JOBU2, JOBV1T, JOBV2T, TRANS, M, P, Q,
      $                0, U1, LDU1, U2, LDU2, V1T, LDV1T, V2T, LDV2T, 0,       $                THETA, THETA, U1, LDU1, U2, LDU2, V1T, LDV1T,
      $                0, 0, 0, 0, 0, 0, 0, RWORK, -1, CHILDINFO )       $                V2T, LDV2T, THETA, THETA, THETA, THETA, THETA,
        $                THETA, THETA, THETA, RWORK, -1, CHILDINFO )
          LBBCSDWORKOPT = INT( RWORK(1) )           LBBCSDWORKOPT = INT( RWORK(1) )
          LBBCSDWORKMIN = LBBCSDWORKOPT           LBBCSDWORKMIN = LBBCSDWORKOPT
          LRWORKOPT = IBBCSD + LBBCSDWORKOPT - 1           LRWORKOPT = IBBCSD + LBBCSDWORKOPT - 1
Line 474 Line 488
          ITAUQ1 = ITAUP2 + MAX( 1, M - P )           ITAUQ1 = ITAUP2 + MAX( 1, M - P )
          ITAUQ2 = ITAUQ1 + MAX( 1, Q )           ITAUQ2 = ITAUQ1 + MAX( 1, Q )
          IORGQR = ITAUQ2 + MAX( 1, M - Q )           IORGQR = ITAUQ2 + MAX( 1, M - Q )
          CALL ZUNGQR( M-Q, M-Q, M-Q, 0, MAX(1,M-Q), 0, WORK, -1,           CALL ZUNGQR( M-Q, M-Q, M-Q, U1, MAX(1,M-Q), U1, WORK, -1,
      $                CHILDINFO )       $                CHILDINFO )
          LORGQRWORKOPT = INT( WORK(1) )           LORGQRWORKOPT = INT( WORK(1) )
          LORGQRWORKMIN = MAX( 1, M - Q )           LORGQRWORKMIN = MAX( 1, M - Q )
          IORGLQ = ITAUQ2 + MAX( 1, M - Q )           IORGLQ = ITAUQ2 + MAX( 1, M - Q )
          CALL ZUNGLQ( M-Q, M-Q, M-Q, 0, MAX(1,M-Q), 0, WORK, -1,           CALL ZUNGLQ( M-Q, M-Q, M-Q, U1, MAX(1,M-Q), U1, WORK, -1,
      $                CHILDINFO )       $                CHILDINFO )
          LORGLQWORKOPT = INT( WORK(1) )           LORGLQWORKOPT = INT( WORK(1) )
          LORGLQWORKMIN = MAX( 1, M - Q )           LORGLQWORKMIN = MAX( 1, M - Q )
          IORBDB = ITAUQ2 + MAX( 1, M - Q )           IORBDB = ITAUQ2 + MAX( 1, M - Q )
          CALL ZUNBDB( TRANS, SIGNS, M, P, Q, X11, LDX11, X12, LDX12,           CALL ZUNBDB( TRANS, SIGNS, M, P, Q, X11, LDX11, X12, LDX12,
      $                X21, LDX21, X22, LDX22, 0, 0, 0, 0, 0, 0, WORK,       $                X21, LDX21, X22, LDX22, THETA, THETA, U1, U2,
      $                -1, CHILDINFO )       $                V1T, V2T, WORK, -1, CHILDINFO )
          LORBDBWORKOPT = INT( WORK(1) )           LORBDBWORKOPT = INT( WORK(1) )
          LORBDBWORKMIN = LORBDBWORKOPT           LORBDBWORKMIN = LORBDBWORKOPT
          LWORKOPT = MAX( IORGQR + LORGQRWORKOPT, IORGLQ + LORGLQWORKOPT,           LWORKOPT = MAX( IORGQR + LORGQRWORKOPT, IORGLQ + LORGLQWORKOPT,
Line 551 Line 565
          END IF           END IF
          IF( WANTV2T .AND. M-Q .GT. 0 ) THEN           IF( WANTV2T .AND. M-Q .GT. 0 ) THEN
             CALL ZLACPY( 'U', P, M-Q, X12, LDX12, V2T, LDV2T )              CALL ZLACPY( 'U', P, M-Q, X12, LDX12, V2T, LDV2T )
             CALL ZLACPY( 'U', M-P-Q, M-P-Q, X22(Q+1,P+1), LDX22,              IF( M-P .GT. Q) THEN
      $                   V2T(P+1,P+1), LDV2T )                 CALL ZLACPY( 'U', M-P-Q, M-P-Q, X22(Q+1,P+1), LDX22,
             CALL ZUNGLQ( M-Q, M-Q, M-Q, V2T, LDV2T, WORK(ITAUQ2),       $                      V2T(P+1,P+1), LDV2T )
      $                   WORK(IORGLQ), LORGLQWORK, INFO )              END IF
               IF( M .GT. Q ) THEN
                  CALL ZUNGLQ( M-Q, M-Q, M-Q, V2T, LDV2T, WORK(ITAUQ2),
        $                      WORK(IORGLQ), LORGLQWORK, INFO )
               END IF
          END IF           END IF
       ELSE        ELSE
          IF( WANTU1 .AND. P .GT. 0 ) THEN           IF( WANTU1 .AND. P .GT. 0 ) THEN
Line 579 Line 597
      $                   WORK(IORGQR), LORGQRWORK, INFO )       $                   WORK(IORGQR), LORGQRWORK, INFO )
          END IF           END IF
          IF( WANTV2T .AND. M-Q .GT. 0 ) THEN           IF( WANTV2T .AND. M-Q .GT. 0 ) THEN
               P1 = MIN( P+1, M )
               Q1 = MIN( Q+1, M )
             CALL ZLACPY( 'L', M-Q, P, X12, LDX12, V2T, LDV2T )              CALL ZLACPY( 'L', M-Q, P, X12, LDX12, V2T, LDV2T )
             CALL ZLACPY( 'L', M-P-Q, M-P-Q, X22(P+1,Q+1), LDX22,              IF( M .GT. P+Q ) THEN
      $                   V2T(P+1,P+1), LDV2T )                 CALL ZLACPY( 'L', M-P-Q, M-P-Q, X22(P1,Q1), LDX22,
        $                      V2T(P+1,P+1), LDV2T )
               END IF
             CALL ZUNGQR( M-Q, M-Q, M-Q, V2T, LDV2T, WORK(ITAUQ2),              CALL ZUNGQR( M-Q, M-Q, M-Q, V2T, LDV2T, WORK(ITAUQ2),
      $                   WORK(IORGQR), LORGQRWORK, INFO )       $                   WORK(IORGQR), LORGQRWORK, INFO )
          END IF           END IF

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


CVSweb interface <joel.bertrand@systella.fr>