OpenRadioss
2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
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 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
*> \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
*> \ingroup OTHERauxiliary
65
*
66
* =====================================================================
67
DOUBLE PRECISION
FUNCTION
dlapy3
( X, Y, Z )
68
*
69
* -- LAPACK auxiliary routine --
70
* -- LAPACK is a software package provided by Univ. of Tennessee, --
71
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
72
*
73
* .. Scalar Arguments ..
74
DOUBLE PRECISION
x, y, z
75
* ..
76
*
77
* =====================================================================
78
*
79
* .. Parameters ..
80
DOUBLE PRECISION
zero
81
parameter( zero = 0.0d0 )
82
* ..
83
* .. Local Scalars ..
84
DOUBLE PRECISION
w, xabs, yabs, zabs, hugeval
85
* ..
86
* .. External Subroutines ..
87
DOUBLE PRECISION
dlamch
88
* ..
89
* .. Intrinsic Functions ..
90
INTRINSIC
abs,
max
, sqrt
91
* ..
92
* .. Executable Statements ..
93
*
94
hugeval =
dlamch
(
'Overflow'
)
95
xabs = abs( x )
96
yabs = abs( y )
97
zabs = abs( z )
98
w =
max
( xabs, yabs, zabs )
99
IF
( w.EQ.zero .OR. w.GT.hugeval )
THEN
100
* W can be zero for max(0,nan,0)
101
* adding all three entries together will make sure
102
* NaN will not disappear.
103
dlapy3
= xabs + yabs + zabs
104
ELSE
105
dlapy3
= w*sqrt( ( xabs / w )**2+( yabs / w )**2+
106
$ ( zabs / w )**2 )
107
END IF
108
RETURN
109
*
110
* End of DLAPY3
111
*
112
END
dlapy3
double precision function dlapy3(x, y, z)
DLAPY3 returns sqrt(x2+y2+z2).
Definition
dlapy3.f:68
dlamch
double precision function dlamch(cmach)
DLAMCH
Definition
dlamch.f:69
max
#define max(a, b)
Definition
macros.h:21
engine
extlib
lapack-3.10.1
SRC
dlapy3.f
Generated by
1.15.0