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