dlapy2.f

          DOUBLE PRECISION FUNCTION DLAPY2( X, Y )
    *
    *  -- LAPACK auxiliary routine (version 3.1) --
    *     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
    *     November 2006
    *
    *     .. Scalar Arguments ..
          DOUBLE PRECISION   X, Y
    *     ..
    *
    *  Purpose
    *  =======
    *
    *  DLAPY2 returns sqrt(x**2+y**2), taking care not to cause unnecessary
    *  overflow.
    *
    *  Arguments
    *  =========
    *
    *  X       (input) DOUBLE PRECISION
    *  Y       (input) DOUBLE PRECISION
    *          X and Y specify the values x and y.
    *
    *  =====================================================================
    *
    *     .. Parameters ..
          DOUBLE PRECISION   ZERO
          PARAMETER          ( ZERO = 0.0D0 )
          DOUBLE PRECISION   ONE
          PARAMETER          ( ONE = 1.0D0 )
    *     ..
    *     .. Local Scalars ..
          DOUBLE PRECISION   W, XABS, YABS, Z
    *     ..
    *     .. Intrinsic Functions ..
          INTRINSIC          ABS, MAX, MIN, SQRT
    *     ..
    *     .. Executable Statements ..
    *
          XABS = ABS( X )
          YABS = ABS( Y )
          W = MAX( XABS, YABS )
          Z = MIN( XABS, YABS )
          IF( Z.EQ.ZERO ) THEN
             DLAPY2 = W
          ELSE
             DLAPY2 = W*SQRT( ONE+( Z / W )**2 )
          END IF
          RETURN
    *
    *     End of DLAPY2
    *
          END