Diff for /rpl/lapack/lapack/dgelss.f between versions 1.9 and 1.18

version 1.9, 2011/11/21 20:42:51 version 1.18, 2023/08/07 08:38:48
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 DGELSS + dependencies   *> Download DGELSS + dependencies
 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dgelss.f">   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dgelss.f">
 *> [TGZ]</a>   *> [TGZ]</a>
 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dgelss.f">   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dgelss.f">
 *> [ZIP]</a>   *> [ZIP]</a>
 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dgelss.f">   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dgelss.f">
 *> [TXT]</a>  *> [TXT]</a>
 *> \endhtmlonly   *> \endhtmlonly
 *  *
 *  Definition:  *  Definition:
 *  ===========  *  ===========
 *  *
 *       SUBROUTINE DGELSS( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK,  *       SUBROUTINE DGELSS( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK,
 *                          WORK, LWORK, INFO )  *                          WORK, LWORK, INFO )
 *   *
 *       .. Scalar Arguments ..  *       .. Scalar Arguments ..
 *       INTEGER            INFO, LDA, LDB, LWORK, M, N, NRHS, RANK  *       INTEGER            INFO, LDA, LDB, LWORK, M, N, NRHS, RANK
 *       DOUBLE PRECISION   RCOND  *       DOUBLE PRECISION   RCOND
Line 28 Line 28
 *       .. Array Arguments ..  *       .. Array Arguments ..
 *       DOUBLE PRECISION   A( LDA, * ), B( LDB, * ), S( * ), WORK( * )  *       DOUBLE PRECISION   A( LDA, * ), B( LDB, * ), S( * ), WORK( * )
 *       ..  *       ..
 *    *
 *  *
 *> \par Purpose:  *> \par Purpose:
 *  =============  *  =============
Line 159 Line 159
 *  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 doubleGEsolve  *> \ingroup doubleGEsolve
 *  *
Line 172 Line 170
       SUBROUTINE DGELSS( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK,        SUBROUTINE DGELSS( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK,
      $                   WORK, LWORK, INFO )       $                   WORK, LWORK, INFO )
 *  *
 *  -- LAPACK driver routine (version 3.4.0) --  *  -- LAPACK driver 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 ..
       INTEGER            INFO, LDA, LDB, LWORK, M, N, NRHS, RANK        INTEGER            INFO, LDA, LDB, LWORK, M, N, NRHS, RANK
Line 257 Line 254
 *  *
 *              Compute space needed for DGEQRF  *              Compute space needed for DGEQRF
                CALL DGEQRF( M, N, A, LDA, DUM(1), DUM(1), -1, INFO )                 CALL DGEQRF( M, N, A, LDA, DUM(1), DUM(1), -1, INFO )
                LWORK_DGEQRF=DUM(1)                 LWORK_DGEQRF = INT( DUM(1) )
 *              Compute space needed for DORMQR  *              Compute space needed for DORMQR
                CALL DORMQR( 'L', 'T', M, NRHS, N, A, LDA, DUM(1), B,                 CALL DORMQR( 'L', 'T', M, NRHS, N, A, LDA, DUM(1), B,
      $                   LDB, DUM(1), -1, INFO )       $                   LDB, DUM(1), -1, INFO )
                LWORK_DORMQR=DUM(1)                 LWORK_DORMQR = INT( DUM(1) )
                MM = N                 MM = N
                MAXWRK = MAX( MAXWRK, N + LWORK_DGEQRF )                 MAXWRK = MAX( MAXWRK, N + LWORK_DGEQRF )
                MAXWRK = MAX( MAXWRK, N + LWORK_DORMQR )                 MAXWRK = MAX( MAXWRK, N + LWORK_DORMQR )
Line 276 Line 273
 *              Compute space needed for DGEBRD  *              Compute space needed for DGEBRD
                CALL DGEBRD( MM, N, A, LDA, S, DUM(1), DUM(1),                 CALL DGEBRD( MM, N, A, LDA, S, DUM(1), DUM(1),
      $                      DUM(1), DUM(1), -1, INFO )       $                      DUM(1), DUM(1), -1, INFO )
                LWORK_DGEBRD=DUM(1)                 LWORK_DGEBRD = INT( DUM(1) )
 *              Compute space needed for DORMBR  *              Compute space needed for DORMBR
                CALL DORMBR( 'Q', 'L', 'T', MM, NRHS, N, A, LDA, DUM(1),                 CALL DORMBR( 'Q', 'L', 'T', MM, NRHS, N, A, LDA, DUM(1),
      $                B, LDB, DUM(1), -1, INFO )       $                B, LDB, DUM(1), -1, INFO )
                LWORK_DORMBR=DUM(1)                 LWORK_DORMBR = INT( DUM(1) )
 *              Compute space needed for DORGBR  *              Compute space needed for DORGBR
                CALL DORGBR( 'P', N, N, N, A, LDA, DUM(1),                 CALL DORGBR( 'P', N, N, N, A, LDA, DUM(1),
      $                   DUM(1), -1, INFO )       $                   DUM(1), -1, INFO )
                LWORK_DORGBR=DUM(1)                 LWORK_DORGBR = INT( DUM(1) )
 *              Compute total workspace needed   *              Compute total workspace needed
                MAXWRK = MAX( MAXWRK, 3*N + LWORK_DGEBRD )                 MAXWRK = MAX( MAXWRK, 3*N + LWORK_DGEBRD )
                MAXWRK = MAX( MAXWRK, 3*N + LWORK_DORMBR )                 MAXWRK = MAX( MAXWRK, 3*N + LWORK_DORMBR )
                MAXWRK = MAX( MAXWRK, 3*N + LWORK_DORGBR )                 MAXWRK = MAX( MAXWRK, 3*N + LWORK_DORGBR )
