Diff for /rpl/lapack/lapack/dlarfgp.f between versions 1.2 and 1.18

version 1.2, 2010/08/07 13:22:19 version 1.18, 2023/08/07 08:38:57
Line 1 Line 1
   *> \brief \b DLARFGP generates an elementary reflector (Householder matrix) with non-negative beta.
   *
   *  =========== DOCUMENTATION ===========
   *
   * Online html documentation available at
   *            http://www.netlib.org/lapack/explore-html/
   *
   *> \htmlonly
   *> Download DLARFGP + dependencies
   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlarfgp.f">
   *> [TGZ]</a>
   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dlarfgp.f">
   *> [ZIP]</a>
   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dlarfgp.f">
   *> [TXT]</a>
   *> \endhtmlonly
   *
   *  Definition:
   *  ===========
   *
   *       SUBROUTINE DLARFGP( N, ALPHA, X, INCX, TAU )
   *
   *       .. Scalar Arguments ..
   *       INTEGER            INCX, N
   *       DOUBLE PRECISION   ALPHA, TAU
   *       ..
   *       .. Array Arguments ..
   *       DOUBLE PRECISION   X( * )
   *       ..
   *
   *
   *> \par Purpose:
   *  =============
   *>
   *> \verbatim
   *>
   *> DLARFGP generates a real elementary reflector H of order n, such
   *> that
   *>
   *>       H * ( alpha ) = ( beta ),   H**T * H = I.
   *>           (   x   )   (   0  )
   *>
   *> where alpha and beta are scalars, beta is non-negative, and x is
   *> an (n-1)-element real vector.  H is represented in the form
   *>
   *>       H = I - tau * ( 1 ) * ( 1 v**T ) ,
   *>                     ( v )
   *>
   *> where tau is a real scalar and v is a real (n-1)-element
   *> vector.
   *>
   *> If the elements of x are all zero, then tau = 0 and H is taken to be
   *> the unit matrix.
   *> \endverbatim
   *
   *  Arguments:
   *  ==========
   *
   *> \param[in] N
   *> \verbatim
   *>          N is INTEGER
   *>          The order of the elementary reflector.
   *> \endverbatim
   *>
   *> \param[in,out] ALPHA
   *> \verbatim
   *>          ALPHA is DOUBLE PRECISION
   *>          On entry, the value alpha.
   *>          On exit, it is overwritten with the value beta.
   *> \endverbatim
   *>
   *> \param[in,out] X
   *> \verbatim
   *>          X is DOUBLE PRECISION array, dimension
   *>                         (1+(N-2)*abs(INCX))
   *>          On entry, the vector x.
   *>          On exit, it is overwritten with the vector v.
   *> \endverbatim
   *>
   *> \param[in] INCX
   *> \verbatim
   *>          INCX is INTEGER
   *>          The increment between elements of X. INCX > 0.
   *> \endverbatim
   *>
   *> \param[out] TAU
   *> \verbatim
   *>          TAU is DOUBLE PRECISION
   *>          The value tau.
   *> \endverbatim
   *
   *  Authors:
   *  ========
   *
   *> \author Univ. of Tennessee
   *> \author Univ. of California Berkeley
   *> \author Univ. of Colorado Denver
   *> \author NAG Ltd.
   *
   *> \ingroup doubleOTHERauxiliary
   *
   *  =====================================================================
       SUBROUTINE DLARFGP( N, ALPHA, X, INCX, TAU )        SUBROUTINE DLARFGP( N, ALPHA, X, INCX, TAU )
 *  *
 *  -- LAPACK auxiliary routine (version 3.2.2) --  *  -- LAPACK auxiliary 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..--
 *     June 2010  
 *  *
 *     .. Scalar Arguments ..  *     .. Scalar Arguments ..
       INTEGER            INCX, N        INTEGER            INCX, N
Line 13 Line 114
       DOUBLE PRECISION   X( * )        DOUBLE PRECISION   X( * )
 *     ..  *     ..
 *  *
 *  Purpose  
 *  =======  
 *  
 *  DLARFGP generates a real elementary reflector H of order n, such  
 *  that  
 *  
 *        H * ( alpha ) = ( beta ),   H' * H = I.  
 *            (   x   )   (   0  )  
 *  
 *  where alpha and beta are scalars, beta is non-negative, and x is  
 *  an (n-1)-element real vector.  H is represented in the form  
 *  
 *        H = I - tau * ( 1 ) * ( 1 v' ) ,  
 *                      ( v )  
 *  
 *  where tau is a real scalar and v is a real (n-1)-element  
 *  vector.  
 *  
 *  If the elements of x are all zero, then tau = 0 and H is taken to be  
 *  the unit matrix.  
 *  
 *  Arguments  
 *  =========  
 *  
 *  N       (input) INTEGER  
 *          The order of the elementary reflector.  
 *  
 *  ALPHA   (input/output) DOUBLE PRECISION  
 *          On entry, the value alpha.  
 *          On exit, it is overwritten with the value beta.  
 *  
 *  X       (input/output) DOUBLE PRECISION array, dimension  
 *                         (1+(N-2)*abs(INCX))  
 *          On entry, the vector x.  
 *          On exit, it is overwritten with the vector v.  
 *  
 *  INCX    (input) INTEGER  
 *          The increment between elements of X. INCX > 0.  
 *  
 *  TAU     (output) DOUBLE PRECISION  
 *          The value tau.  
 *  
 *  =====================================================================  *  =====================================================================
 *  *
 *     .. Parameters ..  *     .. Parameters ..
Line 119 Line 178
             CALL DSCAL( N-1, BIGNUM, X, INCX )              CALL DSCAL( N-1, BIGNUM, X, INCX )
             BETA = BETA*BIGNUM              BETA = BETA*BIGNUM
             ALPHA = ALPHA*BIGNUM              ALPHA = ALPHA*BIGNUM
             IF( ABS( BETA ).LT.SMLNUM )              IF( (ABS( BETA ).LT.SMLNUM) .AND. (KNT .LT. 20) )
      $         GO TO 10       $         GO TO 10
 *  *
 *           New BETA is at most 1, at least SMLNUM  *           New BETA is at most 1, at least SMLNUM
Line 141 Line 200
          IF ( ABS(TAU).LE.SMLNUM ) THEN           IF ( ABS(TAU).LE.SMLNUM ) THEN
 *  *
 *           In the case where the computed TAU ends up being a denormalized number,  *           In the case where the computed TAU ends up being a denormalized number,
 *           it loses relative accuracy. This is a BIG problem. Solution: flush TAU   *           it loses relative accuracy. This is a BIG problem. Solution: flush TAU
 *           to ZERO. This explains the next IF statement.  *           to ZERO. This explains the next IF statement.
 *  *
 *           (Bug report provided by Pat Quillen from MathWorks on Jul 29, 2009.)  *           (Bug report provided by Pat Quillen from MathWorks on Jul 29, 2009.)
Line 157 Line 216
                BETA = -SAVEALPHA                 BETA = -SAVEALPHA
             END IF              END IF
 *  *
          ELSE            ELSE
 *  *
 *           This is the general case.  *           This is the general case.
 *  *

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


CVSweb interface <joel.bertrand@systella.fr>