dlapy2 function

double dlapy2(
  1. double X,
  2. double Y
)

Implementation

double dlapy2(final double X, final double Y) {
  const zero = 0.0;
  const ONE = 1.0;

  var result = 0.0;
  final X_IS_NAN = disnan(X);
  final Y_IS_NAN = disnan(Y);
  if (X_IS_NAN) result = X;
  if (Y_IS_NAN) result = Y;
  final HUGEVAL = dlamch('Overflow');

  if (!(X_IS_NAN || Y_IS_NAN)) {
    final xabs = X.abs();
    final yabs = Y.abs();
    final W = max(xabs, yabs);
    final Z = min(xabs, yabs);
    if (Z == zero || W > HUGEVAL) {
      result = W;
    } else {
      result = W * sqrt(ONE + pow(Z / W, 2));
    }
  }
  return result;
}