Line 308 Line 305
 *                 Compute space needed for DGELQF  *                 Compute space needed for DGELQF
                   CALL DGELQF( M, N, A, LDA, DUM(1), DUM(1),                    CALL DGELQF( M, N, A, LDA, DUM(1), DUM(1),
      $                -1, INFO )       $                -1, INFO )
                   LWORK_DGELQF=DUM(1)                    LWORK_DGELQF = INT( DUM(1) )
 *                 Compute space needed for DGEBRD  *                 Compute space needed for DGEBRD
                   CALL DGEBRD( M, M, A, LDA, S, DUM(1), DUM(1),                    CALL DGEBRD( M, M, A, LDA, S, DUM(1), DUM(1),
      $                      DUM(1), DUM(1), -1, INFO )       $                      DUM(1), DUM(1), -1, INFO )
                   LWORK_DGEBRD=DUM(1)                    LWORK_DGEBRD = INT( DUM(1) )
 *                 Compute space needed for DORMBR  *                 Compute space needed for DORMBR
                   CALL DORMBR( 'Q', 'L', 'T', M, NRHS, N, A, LDA,                     CALL DORMBR( 'Q', 'L', 'T', M, NRHS, N, A, LDA,
      $                DUM(1), B, LDB, DUM(1), -1, INFO )       $                DUM(1), B, LDB, DUM(1), -1, INFO )
                   LWORK_DORMBR=DUM(1)                    LWORK_DORMBR = INT( DUM(1) )
 *                 Compute space needed for DORGBR  *                 Compute space needed for DORGBR
                   CALL DORGBR( 'P', M, M, M, A, LDA, DUM(1),                    CALL DORGBR( 'P', M, M, M, A, LDA, DUM(1),
      $                   DUM(1), -1, INFO )       $                   DUM(1), -1, INFO )
                   LWORK_DORGBR=DUM(1)                    LWORK_DORGBR = INT( DUM(1) )
 *                 Compute space needed for DORMLQ  *                 Compute space needed for DORMLQ
                   CALL DORMLQ( 'L', 'T', N, NRHS, M, A, LDA, DUM(1),                    CALL DORMLQ( 'L', 'T', N, NRHS, M, A, LDA, DUM(1),
      $                 B, LDB, DUM(1), -1, INFO )       $                 B, LDB, DUM(1), -1, INFO )
                   LWORK_DORMLQ=DUM(1)                    LWORK_DORMLQ = INT( DUM(1) )
 *                 Compute total workspace needed   *                 Compute total workspace needed
                   MAXWRK = M + LWORK_DGELQF                    MAXWRK = M + LWORK_DGELQF
                   MAXWRK = MAX( MAXWRK, M*M + 4*M + LWORK_DGEBRD )                    MAXWRK = MAX( MAXWRK, M*M + 4*M + LWORK_DGEBRD )
                   MAXWRK = MAX( MAXWRK, M*M + 4*M + LWORK_DORMBR )                    MAXWRK = MAX( MAXWRK, M*M + 4*M + LWORK_DORMBR )
Line 344 Line 341
 *                 Compute space needed for DGEBRD  *                 Compute space needed for DGEBRD
                   CALL DGEBRD( M, N, A, LDA, S, DUM(1), DUM(1),                    CALL DGEBRD( M, N, A, LDA, S, DUM(1), DUM(1),
      $                      DUM(1), DUM(1), -1, INFO )       $                      DUM(1), DUM(1), -1, INFO )
                   LWORK_DGEBRD=DUM(1)                    LWORK_DGEBRD = INT( DUM(1) )
 *                 Compute space needed for DORMBR  *                 Compute space needed for DORMBR
                   CALL DORMBR( 'Q', 'L', 'T', M, NRHS, M, A, LDA,                     CALL DORMBR( 'Q', 'L', 'T', M, NRHS, M, A, LDA,
      $                DUM(1), B, LDB, DUM(1), -1, INFO )       $                DUM(1), B, LDB, DUM(1), -1, INFO )
                   LWORK_DORMBR=DUM(1)                    LWORK_DORMBR = INT( DUM(1) )
 *                 Compute space needed for DORGBR  *                 Compute space needed for DORGBR
                   CALL DORGBR( 'P', M, N, M, A, LDA, DUM(1),                    CALL DORGBR( 'P', M, N, M, A, LDA, DUM(1),
      $                   DUM(1), -1, INFO )       $                   DUM(1), -1, INFO )
                   LWORK_DORGBR=DUM(1)                    LWORK_DORGBR = INT( DUM(1) )
                   MAXWRK = 3*M + LWORK_DGEBRD                    MAXWRK = 3*M + LWORK_DGEBRD
                   MAXWRK = MAX( MAXWRK, 3*M + LWORK_DORMBR )                    MAXWRK = MAX( MAXWRK, 3*M + LWORK_DORMBR )
                   MAXWRK = MAX( MAXWRK, 3*M + LWORK_DORGBR )                    MAXWRK = MAX( MAXWRK, 3*M + LWORK_DORGBR )

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


CVSweb interface <joel.bertrand@systella.fr>