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