Diff for /rpl/lapack/lapack/dgetf2.f between versions 1.6 and 1.18

version 1.6, 2010/08/13 21:03:45 version 1.18, 2023/08/07 08:38:50
Line 1 Line 1
   *> \brief \b DGETF2 computes the LU factorization of a general m-by-n matrix using partial pivoting with row interchanges (unblocked algorithm).
   *
   *  =========== DOCUMENTATION ===========
   *
   * Online html documentation available at
   *            http://www.netlib.org/lapack/explore-html/
   *
   *> \htmlonly
   *> Download DGETF2 + dependencies
   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dgetf2.f">
   *> [TGZ]</a>
   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dgetf2.f">
   *> [ZIP]</a>
   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dgetf2.f">
   *> [TXT]</a>
   *> \endhtmlonly
   *
   *  Definition:
   *  ===========
   *
   *       SUBROUTINE DGETF2( M, N, A, LDA, IPIV, INFO )
   *
   *       .. Scalar Arguments ..
   *       INTEGER            INFO, LDA, M, N
   *       ..
   *       .. Array Arguments ..
   *       INTEGER            IPIV( * )
   *       DOUBLE PRECISION   A( LDA, * )
   *       ..
   *
   *
   *> \par Purpose:
   *  =============
   *>
   *> \verbatim
   *>
   *> DGETF2 computes an LU factorization of a general m-by-n matrix A
   *> using partial pivoting with row interchanges.
   *>
   *> The factorization has the form
   *>    A = P * L * U
   *> where P is a permutation matrix, L is lower triangular with unit
   *> diagonal elements (lower trapezoidal if m > n), and U is upper
   *> triangular (upper trapezoidal if m < n).
   *>
   *> This is the right-looking Level 2 BLAS version of the algorithm.
   *> \endverbatim
   *
   *  Arguments:
   *  ==========
   *
   *> \param[in] M
   *> \verbatim
   *>          M is INTEGER
   *>          The number of rows of the matrix A.  M >= 0.
   *> \endverbatim
   *>
   *> \param[in] N
   *> \verbatim
   *>          N is INTEGER
   *>          The number of columns of the matrix A.  N >= 0.
   *> \endverbatim
   *>
   *> \param[in,out] A
   *> \verbatim
   *>          A is DOUBLE PRECISION array, dimension (LDA,N)
   *>          On entry, the m by n matrix to be factored.
   *>          On exit, the factors L and U from the factorization
   *>          A = P*L*U; the unit diagonal elements of L are not stored.
   *> \endverbatim
   *>
   *> \param[in] LDA
   *> \verbatim
   *>          LDA is INTEGER
   *>          The leading dimension of the array A.  LDA >= max(1,M).
   *> \endverbatim
   *>
   *> \param[out] IPIV
   *> \verbatim
   *>          IPIV is INTEGER array, dimension (min(M,N))
   *>          The pivot indices; for 1 <= i <= min(M,N), row i of the
   *>          matrix was interchanged with row IPIV(i).
   *> \endverbatim
   *>
   *> \param[out] INFO
   *> \verbatim
   *>          INFO is INTEGER
   *>          = 0: successful exit
   *>          < 0: if INFO = -k, the k-th argument had an illegal value
   *>          > 0: if INFO = k, U(k,k) is exactly zero. The factorization
   *>               has been completed, but the factor U is exactly
   *>               singular, and division by zero will occur if it is used
   *>               to solve a system of equations.
   *> \endverbatim
   *
   *  Authors:
   *  ========
   *
   *> \author Univ. of Tennessee
   *> \author Univ. of California Berkeley
   *> \author Univ. of Colorado Denver
   *> \author NAG Ltd.
   *
   *> \ingroup doubleGEcomputational
   *
   *  =====================================================================
       SUBROUTINE DGETF2( M, N, A, LDA, IPIV, INFO )        SUBROUTINE DGETF2( M, N, A, LDA, IPIV, INFO )
 *  *
 *  -- LAPACK routine (version 3.2) --  *  -- 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 2006  
 *  *
 *     .. Scalar Arguments ..  *     .. Scalar Arguments ..
       INTEGER            INFO, LDA, M, N        INTEGER            INFO, LDA, M, N
