LAPACK  3.4.2
LAPACK: Linear Algebra PACKage
 All Files Functions Groups
dlapy3.f
Go to the documentation of this file.
1 *> \brief \b DLAPY3 returns sqrt(x2+y2+z2).
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 September 2012
65 *
66 *> \ingroup auxOTHERauxiliary
67 *
68 * =====================================================================
69  DOUBLE PRECISION FUNCTION dlapy3( X, Y, Z )
70 *
71 * -- LAPACK auxiliary routine (version 3.4.2) --
72 * -- LAPACK is a software package provided by Univ. of Tennessee, --
73 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
74 * September 2012
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