LAPACK  3.4.1
LAPACK: Linear Algebra PACKage
drotg.f
Go to the documentation of this file.
00001 *> \brief \b DROTG
00002 *
00003 *  =========== DOCUMENTATION ===========
00004 *
00005 * Online html documentation available at 
00006 *            http://www.netlib.org/lapack/explore-html/ 
00007 *
00008 *  Definition:
00009 *  ===========
00010 *
00011 *       SUBROUTINE DROTG(DA,DB,C,S)
00012 * 
00013 *       .. Scalar Arguments ..
00014 *       DOUBLE PRECISION C,DA,DB,S
00015 *       ..
00016 *  
00017 *
00018 *> \par Purpose:
00019 *  =============
00020 *>
00021 *> \verbatim
00022 *>
00023 *>    DROTG construct givens plane rotation.
00024 *> \endverbatim
00025 *
00026 *  Authors:
00027 *  ========
00028 *
00029 *> \author Univ. of Tennessee 
00030 *> \author Univ. of California Berkeley 
00031 *> \author Univ. of Colorado Denver 
00032 *> \author NAG Ltd. 
00033 *
00034 *> \date November 2011
00035 *
00036 *> \ingroup double_blas_level1
00037 *
00038 *> \par Further Details:
00039 *  =====================
00040 *>
00041 *> \verbatim
00042 *>
00043 *>     jack dongarra, linpack, 3/11/78.
00044 *> \endverbatim
00045 *>
00046 *  =====================================================================
00047       SUBROUTINE DROTG(DA,DB,C,S)
00048 *
00049 *  -- Reference BLAS level1 routine (version 3.4.0) --
00050 *  -- Reference BLAS is a software package provided by Univ. of Tennessee,    --
00051 *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
00052 *     November 2011
00053 *
00054 *     .. Scalar Arguments ..
00055       DOUBLE PRECISION C,DA,DB,S
00056 *     ..
00057 *
00058 *  =====================================================================
00059 *
00060 *     .. Local Scalars ..
00061       DOUBLE PRECISION R,ROE,SCALE,Z
00062 *     ..
00063 *     .. Intrinsic Functions ..
00064       INTRINSIC DABS,DSIGN,DSQRT
00065 *     ..
00066       ROE = DB
00067       IF (DABS(DA).GT.DABS(DB)) ROE = DA
00068       SCALE = DABS(DA) + DABS(DB)
00069       IF (SCALE.EQ.0.0d0) THEN
00070          C = 1.0d0
00071          S = 0.0d0
00072          R = 0.0d0
00073          Z = 0.0d0
00074       ELSE
00075          R = SCALE*DSQRT((DA/SCALE)**2+ (DB/SCALE)**2)
00076          R = DSIGN(1.0d0,ROE)*R
00077          C = DA/R
00078          S = DB/R
00079          Z = 1.0d0
00080          IF (DABS(DA).GT.DABS(DB)) Z = S
00081          IF (DABS(DB).GE.DABS(DA) .AND. C.NE.0.0d0) Z = 1.0d0/C
00082       END IF
00083       DA = R
00084       DB = Z
00085       RETURN
00086       END
 All Files Functions