Module Name:    src
Committed By:   martin
Date:           Fri Aug 23 15:41:12 UTC 2024

Modified Files:
        src/tests/lib/libc/gen [netbsd-10]: t_fpclassify.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #790):

        tests/lib/libc/gen/t_fpclassify.c: revision 1.4
        tests/lib/libc/gen/t_fpclassify.c: revision 1.5

tests/lib/libc/gen/t_fpclassify: Enable long double tests.

The necessary long double symbols should all be available now.  If
there are any architectures where they're not, we can fix those
architectures.

tests/lib/libc/gen/t_fpclassify: Spruce this up a bit.
Provide more useful diagnostics when tests fail.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.3.52.1 src/tests/lib/libc/gen/t_fpclassify.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/libc/gen/t_fpclassify.c
diff -u src/tests/lib/libc/gen/t_fpclassify.c:1.3 src/tests/lib/libc/gen/t_fpclassify.c:1.3.52.1
--- src/tests/lib/libc/gen/t_fpclassify.c:1.3	Sat Oct  1 21:47:08 2011
+++ src/tests/lib/libc/gen/t_fpclassify.c	Fri Aug 23 15:41:12 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: t_fpclassify.c,v 1.3 2011/10/01 21:47:08 christos Exp $ */
+/* $NetBSD: t_fpclassify.c,v 1.3.52.1 2024/08/23 15:41:12 martin Exp $ */
 
 /*-
  * Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -61,35 +61,67 @@ ATF_TC_BODY(fpclassify_float, tc)
 	int e, i;
 
 	d0 = FLT_MIN;
-	ATF_REQUIRE_EQ(fpclassify(d0), FP_NORMAL);
+	ATF_CHECK_EQ_MSG(fpclassify(d0), FP_NORMAL,
+	    "fpclassify(%a)=%d FP_NORMAL=%d",
+	    d0, fpclassify(d0), FP_NORMAL);
 	f = frexpf(d0, &e);
-	ATF_REQUIRE_EQ(e, FLT_MIN_EXP);
-	ATF_REQUIRE_EQ(f, 0.5);
+	ATF_CHECK_EQ_MSG(e, FLT_MIN_EXP,
+	    "frexpf(%a) returned normalized %a, exponent %d;"
+	    " expected normalized %a, exponent %d",
+	    d0, f, e, 0.5, FLT_MIN_EXP);
+	ATF_CHECK_EQ_MSG(f, 0.5,
+	    "frexpf(%a) returned normalized %a, exponent %d;"
+	    " expected normalized %a, exponent %d",
+	    d0, f, e, 0.5, FLT_MIN_EXP);
 	d1 = d0;
 
 	/* shift a "1" bit through the mantissa (skip the implicit bit) */
 	for (i = 1; i < FLT_MANT_DIG; i++) {
 		d1 /= 2;
-		ATF_REQUIRE_EQ(fpclassify(d1), FP_SUBNORMAL);
-		ATF_REQUIRE(d1 > 0 && d1 < d0);
+		ATF_CHECK_EQ_MSG(fpclassify(d1), FP_SUBNORMAL,
+		    "[%d] fpclassify(%a)=%d FP_SUBNORMAL=%d",
+		    i, d1, fpclassify(d1), FP_SUBNORMAL);
+		ATF_CHECK_MSG(d1 > 0 && d1 < d0,
+		    "[%d] d1=%a d0=%a", i, d1, d0);
 
 		d2 = ldexpf(d0, -i);
-		ATF_REQUIRE_EQ(d2, d1);
+		ATF_CHECK_EQ_MSG(d2, d1, "[%d] ldexpf(%a, -%d)=%a != %a",
+		    i, d0, i, d2, d1);
 
 		d2 = modff(d1, &ip);
-		ATF_REQUIRE_EQ(d2, d1);
-		ATF_REQUIRE_EQ(ip, 0);
+		ATF_CHECK_EQ_MSG(d2, d1,
+		    "[%d] modff(%a) returned int %a, frac %a;"
+		    " expected int %a, frac %a",
+		    i, d1, ip, d2, 0., d1);
+		ATF_CHECK_EQ_MSG(ip, 0,
+		    "[%d] modff(%a) returned int %a, frac %a;"
+		    " expected int %a, frac %a",
+		    i, d1, ip, d2, 0., d1);
 
 		f = frexpf(d1, &e);
-		ATF_REQUIRE_EQ(e, FLT_MIN_EXP - i);
-		ATF_REQUIRE_EQ(f, 0.5);
+		ATF_CHECK_EQ_MSG(e, FLT_MIN_EXP - i,
+		    "[%d] frexpf(%a) returned normalized %a, exponent %d;"
+		    " expected normalized %a, exponent %d",
+		    i, d1, f, e, 0.5, FLT_MIN_EXP - i);
+		ATF_CHECK_EQ_MSG(f, 0.5,
+		    "[%d] frexpf(%a) returned normalized %a, exponent %d;"
+		    " expected normalized %a, exponent %d",
+		    i, d1, f, e, 0.5, FLT_MIN_EXP - i);
 	}
 
 	d1 /= 2;
