hypot
double hypot(double, double);
#define hypot(a,b) __TG_FN2(hypot, (a), (b))
return hypot(z.x, z.y);
return hypot(__real__ z, __imag__ z);
R = hypot(x, y + 1); /* |z+I| */
S = hypot(x, y - 1); /* |z-I| */
return (CMPLX(log(hypot(x / m_e, y / m_e)) + 1, atan2(y, x)));
return (CMPLX(log(hypot(x, y)), atan2(y, x)));
return hypot(z.x,z.y);
return hypot(z->x,z->y);
return hypot(x, y);
__weak_alias(hypot, _hypot)
hypot(double x, double y)/* wrapper hypot */
DFUNC_DBL_DBL(hypot)
CHECK_EQ(i, hypot, x, +0., x);
CHECK_EQ(i, hypot, x, -0., x);
CHECK_EQ(i, hypot, +0., x, x);
CHECK_EQ(i, hypot, -0., x, x);
CHECK_EQ(i, hypot, -x, +0., x);
CHECK_EQ(i, hypot, -x, -0., x);
CHECK_EQ(i, hypot, +0., -x, x);
CHECK_EQ(i, hypot, -0., -x, x);
CHECK_EQ(i, hypot, x, +INFINITY, INFINITY);
CHECK_EQ(i, hypot, x, -INFINITY, INFINITY);
CHECK_EQ(i, hypot, +INFINITY, x, INFINITY);
CHECK_EQ(i, hypot, -INFINITY, x, INFINITY);
CHECK_EQ(i, hypot, -x, +INFINITY, INFINITY);
CHECK_EQ(i, hypot, -x, -INFINITY, INFINITY);
CHECK_EQ(i, hypot, +INFINITY, -x, INFINITY);
CHECK_EQ(i, hypot, -INFINITY, -x, INFINITY);
CHECK_EQ(i, hypot, x, NAN, INFINITY);
CHECK_EQ(i, hypot, NAN, x, INFINITY);
CHECK_EQ(i, hypot, -x, NAN, INFINITY);
CHECK_EQ(i, hypot, NAN, -x, INFINITY);
CHECK_NAN(i, hypot, x, NAN);
CHECK_NAN(i, hypot, NAN, x);
CHECK_NAN(i, hypot, -x, NAN);
CHECK_NAN(i, hypot, NAN, -x);
CHECK_EQ(i, hypot, x, +0., x);
CHECK_EQ(i, hypot, x, -0., x);
CHECK_EQ(i, hypot, +0., x, x);
CHECK_EQ(i, hypot, -0., x, x);
CHECK_EQ(i, hypot, -x, +0., x);
CHECK_EQ(i, hypot, -x, -0., x);
CHECK_EQ(i, hypot, +0., -x, x);
CHECK_EQ(i, hypot, -0., -x, x);
CHECK_EQ(i, hypot, x, +INFINITY, INFINITY);
CHECK_EQ(i, hypot, x, -INFINITY, INFINITY);
CHECK_EQ(i, hypot, +INFINITY, x, INFINITY);
CHECK_EQ(i, hypot, -INFINITY, x, INFINITY);
CHECK_EQ(i, hypot, -x, +INFINITY, INFINITY);
CHECK_EQ(i, hypot, -x, -INFINITY, INFINITY);
CHECK_EQ(i, hypot, +INFINITY, -x, INFINITY);
CHECK_EQ(i, hypot, -INFINITY, -x, INFINITY);
CHECK_EQ(i, hypot, x, NAN, INFINITY);
CHECK_EQ(i, hypot, NAN, x, INFINITY);
CHECK_EQ(i, hypot, -x, NAN, INFINITY);
CHECK_EQ(i, hypot, NAN, -x, INFINITY);
CHECK_NAN(i, hypot, x, NAN);
CHECK_NAN(i, hypot, NAN, x);
CHECK_NAN(i, hypot, -x, NAN);
CHECK_NAN(i, hypot, NAN, -x);
#define CHECK_EQ(i, hypot, a, b, c) \
ATF_CHECK_MSG(hypot(a, b) == (c), \
(i), #hypot, (a), (b), hypot(a, b), (c))
#define CHECKL_EQ(i, hypot, a, b, c) \
ATF_CHECK_MSG(hypot(a, b) == (c), \
(i), #hypot, (long double)(a), (long double)(b), hypot(a, b), \
#define CHECK_NAN(i, hypot, a, b) \
ATF_CHECK_MSG(isnan(hypot(a, b)), \
(i), #hypot, (a), (b), hypot(a, b))
#define CHECKL_NAN(i, hypot, a, b) \
ATF_CHECK_MSG(isnan(hypot(a, b)), \
CHECK_EQ(i, hypot, a, b, c);
(i), #hypot, (long double)(a), (long double)(b), hypot(a, b))
CHECK_EQ(i, hypot, b, a, c);
CHECK_EQ(i, hypot, a, -b, c);
CHECK_EQ(i, hypot, b, -a, c);
CHECK_EQ(i, hypot, -a, b, c);
CHECK_EQ(i, hypot, -b, a, c);
CHECK_EQ(i, hypot, -a, -b, c);
CHECK_EQ(i, hypot, -b, -a, c);
CHECK_EQ(i, hypot, a, b, c);
CHECK_EQ(i, hypot, b, a, c);
CHECK_EQ(i, hypot, a, -b, c);
CHECK_EQ(i, hypot, b, -a, c);
CHECK_EQ(i, hypot, -a, b, c);
CHECK_EQ(i, hypot, -b, a, c);
CHECK_EQ(i, hypot, -a, -b, c);
CHECK_EQ(i, hypot, -b, -a, c);
CHECK_EQ(i, hypot, a, b, c);
CHECK_EQ(i, hypot, b, a, c);
CHECK_EQ(i, hypot, a, -b, c);
CHECK_EQ(i, hypot, b, -a, c);
CHECK_EQ(i, hypot, -a, b, c);
CHECK_EQ(i, hypot, -b, a, c);
CHECK_EQ(i, hypot, -a, -b, c);
CHECK_EQ(i, hypot, -b, -a, c);
CHECK_NAN(0, hypot, NAN, NAN);
TEST(hypot(3.0, 4.0));