Home | History | Annotate | Download | only in lapack
      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