Module Name: src
Committed By: riastradh
Date: Thu May 9 14:13:09 UTC 2024
Modified Files:
src/tests/lib/libc/gen: t_fpclassify.c
Log Message:
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.4 -r1.5 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.4 src/tests/lib/libc/gen/t_fpclassify.c:1.5
--- src/tests/lib/libc/gen/t_fpclassify.c:1.4 Tue May 7 21:00:00 2024
+++ src/tests/lib/libc/gen/t_fpclassify.c Thu May 9 14:13:08 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: t_fpclassify.c,v 1.4 2024/05/07 21:00:00 riastradh Exp $ */
+/* $NetBSD: t_fpclassify.c,v 1.5 2024/05/09 14:13:08 riastradh 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,35 +137,67 @@ 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);
}
ATF_TC(fpclassify_long_double);
@@ -149,35 +213,67 @@ 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 /* _FLOAT_IEEE754 */