Diff for /rpl/lapack/lapack/zlartg.f between versions 1.1.1.1 and 1.13

version 1.1.1.1, 2010/01/26 15:22:45 version 1.13, 2014/01/27 09:24:36
Line 1 Line 1
   *> \brief \b ZLARTG generates a plane rotation with real cosine and complex sine.
   *
   *  =========== DOCUMENTATION ===========
   *
   * Online html documentation available at 
   *            http://www.netlib.org/lapack/explore-html/ 
   *
   *> \htmlonly
   *> Download ZLARTG + dependencies 
   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/zlartg.f"> 
   *> [TGZ]</a> 
   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/zlartg.f"> 
   *> [ZIP]</a> 
   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/zlartg.f"> 
   *> [TXT]</a>
   *> \endhtmlonly 
   *
   *  Definition:
   *  ===========
   *
   *       SUBROUTINE ZLARTG( F, G, CS, SN, R )
   * 
   *       .. Scalar Arguments ..
   *       DOUBLE PRECISION   CS
   *       COMPLEX*16         F, G, R, SN
   *       ..
   *  
   *
   *> \par Purpose:
   *  =============
   *>
   *> \verbatim
   *>
   *> ZLARTG generates a plane rotation so that
   *>
   *>    [  CS  SN  ]     [ F ]     [ R ]
   *>    [  __      ]  .  [   ]  =  [   ]   where CS**2 + |SN|**2 = 1.
   *>    [ -SN  CS  ]     [ G ]     [ 0 ]
   *>
   *> This is a faster version of the BLAS1 routine ZROTG, except for
   *> the following differences:
   *>    F and G are unchanged on return.
   *>    If G=0, then CS=1 and SN=0.
   *>    If F=0, then CS=0 and SN is chosen so that R is real.
   *> \endverbatim
   *
   *  Arguments:
   *  ==========
   *
   *> \param[in] F
   *> \verbatim
   *>          F is COMPLEX*16
   *>          The first component of vector to be rotated.
   *> \endverbatim
   *>
   *> \param[in] G
   *> \verbatim
   *>          G is COMPLEX*16
   *>          The second component of vector to be rotated.
   *> \endverbatim
   *>
   *> \param[out] CS
   *> \verbatim
   *>          CS is DOUBLE PRECISION
   *>          The cosine of the rotation.
   *> \endverbatim
   *>
   *> \param[out] SN
   *> \verbatim
   *>          SN is COMPLEX*16
   *>          The sine of the rotation.
   *> \endverbatim
   *>
   *> \param[out] R
   *> \verbatim
   *>          R is COMPLEX*16
   *>          The nonzero component of the rotated vector.
   *> \endverbatim
   *
   *  Authors:
   *  ========
   *
   *> \author Univ. of Tennessee 
   *> \author Univ. of California Berkeley 
   *> \author Univ. of Colorado Denver 
   *> \author NAG Ltd. 
   *
   *> \date November 2013
   *
   *> \ingroup complex16OTHERauxiliary
   *
   *> \par Further Details:
   *  =====================
   *>
   *> \verbatim
   *>
   *>  3-5-96 - Modified with a new algorithm by W. Kahan and J. Demmel
   *>
   *>  This version has a few statements commented out for thread safety
   *>  (machine parameters are computed on each entry). 10 feb 03, SJH.
   *> \endverbatim
   *>
   *  =====================================================================
       SUBROUTINE ZLARTG( F, G, CS, SN, R )        SUBROUTINE ZLARTG( F, G, CS, SN, R )
 *  *
 *  -- LAPACK auxiliary routine (version 3.2) --  *  -- LAPACK auxiliary 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 2006  *     November 2013
 *  *
 *     .. Scalar Arguments ..  *     .. Scalar Arguments ..
       DOUBLE PRECISION   CS        DOUBLE PRECISION   CS
       COMPLEX*16         F, G, R, SN        COMPLEX*16         F, G, R, SN
 *     ..  *     ..
 *  *
 *  Purpose  
 *  =======  
 *  
 *  ZLARTG generates a plane rotation so that  
 *  
 *     [  CS  SN  ]     [ F ]     [ R ]  
 *     [  __      ]  .  [   ]  =  [   ]   where CS**2 + |SN|**2 = 1.  
 *     [ -SN  CS  ]     [ G ]     [ 0 ]  
 *  
 *  This is a faster version of the BLAS1 routine ZROTG, except for  
 *  the following differences:  
 *     F and G are unchanged on return.  
 *     If G=0, then CS=1 and SN=0.  
 *     If F=0, then CS=0 and SN is chosen so that R is real.  
 *  
 *  Arguments  
 *  =========  
 *  
 *  F       (input) COMPLEX*16  
 *          The first component of vector to be rotated.  
 *  
 *  G       (input) COMPLEX*16  
 *          The second component of vector to be rotated.  
 *  
 *  CS      (output) DOUBLE PRECISION  
 *          The cosine of the rotation.  
 *  
 *  SN      (output) COMPLEX*16  
 *          The sine of the rotation.  
 *  
 *  R       (output) COMPLEX*16  
 *          The nonzero component of the rotated vector.  
 *  
 *  Further Details  
 *  ======= =======  
 *  
 *  3-5-96 - Modified with a new algorithm by W. Kahan and J. Demmel  
 *  
 *  This version has a few statements commented out for thread safety  
 *  (machine parameters are computed on each entry). 10 feb 03, SJH.  
 *  
 *  =====================================================================  *  =====================================================================
 *  *
 *     .. Parameters ..  *     .. Parameters ..
