01:       DOUBLE PRECISION FUNCTION DLAPY2( X, Y )
02: *
03: *  -- LAPACK auxiliary routine (version 3.2) --
04: *     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
05: *     November 2006
06: *
07: *     .. Scalar Arguments ..
08:       DOUBLE PRECISION   X, Y
09: *     ..
10: *
11: *  Purpose
12: *  =======
13: *
14: *  DLAPY2 returns sqrt(x**2+y**2), taking care not to cause unnecessary
15: *  overflow.
16: *
17: *  Arguments
18: *  =========
19: *
20: *  X       (input) DOUBLE PRECISION
21: *  Y       (input) DOUBLE PRECISION
22: *          X and Y specify the values x and y.
23: *
24: *  =====================================================================
25: *
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 ..
39: *
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
50: *
51: *     End of DLAPY2
52: *
53:       END
54: