Diff for /rpl/lapack/lapack/zgesvd.f between versions 1.13 and 1.14

version 1.13, 2014/01/27 09:28:33 version 1.14, 2015/11/26 11:44:21
Line 214 Line 214
       SUBROUTINE ZGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU,         SUBROUTINE ZGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, 
      $                   VT, LDVT, WORK, LWORK, RWORK, INFO )       $                   VT, LDVT, WORK, LWORK, RWORK, INFO )
 *  *
 *  -- LAPACK driver routine (version 3.4.1) --  *  -- LAPACK driver routine (version 3.6.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..--
 *     April 2012  *     April 2012
Line 321 Line 321
 *  *
             MNTHR = ILAENV( 6, 'ZGESVD', JOBU // JOBVT, M, N, 0, 0 )              MNTHR = ILAENV( 6, 'ZGESVD', JOBU // JOBVT, M, N, 0, 0 )
 *           Compute space needed for ZGEQRF  *           Compute space needed for ZGEQRF
             CALL ZGEQRF( M, N, A, LDA, DUM(1), DUM(1), -1, IERR )              CALL ZGEQRF( M, N, A, LDA, CDUM(1), CDUM(1), -1, IERR )
             LWORK_ZGEQRF=DUM(1)              LWORK_ZGEQRF=CDUM(1)
 *           Compute space needed for ZUNGQR  *           Compute space needed for ZUNGQR
             CALL ZUNGQR( M, N, N, A, LDA, DUM(1), DUM(1), -1, IERR )              CALL ZUNGQR( M, N, N, A, LDA, CDUM(1), CDUM(1), -1, IERR )
             LWORK_ZUNGQR_N=DUM(1)              LWORK_ZUNGQR_N=CDUM(1)
             CALL ZUNGQR( M, M, N, A, LDA, DUM(1), DUM(1), -1, IERR )              CALL ZUNGQR( M, M, N, A, LDA, CDUM(1), CDUM(1), -1, IERR )
             LWORK_ZUNGQR_M=DUM(1)              LWORK_ZUNGQR_M=CDUM(1)
 *           Compute space needed for ZGEBRD  *           Compute space needed for ZGEBRD
             CALL ZGEBRD( N, N, A, LDA, S, DUM(1), DUM(1),              CALL ZGEBRD( N, N, A, LDA, S, DUM(1), CDUM(1),
      $                   DUM(1), DUM(1), -1, IERR )       $                   CDUM(1), CDUM(1), -1, IERR )
             LWORK_ZGEBRD=DUM(1)              LWORK_ZGEBRD=CDUM(1)
 *           Compute space needed for ZUNGBR  *           Compute space needed for ZUNGBR
             CALL ZUNGBR( 'P', N, N, N, A, LDA, DUM(1),              CALL ZUNGBR( 'P', N, N, N, A, LDA, CDUM(1),
      $                   DUM(1), -1, IERR )       $                   CDUM(1), -1, IERR )
             LWORK_ZUNGBR_P=DUM(1)              LWORK_ZUNGBR_P=CDUM(1)
             CALL ZUNGBR( 'Q', N, N, N, A, LDA, DUM(1),              CALL ZUNGBR( 'Q', N, N, N, A, LDA, CDUM(1),
      $                   DUM(1), -1, IERR )       $                   CDUM(1), -1, IERR )
             LWORK_ZUNGBR_Q=DUM(1)              LWORK_ZUNGBR_Q=CDUM(1)
 *  *
             IF( M.GE.MNTHR ) THEN              IF( M.GE.MNTHR ) THEN
                IF( WNTUN ) THEN                 IF( WNTUN ) THEN
Line 443 Line 443
 *  *
 *              Path 10 (M at least N, but not much larger)  *              Path 10 (M at least N, but not much larger)
 *  *
                CALL ZGEBRD( M, N, A, LDA, S, DUM(1), DUM(1),                 CALL ZGEBRD( M, N, A, LDA, S, DUM(1), CDUM(1),
      $                   DUM(1), DUM(1), -1, IERR )       $                   CDUM(1), CDUM(1), -1, IERR )
                LWORK_ZGEBRD=DUM(1)                 LWORK_ZGEBRD=CDUM(1)
                MAXWRK = 2*N + LWORK_ZGEBRD                 MAXWRK = 2*N + LWORK_ZGEBRD
                IF( WNTUS .OR. WNTUO ) THEN                 IF( WNTUS .OR. WNTUO ) THEN
                   CALL ZUNGBR( 'Q', M, N, N, A, LDA, DUM(1),                    CALL ZUNGBR( 'Q', M, N, N, A, LDA, CDUM(1),
      $                   DUM(1), -1, IERR )       $                   CDUM(1), -1, IERR )
                   LWORK_ZUNGBR_Q=DUM(1)                    LWORK_ZUNGBR_Q=CDUM(1)
                   MAXWRK = MAX( MAXWRK, 2*N+LWORK_ZUNGBR_Q )                    MAXWRK = MAX( MAXWRK, 2*N+LWORK_ZUNGBR_Q )
                END IF                 END IF
                IF( WNTUA ) THEN                 IF( WNTUA ) THEN
                   CALL ZUNGBR( 'Q', M, M, N, A, LDA, DUM(1),                    CALL ZUNGBR( 'Q', M, M, N, A, LDA, CDUM(1),
      $                   DUM(1), -1, IERR )       $                   CDUM(1), -1, IERR )
                   LWORK_ZUNGBR_Q=DUM(1)                    LWORK_ZUNGBR_Q=CDUM(1)
                   MAXWRK = MAX( MAXWRK, 2*N+LWORK_ZUNGBR_Q )                    MAXWRK = MAX( MAXWRK, 2*N+LWORK_ZUNGBR_Q )
                END IF                 END IF
                IF( .NOT.WNTVN ) THEN                 IF( .NOT.WNTVN ) THEN
Line 470 Line 470
 *  *
             MNTHR = ILAENV( 6, 'ZGESVD', JOBU // JOBVT, M, N, 0, 0 )              MNTHR = ILAENV( 6, 'ZGESVD', JOBU // JOBVT, M, N, 0, 0 )
 *           Compute space needed for ZGELQF  *           Compute space needed for ZGELQF
             CALL ZGELQF( M, N, A, LDA, DUM(1), DUM(1), -1, IERR )              CALL ZGELQF( M, N, A, LDA, CDUM(1), CDUM(1), -1, IERR )
             LWORK_ZGELQF=DUM(1)              LWORK_ZGELQF=CDUM(1)
 *           Compute space needed for ZUNGLQ  *           Compute space needed for ZUNGLQ
             CALL ZUNGLQ( N, N, M, DUM(1), N, DUM(1), DUM(1), -1, IERR )              CALL ZUNGLQ( N, N, M, CDUM(1), N, CDUM(1), CDUM(1), -1,
             LWORK_ZUNGLQ_N=DUM(1)       $                   IERR )
             CALL ZUNGLQ( M, N, M, A, LDA, DUM(1), DUM(1), -1, IERR )              LWORK_ZUNGLQ_N=CDUM(1)
             LWORK_ZUNGLQ_M=DUM(1)              CALL ZUNGLQ( M, N, M, A, LDA, CDUM(1), CDUM(1), -1, IERR )
               LWORK_ZUNGLQ_M=CDUM(1)
 *           Compute space needed for ZGEBRD  *           Compute space needed for ZGEBRD
             CALL ZGEBRD( M, M, A, LDA, S, DUM(1), DUM(1),              CALL ZGEBRD( M, M, A, LDA, S, DUM(1), CDUM(1),
      $                   DUM(1), DUM(1), -1, IERR )       $                   CDUM(1), CDUM(1), -1, IERR )
             LWORK_ZGEBRD=DUM(1)              LWORK_ZGEBRD=CDUM(1)
 *            Compute space needed for ZUNGBR P  *            Compute space needed for ZUNGBR P
             CALL ZUNGBR( 'P', M, M, M, A, N, DUM(1),              CALL ZUNGBR( 'P', M, M, M, A, N, CDUM(1),
      $                   DUM(1), -1, IERR )       $                   CDUM(1), -1, IERR )
             LWORK_ZUNGBR_P=DUM(1)              LWORK_ZUNGBR_P=CDUM(1)
 *           Compute space needed for ZUNGBR Q  *           Compute space needed for ZUNGBR Q
             CALL ZUNGBR( 'Q', M, M, M, A, N, DUM(1),              CALL ZUNGBR( 'Q', M, M, M, A, N, CDUM(1),
      $                   DUM(1), -1, IERR )       $                   CDUM(1), -1, IERR )
             LWORK_ZUNGBR_Q=DUM(1)              LWORK_ZUNGBR_Q=CDUM(1)
             IF( N.GE.MNTHR ) THEN              IF( N.GE.MNTHR ) THEN
                IF( WNTVN ) THEN                 IF( WNTVN ) THEN
 *  *
Line 592 Line 593
 *  *
 *              Path 10t(N greater than M, but not much larger)  *              Path 10t(N greater than M, but not much larger)
 *  *
                CALL ZGEBRD( M, N, A, LDA, S, DUM(1), DUM(1),                 CALL ZGEBRD( M, N, A, LDA, S, DUM(1), CDUM(1),
      $                   DUM(1), DUM(1), -1, IERR )       $                   CDUM(1), CDUM(1), -1, IERR )
                LWORK_ZGEBRD=DUM(1)                 LWORK_ZGEBRD=CDUM(1)
                MAXWRK = 2*M + LWORK_ZGEBRD                 MAXWRK = 2*M + LWORK_ZGEBRD
                IF( WNTVS .OR. WNTVO ) THEN                 IF( WNTVS .OR. WNTVO ) THEN
 *                Compute space needed for ZUNGBR P  *                Compute space needed for ZUNGBR P
                  CALL ZUNGBR( 'P', M, N, M, A, N, DUM(1),                   CALL ZUNGBR( 'P', M, N, M, A, N, CDUM(1),
      $                   DUM(1), -1, IERR )       $                   CDUM(1), -1, IERR )
                  LWORK_ZUNGBR_P=DUM(1)                   LWORK_ZUNGBR_P=CDUM(1)
                  MAXWRK = MAX( MAXWRK, 2*M+LWORK_ZUNGBR_P )                   MAXWRK = MAX( MAXWRK, 2*M+LWORK_ZUNGBR_P )
                END IF                 END IF
                IF( WNTVA ) THEN                 IF( WNTVA ) THEN
                  CALL ZUNGBR( 'P', N,  N, M, A, N, DUM(1),                   CALL ZUNGBR( 'P', N,  N, M, A, N, CDUM(1),
      $                   DUM(1), -1, IERR )       $                   CDUM(1), -1, IERR )
                  LWORK_ZUNGBR_P=DUM(1)                   LWORK_ZUNGBR_P=CDUM(1)
                  MAXWRK = MAX( MAXWRK, 2*M+LWORK_ZUNGBR_P )                   MAXWRK = MAX( MAXWRK, 2*M+LWORK_ZUNGBR_P )
                END IF                 END IF
                IF( .NOT.WNTUN ) THEN                 IF( .NOT.WNTUN ) THEN

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


CVSweb interface <joel.bertrand@systella.fr>