Line 68 Line 130
 *     ..  *     ..
 *     .. External Functions ..  *     .. External Functions ..
       DOUBLE PRECISION   DLAMCH, DLAPY2        DOUBLE PRECISION   DLAMCH, DLAPY2
       EXTERNAL           DLAMCH, DLAPY2        LOGICAL            DISNAN
         EXTERNAL           DLAMCH, DLAPY2, DISNAN
 *     ..  *     ..
 *     .. Intrinsic Functions ..  *     .. Intrinsic Functions ..
       INTRINSIC          ABS, DBLE, DCMPLX, DCONJG, DIMAG, INT, LOG,        INTRINSIC          ABS, DBLE, DCMPLX, DCONJG, DIMAG, INT, LOG,
Line 77 Line 140
 *     .. Statement Functions ..  *     .. Statement Functions ..
       DOUBLE PRECISION   ABS1, ABSSQ        DOUBLE PRECISION   ABS1, ABSSQ
 *     ..  *     ..
 *     .. Save statement ..  
 *     SAVE               FIRST, SAFMX2, SAFMIN, SAFMN2  
 *     ..  
 *     .. Data statements ..  
 *     DATA               FIRST / .TRUE. /  
 *     ..  
 *     .. Statement Function definitions ..  *     .. Statement Function definitions ..
       ABS1( FF ) = MAX( ABS( DBLE( FF ) ), ABS( DIMAG( FF ) ) )        ABS1( FF ) = MAX( ABS( DBLE( FF ) ), ABS( DIMAG( FF ) ) )
       ABSSQ( FF ) = DBLE( FF )**2 + DIMAG( FF )**2        ABSSQ( FF ) = DBLE( FF )**2 + DIMAG( FF )**2
 *     ..  *     ..
 *     .. Executable Statements ..  *     .. Executable Statements ..
 *  *
 *     IF( FIRST ) THEN        SAFMIN = DLAMCH( 'S' )
          SAFMIN = DLAMCH( 'S' )        EPS = DLAMCH( 'E' )
          EPS = DLAMCH( 'E' )        SAFMN2 = DLAMCH( 'B' )**INT( LOG( SAFMIN / EPS ) /
          SAFMN2 = DLAMCH( 'B' )**INT( LOG( SAFMIN / EPS ) /       $         LOG( DLAMCH( 'B' ) ) / TWO )
      $            LOG( DLAMCH( 'B' ) ) / TWO )        SAFMX2 = ONE / SAFMN2
          SAFMX2 = ONE / SAFMN2  
 *        FIRST = .FALSE.  
 *     END IF  
       SCALE = MAX( ABS1( F ), ABS1( G ) )        SCALE = MAX( ABS1( F ), ABS1( G ) )
       FS = F        FS = F
       GS = G        GS = G
Line 110 Line 164
          IF( SCALE.GE.SAFMX2 )           IF( SCALE.GE.SAFMX2 )
      $      GO TO 10       $      GO TO 10
       ELSE IF( SCALE.LE.SAFMN2 ) THEN        ELSE IF( SCALE.LE.SAFMN2 ) THEN
          IF( G.EQ.CZERO ) THEN           IF( G.EQ.CZERO.OR.DISNAN( ABS( G ) ) ) THEN
             CS = ONE              CS = ONE
             SN = CZERO              SN = CZERO
             R = F              R = F

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


CVSweb interface <joel.bertrand@systella.fr>