Line 13 Line 118
       DOUBLE PRECISION   A( LDA, * )        DOUBLE PRECISION   A( LDA, * )
 *     ..  *     ..
 *  *
 *  Purpose  
 *  =======  
 *  
 *  DGETF2 computes an LU factorization of a general m-by-n matrix A  
 *  using partial pivoting with row interchanges.  
 *  
 *  The factorization has the form  
 *     A = P * L * U  
 *  where P is a permutation matrix, L is lower triangular with unit  
 *  diagonal elements (lower trapezoidal if m > n), and U is upper  
 *  triangular (upper trapezoidal if m < n).  
 *  
 *  This is the right-looking Level 2 BLAS version of the algorithm.  
 *  
 *  Arguments  
 *  =========  
 *  
 *  M       (input) INTEGER  
 *          The number of rows of the matrix A.  M >= 0.  
 *  
 *  N       (input) INTEGER  
 *          The number of columns of the matrix A.  N >= 0.  
 *  
 *  A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)  
 *          On entry, the m by n matrix to be factored.  
 *          On exit, the factors L and U from the factorization  
 *          A = P*L*U; the unit diagonal elements of L are not stored.  
 *  
 *  LDA     (input) INTEGER  
 *          The leading dimension of the array A.  LDA >= max(1,M).  
 *  
 *  IPIV    (output) INTEGER array, dimension (min(M,N))  
 *          The pivot indices; for 1 <= i <= min(M,N), row i of the  
 *          matrix was interchanged with row IPIV(i).  
 *  
 *  INFO    (output) INTEGER  
 *          = 0: successful exit  
 *          < 0: if INFO = -k, the k-th argument had an illegal value  
 *          > 0: if INFO = k, U(k,k) is exactly zero. The factorization  
 *               has been completed, but the factor U is exactly  
 *               singular, and division by zero will occur if it is used  
 *               to solve a system of equations.  
 *  
 *  =====================================================================  *  =====================================================================
 *  *
 *     .. Parameters ..  *     .. Parameters ..
Line 63 Line 125
       PARAMETER          ( ONE = 1.0D+0, ZERO = 0.0D+0 )        PARAMETER          ( ONE = 1.0D+0, ZERO = 0.0D+0 )
 *     ..  *     ..
 *     .. Local Scalars ..  *     .. Local Scalars ..
       DOUBLE PRECISION   SFMIN         DOUBLE PRECISION   SFMIN
       INTEGER            I, J, JP        INTEGER            I, J, JP
 *     ..  *     ..
 *     .. External Functions ..  *     .. External Functions ..
       DOUBLE PRECISION   DLAMCH              DOUBLE PRECISION   DLAMCH
       INTEGER            IDAMAX        INTEGER            IDAMAX
       EXTERNAL           DLAMCH, IDAMAX        EXTERNAL           DLAMCH, IDAMAX
 *     ..  *     ..
Line 99 Line 161
       IF( M.EQ.0 .OR. N.EQ.0 )        IF( M.EQ.0 .OR. N.EQ.0 )
      $   RETURN       $   RETURN
 *  *
 *     Compute machine safe minimum   *     Compute machine safe minimum
 *   *
       SFMIN = DLAMCH('S')          SFMIN = DLAMCH('S')
 *  *
       DO 10 J = 1, MIN( M, N )        DO 10 J = 1, MIN( M, N )
 *  *
Line 118 Line 180
 *  *
 *           Compute elements J+1:M of J-th column.  *           Compute elements J+1:M of J-th column.
 *  *
             IF( J.LT.M ) THEN               IF( J.LT.M ) THEN
                IF( ABS(A( J, J )) .GE. SFMIN ) THEN                  IF( ABS(A( J, J )) .GE. SFMIN ) THEN
                   CALL DSCAL( M-J, ONE / A( J, J ), A( J+1, J ), 1 )                     CALL DSCAL( M-J, ONE / A( J, J ), A( J+1, J ), 1 )
                ELSE                  ELSE
                  DO 20 I = 1, M-J                    DO 20 I = 1, M-J
                     A( J+I, J ) = A( J+I, J ) / A( J, J )                       A( J+I, J ) = A( J+I, J ) / A( J, J )
    20            CONTINUE      20            CONTINUE
                END IF                  END IF
             END IF               END IF
 *  *
          ELSE IF( INFO.EQ.0 ) THEN           ELSE IF( INFO.EQ.0 ) THEN
 *  *

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


CVSweb interface <joel.bertrand@systella.fr>