Module Name:    src
Committed By:   riastradh
Date:           Sat May 11 19:08:30 UTC 2024

Modified Files:
        src/tests/lib/libm: t_hypot.c

Log Message:
tests/lib/libm/t_hypot: Expand substantially.

PR lib/58245: hypotl is broken on ld128 ports


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/tests/lib/libm/t_hypot.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/lib/libm/t_hypot.c
diff -u src/tests/lib/libm/t_hypot.c:1.2 src/tests/lib/libm/t_hypot.c:1.3
--- src/tests/lib/libm/t_hypot.c:1.2	Thu Jun 25 11:12:03 2020
+++ src/tests/lib/libm/t_hypot.c	Sat May 11 19:08:29 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: t_hypot.c,v 1.2 2020/06/25 11:12:03 jruoho Exp $ */
+/* $NetBSD: t_hypot.c,v 1.3 2024/05/11 19:08:29 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2016 The NetBSD Foundation, Inc.
@@ -27,33 +27,486 @@
  */
 
 #include <atf-c.h>
+#include <float.h>
 #include <math.h>
 
-ATF_TC(hypot_integer);
-ATF_TC_HEAD(hypot_integer, tc)
+#define	CHECK_EQ(i, hypot, a, b, c)					      \
+	ATF_CHECK_MSG(hypot(a, b) == (c),				      \
+	    "[%u] %s(%a, %a)=%a, expected %a",				      \
+	    (i), #hypot, (a), (b), hypot(a, b), (c))
+
+#define	CHECKL_EQ(i, hypot, a, b, c)					      \
+	ATF_CHECK_MSG(hypot(a, b) == (c),				      \
+	    "[%u] %s(%La, %La)=%La, expected %La",			      \
+	    (i), #hypot, (a), (b), hypot(a, b), (c))
+
+static const float trivial_casesf[] = {
+	0,
+#ifdef __FLT_HAS_DENORM__
+	__FLT_DENORM_MIN__,
+	2*__FLT_DENORM_MIN__,
+	3*__FLT_DENORM_MIN__,
+	FLT_MIN - 3*__FLT_DENORM_MIN__,
+	FLT_MIN - 2*__FLT_DENORM_MIN__,
+	FLT_MIN - __FLT_DENORM_MIN__,
+#endif
+	FLT_MIN,
+	FLT_MIN*(1 + FLT_EPSILON),
+	FLT_MIN*(1 + 2*FLT_EPSILON),
+	2*FLT_MIN,
+	FLT_EPSILON/2,
+	FLT_EPSILON,
+	2*FLT_EPSILON,
+	1 - 3*FLT_EPSILON/2,
+	1 - 2*FLT_EPSILON/2,
+	1 - FLT_EPSILON/2,
+	1,
+	1 + FLT_EPSILON,
+	1 + 2*FLT_EPSILON,
+	1 + 3*FLT_EPSILON,
+	1.5 - 3*FLT_EPSILON,
+	1.5 - 2*FLT_EPSILON,
+	1.5 - FLT_EPSILON,
+	1.5,
+	1.5 + FLT_EPSILON,
+	1.5 + 2*FLT_EPSILON,
+	1.5 + 3*FLT_EPSILON,
+	2,
+	0.5/FLT_EPSILON - 0.5,
+	0.5/FLT_EPSILON,
+	0.5/FLT_EPSILON + 0.5,
+	1/FLT_EPSILON,
+	FLT_MAX,
+	INFINITY,
+};
+
+static const double trivial_cases[] = {
+	0,
+#ifdef __DBL_HAS_DENORM__
+	__DBL_DENORM_MIN__,
+	2*__DBL_DENORM_MIN__,
+	3*__DBL_DENORM_MIN__,
+	DBL_MIN - 3*__DBL_DENORM_MIN__,
+	DBL_MIN - 2*__DBL_DENORM_MIN__,
+	DBL_MIN - __DBL_DENORM_MIN__,
+#endif
+	DBL_MIN,
+	DBL_MIN*(1 + DBL_EPSILON),
+	DBL_MIN*(1 + 2*DBL_EPSILON),
+	2*DBL_MIN,
+	DBL_EPSILON/2,
+	DBL_EPSILON,
+	2*DBL_EPSILON,
+	1 - 3*DBL_EPSILON/2,
+	1 - 2*DBL_EPSILON/2,
+	1 - DBL_EPSILON/2,
+	1,
+	1 + DBL_EPSILON,
+	1 + 2*DBL_EPSILON,
+	1 + 3*DBL_EPSILON,
+	1.5 - 3*DBL_EPSILON,
+	1.5 - 2*DBL_EPSILON,
+	1.5 - DBL_EPSILON,
+	1.5,
+	1.5 + DBL_EPSILON,
+	1.5 + 2*DBL_EPSILON,
+	1.5 + 3*DBL_EPSILON,
+	2,
+	1/FLT_EPSILON - 0.5,
+	1/FLT_EPSILON,
+	1/FLT_EPSILON + 0.5,
+	0.5/DBL_EPSILON - 0.5,
+	0.5/DBL_EPSILON,
+	0.5/DBL_EPSILON + 0.5,
+	1/DBL_EPSILON,
+	DBL_MAX,
+	INFINITY,
+};
+
+static const long double trivial_casesl[] = {
+	0,
+#ifdef __LDBL_HAS_DENORM__
+	__LDBL_DENORM_MIN__,
+	2*__LDBL_DENORM_MIN__,
+	3*__LDBL_DENORM_MIN__,
+	LDBL_MIN - 3*__LDBL_DENORM_MIN__,
+	LDBL_MIN - 2*__LDBL_DENORM_MIN__,
+	LDBL_MIN - __LDBL_DENORM_MIN__,
+#endif
+	LDBL_MIN,
+	LDBL_MIN*(1 + LDBL_EPSILON),
+	LDBL_MIN*(1 + 2*LDBL_EPSILON),
+	2*LDBL_MIN,
+	LDBL_EPSILON/2,
+	LDBL_EPSILON,
+	2*LDBL_EPSILON,
+	1 - 3*LDBL_EPSILON/2,
+	1 - 2*LDBL_EPSILON/2,
+	1 - LDBL_EPSILON/2,
+	1,
+	1 + LDBL_EPSILON,
+	1 + 2*LDBL_EPSILON,
+	1 + 3*LDBL_EPSILON,
+	1.5 - 3*LDBL_EPSILON,
+	1.5 - 2*LDBL_EPSILON,
+	1.5 - LDBL_EPSILON,
+	1.5,
+	1.5 + LDBL_EPSILON,
+	1.5 + 2*LDBL_EPSILON,
+	1.5 + 3*LDBL_EPSILON,
+	2,
+	1/FLT_EPSILON - 0.5,
+	1/FLT_EPSILON,
+	1/FLT_EPSILON + 0.5,
+#ifdef __HAVE_LONG_DOUBLE
+	1/DBL_EPSILON - 0.5L,
+	1/DBL_EPSILON,
+	1/DBL_EPSILON + 0.5L,
+#endif
+	0.5/LDBL_EPSILON - 0.5,
+	0.5/LDBL_EPSILON,
+	0.5/LDBL_EPSILON + 0.5,
+	1/LDBL_EPSILON,
+	LDBL_MAX,
+	INFINITY,
+};
+
+ATF_TC(hypotf_trivial);
+ATF_TC_HEAD(hypotf_trivial, tc)
+{
+	atf_tc_set_md_var(tc, "descr", "hypotf(x,0) and hypotf(0,x)");
+}
+ATF_TC_BODY(hypotf_trivial, tc)
+{
+	unsigned i;
+
+	for (i = 0; i < __arraycount(trivial_casesf); i++) {
+		volatile float y, x = trivial_casesf[i];
+
+		ATF_CHECK_EQ_MSG((y = hypotf(x, 0)), x,
+		    "[%u] x=%g=%a hypotf(x, 0)=x=%g=%a",
+		    i, x, x, y, y);
+		ATF_CHECK_EQ_MSG((y = hypotf(-x, 0)), x,
+		    "[%u] x=%g=%a hypotf(-x, 0)=x=%g=%a",
+		    i, x, x, y, y);
+		ATF_CHECK_EQ_MSG((y = hypotf(0, x)), x,
+		    "[%u] x=%g=%a hypotf(0, x)=x=%g=%a",
+		    i, x, x, y, y);
+		ATF_CHECK_EQ_MSG((y = hypotf(0, -x)), x,
+		    "[%u] x=%g=%a hypotf(0, -x)=x=%g=%a",
+		    i, x, x, y, y);
+	}
+}
+
+ATF_TC(hypot_trivial);
+ATF_TC_HEAD(hypot_trivial, tc)
+{
+	atf_tc_set_md_var(tc, "descr", "hypot(x,0) and hypot(0,x)");
+}
+ATF_TC_BODY(hypot_trivial, tc)
+{
+	unsigned i;
+
+	for (i = 0; i < __arraycount(trivial_casesf); i++) {
+		volatile double y, x = trivial_casesf[i];
+
+		ATF_CHECK_EQ_MSG((y = hypot(x, 0)), x,
+		    "[%u] x=%g=%a hypot(x, 0)=x=%g=%a",
+		    i, x, x, y, y);
+		ATF_CHECK_EQ_MSG((y = hypot(-x, 0)), x,
+		    "[%u] x=%g=%a hypot(-x, 0)=x=%g=%a",
+		    i, x, x, y, y);
+		ATF_CHECK_EQ_MSG((y = hypot(0, x)), x,
+		    "[%u] x=%g=%a hypot(0, x)=x=%g=%a",
+		    i, x, x, y, y);
+		ATF_CHECK_EQ_MSG((y = hypot(0, -x)), x,
+		    "[%u] x=%g=%a hypot(0, -x)=x=%g=%a",
+		    i, x, x, y, y);
+	}
+
+	for (i = 0; i < __arraycount(trivial_cases); i++) {
+		volatile double y, x = trivial_cases[i];
+
+		ATF_CHECK_EQ_MSG((y = hypot(x, 0)), x,
+		    "[%u] x=%g=%a hypot(x, 0)=x=%g=%a",
+		    i, x, x, y, y);
+		ATF_CHECK_EQ_MSG((y = hypot(-x, 0)), x,
+		    "[%u] x=%g=%a hypot(-x, 0)=x=%g=%a",
+		    i, x, x, y, y);
+		ATF_CHECK_EQ_MSG((y = hypot(0, x)), x,
+		    "[%u] x=%g=%a hypot(0, x)=x=%g=%a",
+		    i, x, x, y, y);
+		ATF_CHECK_EQ_MSG((y = hypot(0, -x)), x,
+		    "[%u] x=%g=%a hypot(0, -x)=x=%g=%a",
+		    i, x, x, y, y);
+	}
+}
+
+ATF_TC(hypotl_trivial);
+ATF_TC_HEAD(hypotl_trivial, tc)
+{
+	atf_tc_set_md_var(tc, "descr", "hypotl(x,0) and hypotl(0,x)");
+}
+ATF_TC_BODY(hypotl_trivial, tc)
 {
-	atf_tc_set_md_var(tc, "descr", "Test hypot with integer args");
+	unsigned i;
+
+	for (i = 0; i < __arraycount(trivial_casesf); i++) {
+		volatile long double y, x = trivial_casesf[i];
+
+		ATF_CHECK_EQ_MSG((y = hypotl(x, 0)), x,
+		    "[%u] x=%Lg=%La hypotl(x, 0)=x=%Lg=%La",
+		    i, x, x, y, y);
+		ATF_CHECK_EQ_MSG((y = hypotl(-x, 0)), x,
+		    "[%u] x=%Lg=%La hypotl(-x, 0)=x=%Lg=%La",
+		    i, x, x, y, y);
+		ATF_CHECK_EQ_MSG((y = hypotl(0, x)), x,
+		    "[%u] x=%Lg=%La hypotl(0, x)=x=%Lg=%La",
+		    i, x, x, y, y);
+		ATF_CHECK_EQ_MSG((y = hypotl(0, -x)), x,
+		    "[%u] x=%Lg=%La hypotl(0, -x)=x=%Lg=%La",
+		    i, x, x, y, y);
+	}
+
+	for (i = 0; i < __arraycount(trivial_cases); i++) {
+		volatile long double y, x = trivial_cases[i];
+
+		ATF_CHECK_EQ_MSG((y = hypotl(x, 0)), x,
+		    "[%u] x=%Lg=%La hypotl(x, 0)=x=%Lg=%La",
+		    i, x, x, y, y);
+		ATF_CHECK_EQ_MSG((y = hypotl(-x, 0)), x,
+		    "[%u] x=%Lg=%La hypotl(-x, 0)=x=%Lg=%La",
+		    i, x, x, y, y);
+		ATF_CHECK_EQ_MSG((y = hypotl(0, x)), x,
+		    "[%u] x=%Lg=%La hypotl(0, x)=x=%Lg=%La",
+		    i, x, x, y, y);
+		ATF_CHECK_EQ_MSG((y = hypotl(0, -x)), x,
+		    "[%u] x=%Lg=%La hypotl(0, -x)=x=%Lg=%La",
+		    i, x, x, y, y);
+	}
+
+#if __HAVE_LONG_DOUBLE + 0 == 128
+	atf_tc_expect_fail("PR lib/58245: hypotl is broken on ld128 ports");
+#endif
+
+	for (i = 0; i < __arraycount(trivial_casesl); i++) {
+		volatile long double y, x = trivial_casesl[i];
+
+		ATF_CHECK_EQ_MSG((y = hypotl(x, 0)), x,
+		    "[%u] x=%Lg=%La hypotl(x, 0)=x=%Lg=%La",
+		    i, x, x, y, y);
+		ATF_CHECK_EQ_MSG((y = hypotl(-x, 0)), x,
+		    "[%u] x=%Lg=%La hypotl(-x, 0)=x=%Lg=%La",
+		    i, x, x, y, y);
+		ATF_CHECK_EQ_MSG((y = hypotl(0, x)), x,
+		    "[%u] x=%Lg=%La hypotl(0, x)=x=%Lg=%La",
+		    i, x, x, y, y);
+		ATF_CHECK_EQ_MSG((y = hypotl(0, -x)), x,
+		    "[%u] x=%Lg=%La hypotl(0, -x)=x=%Lg=%La",
+		    i, x, x, y, y);
+	}
 }
 
-ATF_TC_BODY(hypot_integer, tc)
+__CTASSERT(FLT_MANT_DIG >= 24);
+static const struct {
+	float a, b, c;
+} exact_casesf[] = {
+	{ 3, 4, 5 },
+	{ 5, 12, 13 },
+	{ 9, 12, 15 },
+	{ 0x1001, 0x801000, 0x801001 },
+	{ 4248257, 1130976, 4396225 },
+};
+
+__CTASSERT(DBL_MANT_DIG >= 53);
+static const struct {
+	double a, b, c;
+} exact_cases[] = {
+	{ 3378249543467007, 4505248894795776, 5631148868747265 },
+	{ 0x7ffffff, 0x1ffffff8000000, 0x1ffffff8000001 },
+#if DBL_MANT_DIG >= 56
+	{ 13514123525517439, 18018830919909120, 22523538851237761 },
+	{ 0x1fffffff, 0x1ffffffe0000000, 0x1ffffffe0000001 },
+#endif
+};
+
+#if LDBL_MANT_DIG >= 64
+static const struct {
+	long double a, b, c;
+} exact_casesl[] = {
+	{ 3458976450080784639, 4611968592949214720, 5764960744407842561 },
+	{ 0x1ffffffff, 0x1fffffffe00000000p0L, 0x1fffffffe00000001p0L },
+#if LDBL_MANT_DIG >= 113
+	{ 973555668229277869436257492279295.L,
+	  1298074224305703705819019479072768.L,
+	  1622592780382129686316970078625793.L },
+	{ 0x1ffffffffffffff,
+	  0x1fffffffffffffe00000000000000p0L,
+	  0x1fffffffffffffe00000000000001p0L },
+#endif
+};
+#endif
+
+ATF_TC(hypotf_exact);
+ATF_TC_HEAD(hypotf_exact, tc)
 {
-	/* volatile so hypotf() won't be evaluated at compile time */
-	volatile double a = 5;
-	volatile double b = 12;
-	ATF_CHECK(hypot(a, b) == 13.0);
+	atf_tc_set_md_var(tc, "descr", "hypotf on scaled Pythagorean triples");
+}
+ATF_TC_BODY(hypotf_exact, tc)
+{
+	unsigned i;
+
+	for (i = 0; i < __arraycount(exact_casesf); i++) {
+		int s;
+
+		for (s = FLT_MIN_EXP;
+		     s < FLT_MAX_EXP - FLT_MANT_DIG;
+		     s += (FLT_MAX_EXP - FLT_MANT_DIG - FLT_MIN_EXP)/5) {
+			volatile double a = ldexpf(exact_casesf[i].a, s);
+			volatile double b = ldexpf(exact_casesf[i].b, s);
+			float c = ldexpf(exact_casesf[i].c, s);
+
+			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);
+		}
+	}
 }
 
-ATF_TC(hypotf_integer);
-ATF_TC_HEAD(hypotf_integer, tc)
+ATF_TC(hypot_exact);
+ATF_TC_HEAD(hypot_exact, tc)
 {
-	atf_tc_set_md_var(tc, "descr", "Test hypotf with integer args");
+	atf_tc_set_md_var(tc, "descr", "hypot on scaled Pythagorean triples");
+}
+ATF_TC_BODY(hypot_exact, tc)
+{
+	unsigned i;
+
+	for (i = 0; i < __arraycount(exact_casesf); i++) {
+		int s;
+
+		for (s = DBL_MIN_EXP;
+		     s < DBL_MAX_EXP - DBL_MANT_DIG;
+		     s += (DBL_MAX_EXP - DBL_MANT_DIG - DBL_MIN_EXP)/5) {
+			volatile double a = ldexp(exact_casesf[i].a, s);
+			volatile double b = ldexp(exact_casesf[i].b, s);
+			double c = ldexp(exact_casesf[i].c, s);
+
+			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);
+		}
+	}
+
+	for (i = 0; i < __arraycount(exact_cases); i++) {
+		int s;
+
+		for (s = DBL_MIN_EXP;
+		     s < DBL_MAX_EXP - DBL_MANT_DIG;
+		     s += (DBL_MAX_EXP - DBL_MANT_DIG - DBL_MIN_EXP)/5) {
+			volatile double a = ldexp(exact_cases[i].a, s);
+			volatile double b = ldexp(exact_cases[i].b, s);
+			double c = ldexp(exact_cases[i].c, s);
+
+			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);
+		}
+	}
 }
 
