xref: /aosp_15_r20/external/eigen/lapack/dlapy2.f (revision bf2c37156dfe67e5dfebd6d394bad8b2ab5804d4)
1*bf2c3715SXin Li*> \brief \b DLAPY2
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 DLAPY2 + dependencies
10*bf2c3715SXin Li*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlapy2.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/dlapy2.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/dlapy2.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 DLAPY2( X, Y )
22*bf2c3715SXin Li*
23*bf2c3715SXin Li*       .. Scalar Arguments ..
24*bf2c3715SXin Li*       DOUBLE PRECISION   X, Y
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*> DLAPY2 returns sqrt(x**2+y**2), taking care not to cause unnecessary
34*bf2c3715SXin Li*> 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*>          X and Y specify the values x and y.
49*bf2c3715SXin Li*> \endverbatim
50*bf2c3715SXin Li*
51*bf2c3715SXin Li*  Authors:
52*bf2c3715SXin Li*  ========
53*bf2c3715SXin Li*
54*bf2c3715SXin Li*> \author Univ. of Tennessee
55*bf2c3715SXin Li*> \author Univ. of California Berkeley
56*bf2c3715SXin Li*> \author Univ. of Colorado Denver
57*bf2c3715SXin Li*> \author NAG Ltd.
58*bf2c3715SXin Li*
59*bf2c3715SXin Li*> \date November 2011
60*bf2c3715SXin Li*
61*bf2c3715SXin Li*> \ingroup auxOTHERauxiliary
62*bf2c3715SXin Li*
63*bf2c3715SXin Li*  =====================================================================
64*bf2c3715SXin Li      DOUBLE PRECISION FUNCTION DLAPY2( X, Y )
65*bf2c3715SXin Li*
66*bf2c3715SXin Li*  -- LAPACK auxiliary routine (version 3.4.0) --
67*bf2c3715SXin Li*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
68*bf2c3715SXin Li*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
69*bf2c3715SXin Li*     November 2011
70*bf2c3715SXin Li*
71*bf2c3715SXin Li*     .. Scalar Arguments ..
72*bf2c3715SXin Li      DOUBLE PRECISION   X, Y
73*bf2c3715SXin Li*     ..
74*bf2c3715SXin Li*
75*bf2c3715SXin Li*  =====================================================================
76*bf2c3715SXin Li*
77*bf2c3715SXin Li*     .. Parameters ..
78*bf2c3715SXin Li      DOUBLE PRECISION   ZERO
79*bf2c3715SXin Li      PARAMETER          ( ZERO = 0.0D0 )
80*bf2c3715SXin Li      DOUBLE PRECISION   ONE
81*bf2c3715SXin Li      PARAMETER          ( ONE = 1.0D0 )
82*bf2c3715SXin Li*     ..
83*bf2c3715SXin Li*     .. Local Scalars ..
84*bf2c3715SXin Li      DOUBLE PRECISION   W, XABS, YABS, Z
85*bf2c3715SXin Li*     ..
86*bf2c3715SXin Li*     .. Intrinsic Functions ..
87*bf2c3715SXin Li      INTRINSIC          ABS, MAX, MIN, SQRT
88*bf2c3715SXin Li*     ..
89*bf2c3715SXin Li*     .. Executable Statements ..
90*bf2c3715SXin Li*
91*bf2c3715SXin Li      XABS = ABS( X )
92*bf2c3715SXin Li      YABS = ABS( Y )
93*bf2c3715SXin Li      W = MAX( XABS, YABS )
94*bf2c3715SXin Li      Z = MIN( XABS, YABS )
95*bf2c3715SXin Li      IF( Z.EQ.ZERO ) THEN
96*bf2c3715SXin Li         DLAPY2 = W
97*bf2c3715SXin Li      ELSE
98*bf2c3715SXin Li         DLAPY2 = W*SQRT( ONE+( Z / W )**2 )
99*bf2c3715SXin Li      END IF
100*bf2c3715SXin Li      RETURN
101*bf2c3715SXin Li*
102*bf2c3715SXin Li*     End of DLAPY2
103*bf2c3715SXin Li*
104*bf2c3715SXin Li      END
105