-	ATF_REQUIRE_EQ(fpclassify(d1), FP_ZERO);
+	ATF_CHECK_EQ_MSG(fpclassify(d1), FP_ZERO,
+	    "fpclassify(%a)=%d FP_ZERO=%d",
+	    d1, fpclassify(d1), FP_ZERO);
 	f = frexpf(d1, &e);
-	ATF_REQUIRE_EQ(e, 0);
-	ATF_REQUIRE_EQ(f, 0);
+	ATF_CHECK_EQ_MSG(e, 0,
+	    "frexpf(%a) returned normalized %a, exponent %d;"
+	    " expected normalized %a, exponent %d",
+	    d1, f, e, 0., 0);
+	ATF_CHECK_EQ_MSG(f, 0,
+	    "frexpf(%a) returned normalized %a, exponent %d;"
+	    " expected normalized %a, exponent %d",
+	    d1, f, e, 0., 0);
 }
 
 ATF_TC(fpclassify_double);
@@ -105,44 +137,69 @@ ATF_TC_BODY(fpclassify_double, tc)
 	int e, i;
 
 	d0 = DBL_MIN;
-	ATF_REQUIRE_EQ(fpclassify(d0), FP_NORMAL);
+	ATF_CHECK_EQ_MSG(fpclassify(d0), FP_NORMAL,
+	    "fpclassify(%a)=%d FP_NORMAL=%d",
+	    d0, fpclassify(d0), FP_NORMAL);
 	f = frexp(d0, &e);
-	ATF_REQUIRE_EQ(e, DBL_MIN_EXP);
-	ATF_REQUIRE_EQ(f, 0.5);
+	ATF_CHECK_EQ_MSG(e, DBL_MIN_EXP,
+	    "frexp(%a) returned normalized %a, exponent %d;"
+	    " expected normalized %a, exponent %d",
+	    d0, f, e, 0.5, DBL_MIN_EXP);
+	ATF_CHECK_EQ_MSG(f, 0.5,
+	    "frexp(%a) returned normalized %a, exponent %d;"
+	    " expected normalized %a, exponent %d",
+	    d0, f, e, 0.5, DBL_MIN_EXP);
 	d1 = d0;
 
 	/* shift a "1" bit through the mantissa (skip the implicit bit) */
 	for (i = 1; i < DBL_MANT_DIG; i++) {
 		d1 /= 2;
-		ATF_REQUIRE_EQ(fpclassify(d1), FP_SUBNORMAL);
-		ATF_REQUIRE(d1 > 0 && d1 < d0);
+		ATF_CHECK_EQ_MSG(fpclassify(d1), FP_SUBNORMAL,
+		    "[%d] fpclassify(%a)=%d FP_SUBNORMAL=%d",
+		    i, d1, fpclassify(d1), FP_SUBNORMAL);
+		ATF_CHECK_MSG(d1 > 0 && d1 < d0,
+		    "[%d] d1=%a d0=%a", i, d1, d0);
 
 		d2 = ldexp(d0, -i);
-		ATF_REQUIRE_EQ(d2, d1);
+		ATF_CHECK_EQ_MSG(d2, d1, "[%d] ldexp(%a, -%d)=%a != %a",
+		    i, d0, i, d2, d1);
 
 		d2 = modf(d1, &ip);
-		ATF_REQUIRE_EQ(d2, d1);
-		ATF_REQUIRE_EQ(ip, 0);
+		ATF_CHECK_EQ_MSG(d2, d1,
+		    "[%d] modf(%a) returned int %a, frac %a;"
+		    " expected int %a, frac %a",
+		    i, d1, ip, d2, 0., d1);
+		ATF_CHECK_EQ_MSG(ip, 0,
+		    "[%d] modf(%a) returned int %a, frac %a;"
+		    " expected int %a, frac %a",
+		    i, d1, ip, d2, 0., d1);
 
 		f = frexp(d1, &e);
-		ATF_REQUIRE_EQ(e, DBL_MIN_EXP - i);
-		ATF_REQUIRE_EQ(f, 0.5);
+		ATF_CHECK_EQ_MSG(e, DBL_MIN_EXP - i,
+		    "[%d] frexp(%a) returned normalized %a, exponent %d;"
+		    " expected normalized %a, exponent %d",
+		    i, d1, f, e, 0.5, DBL_MIN_EXP - i);
+		ATF_CHECK_EQ_MSG(f, 0.5,
+		    "[%d] frexp(%a) returned normalized %a, exponent %d;"
+		    " expected normalized %a, exponent %d",
+		    i, d1, f, e, 0.5, DBL_MIN_EXP - i);
 	}
 
 	d1 /= 2;
