function hypot( x, y ) {
	var tmp;

	// If one of the arguments is `+-infinity`, return `+infinity` even if the other argument is `NaN` (IEEE 754-2019)...
	if ( isInfinite( x ) || isInfinite( y ) ) {
		return PINF;
	}
	if ( isnan( x ) || isnan( y ) ) {
		return NaN;
	}
	if ( x < 0.0 ) {
		x = -x;
	}
	if ( y < 0.0 ) {
		y = -y;
	}
	if ( x < y ) {
		tmp = y;
		y = x;
		x = tmp;
	}
	if ( x === 0.0 ) {
		return 0.0;
	}
	y /= x;
	return x * sqrt( 1.0 + (y*y) );
}
Computes the hypotenuse avoiding overflow and underflow.

@param {number} x - number
@param {number} y - number
@returns {number} hypotenuse

@example
var h = hypot( -5.0, 12.0 );
// returns 13.0

@example
var h = hypot( NaN, 12.0 );
// returns NaN

@example
var h = hypot( -0.0, -0.0 );
// returns 0.0