Merge remote-tracking branch 'origin/release-v4.6.1'
[WRF.git] / var / external / lapack / dlapy2.inc
blob4251da259eba870f37939da8f42a95c5245bf747
1       DOUBLE PRECISION FUNCTION DLAPY2( X, Y )
3 !  -- LAPACK auxiliary routine (version 3.1) --
4 !     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
5 !     November 2006
7 !     .. Scalar Arguments ..
8       DOUBLE PRECISION   X, Y
9 !     ..
11 !  Purpose
12 !  =======
14 !  DLAPY2 returns sqrt(x**2+y**2), taking care not to cause unnecessary
15 !  overflow.
17 !  Arguments
18 !  =========
20 !  X       (input) DOUBLE PRECISION
21 !  Y       (input) DOUBLE PRECISION
22 !          X and Y specify the values x and y.
24 !  =====================================================================
26 !     .. Parameters ..
27       DOUBLE PRECISION   ZERO
28       PARAMETER          ( ZERO = 0.0D0 )
29       DOUBLE PRECISION   ONE
30       PARAMETER          ( ONE = 1.0D0 )
31 !     ..
32 !     .. Local Scalars ..
33       DOUBLE PRECISION   W, XABS, YABS, Z
34 !     ..
35 !     .. Intrinsic Functions ..
36       INTRINSIC          ABS, MAX, MIN, SQRT
37 !     ..
38 !     .. Executable Statements ..
40       XABS = ABS( X )
41       YABS = ABS( Y )
42       W = MAX( XABS, YABS )
43       Z = MIN( XABS, YABS )
44       IF( Z.EQ.ZERO ) THEN
45          DLAPY2 = W
46       ELSE
47          DLAPY2 = W*SQRT( ONE+( Z / W )**2 )
48       END IF
49       RETURN
51 !     End of DLAPY2
53       END FUNCTION DLAPY2