-	ATF_REQUIRE_EQ(fpclassify(d1), FP_ZERO);
+	ATF_CHECK_EQ_MSG(fpclassify(d1), FP_ZERO,
+	    "fpclassify(%a)=%d FP_ZERO=%d",
+	    d1, fpclassify(d1), FP_ZERO);
 	f = frexp(d1, &e);
-	ATF_REQUIRE_EQ(e, 0);
-	ATF_REQUIRE_EQ(f, 0);
+	ATF_CHECK_EQ_MSG(e, 0,
+	    "frexp(%a) returned normalized %a, exponent %d;"
+	    " expected normalized %a, exponent %d",
+	    d1, f, e, 0., 0);
+	ATF_CHECK_EQ_MSG(f, 0,
+	    "frexp(%a) returned normalized %a, exponent %d;"
+	    " expected normalized %a, exponent %d",
+	    d1, f, e, 0., 0);
 }
 
-/*
- * XXX NetBSD doesn't have long-double flavors of frexp, ldexp, and modf,
- * XXX so this test is disabled.
- */
-
-#ifdef TEST_LONG_DOUBLE
-
 ATF_TC(fpclassify_long_double);
 ATF_TC_HEAD(fpclassify_long_double, tc)
 {
@@ -156,37 +213,69 @@ ATF_TC_BODY(fpclassify_long_double, tc)
 	int e, i;
 
 	d0 = LDBL_MIN;
-	ATF_REQUIRE_EQ(fpclassify(d0), FP_NORMAL);
+	ATF_CHECK_EQ_MSG(fpclassify(d0), FP_NORMAL,
+	    "fpclassify(%La)=%d FP_NORMAL=%d",
+	    d0, fpclassify(d0), FP_NORMAL);
 	f = frexpl(d0, &e);
-	ATF_REQUIRE_EQ(e, LDBL_MIN_EXP);
-	ATF_REQUIRE_EQ(f, 0.5);
+	ATF_CHECK_EQ_MSG(e, LDBL_MIN_EXP,
+	    "frexpl(%La) returned normalized %La, exponent %d;"
+	    " expected normalized %La, exponent %d",
+	    d0, f, e, 0.5L, LDBL_MIN_EXP);
+	ATF_CHECK_EQ_MSG(f, 0.5,
+	    "frexpl(%La) returned normalized %La, exponent %d;"
+	    " expected normalized %La, exponent %d",
+	    d0, f, e, 0.5L, LDBL_MIN_EXP);
 	d1 = d0;
 
 	/* shift a "1" bit through the mantissa (skip the implicit bit) */
 	for (i = 1; i < LDBL_MANT_DIG; i++) {
 		d1 /= 2;
-		ATF_REQUIRE_EQ(fpclassify(d1), FP_SUBNORMAL);
-		ATF_REQUIRE(d1 > 0 && d1 < d0);
+		ATF_CHECK_EQ_MSG(fpclassify(d1), FP_SUBNORMAL,
+		    "[%d] fpclassify(%La)=%d FP_SUBNORMAL=%d",
+		    i, d1, fpclassify(d1), FP_SUBNORMAL);
+		ATF_CHECK_MSG(d1 > 0 && d1 < d0,
+		    "[%d] d1=%La d0=%La", i, d1, d0);
 
 		d2 = ldexpl(d0, -i);
-		ATF_REQUIRE_EQ(d2, d1);
+		ATF_CHECK_EQ_MSG(d2, d1, "[%d] ldexpl(%La, -%d)=%La != %La",
+		    i, d0, i, d2, d1);
 
 		d2 = modfl(d1, &ip);
-		ATF_REQUIRE_EQ(d2, d1);
-		ATF_REQUIRE_EQ(ip, 0);
+		ATF_CHECK_EQ_MSG(d2, d1,
+		    "[%d] modfl(%La) returned int %La, frac %La;"
+		    " expected int %La, frac %La",
+		    i, d1, ip, d2, 0.L, d1);
+		ATF_CHECK_EQ_MSG(ip, 0,
+		    "[%d] modfl(%La) returned int %La, frac %La;"
+		    " expected int %La, frac %La",
+		    i, d1, ip, d2, 0.L, d1);
 
 		f = frexpl(d1, &e);
-		ATF_REQUIRE_EQ(e, LDBL_MIN_EXP - i);
-		ATF_REQUIRE_EQ(f, 0.5);
+		ATF_CHECK_EQ_MSG(e, LDBL_MIN_EXP - i,
+		    "[%d] frexpl(%La) returned normalized %La, exponent %d;"
+		    " expected normalized %La, exponent %d",
+		    i, d1, f, e, 0.5L, LDBL_MIN_EXP - i);
+		ATF_CHECK_EQ_MSG(f, 0.5,
+		    "[%d] frexpl(%La) returned normalized %La, exponent %d;"
+		    " expected normalized %La, exponent %d",
+		    i, d1, f, e, 0.5L, LDBL_MIN_EXP - i);
 	}
 
 	d1 /= 2;
-	ATF_REQUIRE_EQ(fpclassify(d1), FP_ZERO);
+	ATF_CHECK_EQ_MSG(fpclassify(d1), FP_ZERO,
+	    "fpclassify(%La)=%d FP_ZERO=%d",
+	    d1, fpclassify(d1), FP_ZERO);
 	f = frexpl(d1, &e);
-	ATF_REQUIRE_EQ(e, 0);
-	ATF_REQUIRE_EQ(f, 0);
+	ATF_CHECK_EQ_MSG(e, 0,
+	    "frexpl(%La) returned normalized %La, exponent %d;"
+	    " expected normalized %La, exponent %d",
+	    d1, f, e, 0.L, 0);
+	ATF_CHECK_EQ_MSG(f, 0,
+	    "frexpl(%La) returned normalized %La, exponent %d;"
+	    " expected normalized %La, exponent %d",
+	    d1, f, e, 0.L, 0);
 }
-#endif /* TEST_LONG_DOUBLE */
+
 #endif /* _FLOAT_IEEE754 */
 
 ATF_TP_ADD_TCS(tp)
@@ -197,9 +286,7 @@ ATF_TP_ADD_TCS(tp)
 #else
 	ATF_TP_ADD_TC(tp, fpclassify_float);
 	ATF_TP_ADD_TC(tp, fpclassify_double);
-#ifdef TEST_LONG_DOUBLE
 	ATF_TP_ADD_TC(tp, fpclassify_long_double);
-#endif /* TEST_LONG_DOUBLE */
 #endif /* _FLOAT_IEEE754 */
 
 	return atf_no_error();

Reply via email to