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 */