1*> \brief \b DLAPY2 returns sqrt(x2+y2). 2* 3* =========== DOCUMENTATION =========== 4* 5* Online html documentation available at 6* http://www.netlib.org/lapack/explore-html/ 7* 8*> \htmlonly 9*> Download DLAPY2 + dependencies 10*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlapy2.f"> 11*> [TGZ]</a> 12*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dlapy2.f"> 13*> [ZIP]</a> 14*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dlapy2.f"> 15*> [TXT]</a> 16*> \endhtmlonly 17* 18* Definition: 19* =========== 20* 21* DOUBLE PRECISION FUNCTION DLAPY2( X, Y ) 22* 23* .. Scalar Arguments .. 24* DOUBLE PRECISION X, Y 25* .. 26* 27* 28*> \par Purpose: 29* ============= 30*> 31*> \verbatim 32*> 33*> DLAPY2 returns sqrt(x**2+y**2), taking care not to cause unnecessary 34*> overflow and unnecessary underflow. 35*> \endverbatim 36* 37* Arguments: 38* ========== 39* 40*> \param[in] X 41*> \verbatim 42*> X is DOUBLE PRECISION 43*> \endverbatim 44*> 45*> \param[in] Y 46*> \verbatim 47*> Y is DOUBLE PRECISION 48*> X and Y specify the values x and y. 49*> \endverbatim 50* 51* Authors: 52* ======== 53* 54*> \author Univ. of Tennessee 55*> \author Univ. of California Berkeley 56*> \author Univ. of Colorado Denver 57*> \author NAG Ltd. 58* 59*> \ingroup OTHERauxiliary 60* 61* ===================================================================== 62 DOUBLE PRECISION FUNCTION DLAPY2( X, Y ) 63* 64* -- LAPACK auxiliary routine -- 65* -- LAPACK is a software package provided by Univ. of Tennessee, -- 66* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 67* 68* .. Scalar Arguments .. 69 DOUBLE PRECISION X, Y 70* .. 71* 72* ===================================================================== 73* 74* .. Parameters .. 75 DOUBLE PRECISION ZERO 76 PARAMETER ( ZERO = 0.0D0 ) 77 DOUBLE PRECISION ONE 78 PARAMETER ( ONE = 1.0D0 ) 79* .. 80* .. Local Scalars .. 81 DOUBLE PRECISION W, XABS, YABS, Z 82 LOGICAL X_IS_NAN, Y_IS_NAN 83* .. 84* .. External Functions .. 85 LOGICAL DISNAN 86 EXTERNAL DISNAN 87* .. 88* .. Intrinsic Functions .. 89 INTRINSIC ABS, MAX, MIN, SQRT 90* .. 91* .. Executable Statements .. 92* 93 X_IS_NAN = DISNAN( X ) 94 Y_IS_NAN = DISNAN( Y ) 95 IF ( X_IS_NAN ) DLAPY2 = X 96 IF ( Y_IS_NAN ) DLAPY2 = Y 97* 98 IF ( .NOT.( X_IS_NAN.OR.Y_IS_NAN ) ) THEN 99 XABS = ABS( X ) 100 YABS = ABS( Y ) 101 W = MAX( XABS, YABS ) 102 Z = MIN( XABS, YABS ) 103 IF( Z.EQ.ZERO ) THEN 104 DLAPY2 = W 105 ELSE 106 DLAPY2 = W*SQRT( ONE+( Z / W )**2 ) 107 END IF 108 END IF 109 RETURN 110* 111* End of DLAPY2 112* 113 END 114