-ATF_TC_BODY(hypotf_integer, tc)
+ATF_TC(hypotl_exact);
+ATF_TC_HEAD(hypotl_exact, tc)
 {
-	volatile float a = 5;
-	volatile float b = 12;
-	ATF_CHECK(hypotf(a, b) == 13.0f);
+	atf_tc_set_md_var(tc, "descr", "hypotl on scaled Pythagorean triples");
+}
+ATF_TC_BODY(hypotl_exact, tc)
+{
+	unsigned i;
+
+	for (i = 0; i < __arraycount(exact_casesf); i++) {
+		int s;
+
+		for (s = LDBL_MIN_EXP;
+		     s < LDBL_MAX_EXP - LDBL_MANT_DIG;
+		     s += (LDBL_MAX_EXP - LDBL_MANT_DIG - LDBL_MIN_EXP)/5) {
+			volatile long double a = ldexpl(exact_casesf[i].a, s);
+			volatile long double b = ldexpl(exact_casesf[i].b, s);
+			long double c = ldexpl(exact_casesf[i].c, s);
+
+			CHECKL_EQ(i, hypotl, a, b, c);
+			CHECKL_EQ(i, hypotl, b, a, c);
+			CHECKL_EQ(i, hypotl, a, -b, c);
+			CHECKL_EQ(i, hypotl, b, -a, c);
+			CHECKL_EQ(i, hypotl, -a, b, c);
+			CHECKL_EQ(i, hypotl, -b, a, c);
+			CHECKL_EQ(i, hypotl, -a, -b, c);
+			CHECKL_EQ(i, hypotl, -b, -a, c);
+		}
+	}
+
+	for (i = 0; i < __arraycount(exact_cases); i++) {
+		int s;
+
+		for (s = LDBL_MIN_EXP;
+		     s < LDBL_MAX_EXP - LDBL_MANT_DIG;
+		     s += (LDBL_MAX_EXP - LDBL_MANT_DIG - LDBL_MIN_EXP)/5) {
+			volatile long double a = ldexpl(exact_cases[i].a, s);
+			volatile long double b = ldexpl(exact_cases[i].b, s);
+			long double c = ldexpl(exact_cases[i].c, s);
+
+			CHECKL_EQ(i, hypotl, a, b, c);
+			CHECKL_EQ(i, hypotl, b, a, c);
+			CHECKL_EQ(i, hypotl, a, -b, c);
+			CHECKL_EQ(i, hypotl, b, -a, c);
+			CHECKL_EQ(i, hypotl, -a, b, c);
+			CHECKL_EQ(i, hypotl, -b, a, c);
+			CHECKL_EQ(i, hypotl, -a, -b, c);
+			CHECKL_EQ(i, hypotl, -b, -a, c);
+		}
+	}
+
+#if __HAVE_LONG_DOUBLE + 0 == 128
+	atf_tc_expect_fail("PR lib/58245: hypotl is broken on ld128 ports");
+#endif
+
+#if LDBL_MANT_DIG >= 64
+	for (i = 0; i < __arraycount(exact_casesl); i++) {
+		int s;
+
+		for (s = LDBL_MIN_EXP;
+		     s < LDBL_MAX_EXP - LDBL_MANT_DIG;
+		     s += (LDBL_MAX_EXP - LDBL_MANT_DIG - LDBL_MIN_EXP)/5) {
+			volatile long double a = ldexpl(exact_casesl[i].a, s);
+			volatile long double b = ldexpl(exact_casesl[i].b, s);
+			long double c = ldexpl(exact_casesl[i].c, s);
+
+			CHECKL_EQ(i, hypotl, a, b, c);
+			CHECKL_EQ(i, hypotl, b, a, c);
+			CHECKL_EQ(i, hypotl, a, -b, c);
+			CHECKL_EQ(i, hypotl, b, -a, c);
+			CHECKL_EQ(i, hypotl, -a, b, c);
+			CHECKL_EQ(i, hypotl, -b, a, c);
+			CHECKL_EQ(i, hypotl, -a, -b, c);
+			CHECKL_EQ(i, hypotl, -b, -a, c);
+		}
+	}
+#endif
 }
 
 ATF_TC(pr50698);
@@ -73,8 +526,12 @@ ATF_TC_BODY(pr50698, tc)
 ATF_TP_ADD_TCS(tp)
 {
 
-	ATF_TP_ADD_TC(tp, hypot_integer);
-	ATF_TP_ADD_TC(tp, hypotf_integer);
+	ATF_TP_ADD_TC(tp, hypot_exact);
+	ATF_TP_ADD_TC(tp, hypot_trivial);
+	ATF_TP_ADD_TC(tp, hypotf_exact);
+	ATF_TP_ADD_TC(tp, hypotf_trivial);
+	ATF_TP_ADD_TC(tp, hypotl_exact);
+	ATF_TP_ADD_TC(tp, hypotl_trivial);
 	ATF_TP_ADD_TC(tp, pr50698);
 
 	return atf_no_error();

Reply via email to