Module Name: src Committed By: riastradh Date: Thu May 9 12:23:21 UTC 2024
Modified Files: src/tests/lib/libm: t_ilogb.c Log Message: tests/lib/libm/t_ilogb: Expand and tidy. 1. Instead of calling out VAX by name, use #ifdef NAN and isinf(INFINITY). (VAX defines INFINITY even though it's not an infinity, not sure if there's a better compile-time test.) 2. Verify ilogbl works on long double on all architectures, not just those with __HAVE_LONG_DOUBLE which means long double is _larger_ than double. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/tests/lib/libm/t_ilogb.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_ilogb.c diff -u src/tests/lib/libm/t_ilogb.c:1.9 src/tests/lib/libm/t_ilogb.c:1.10 --- src/tests/lib/libm/t_ilogb.c:1.9 Thu Jun 14 21:57:25 2018 +++ src/tests/lib/libm/t_ilogb.c Thu May 9 12:23:21 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: t_ilogb.c,v 1.9 2018/06/14 21:57:25 maya Exp $ */ +/* $NetBSD: t_ilogb.c,v 1.10 2024/05/09 12:23:21 riastradh Exp $ */ /*- * Copyright (c) 2016 The NetBSD Foundation, Inc. @@ -28,8 +28,9 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ + #include <sys/cdefs.h> -__RCSID("$NetBSD: t_ilogb.c,v 1.9 2018/06/14 21:57:25 maya Exp $"); +__RCSID("$NetBSD: t_ilogb.c,v 1.10 2024/05/09 12:23:21 riastradh Exp $"); #include <atf-c.h> #include <fenv.h> @@ -38,10 +39,14 @@ __RCSID("$NetBSD: t_ilogb.c,v 1.9 2018/0 #ifndef __HAVE_FENV -# define ATF_CHECK_RAISED_INVALID -# define ATF_CHECK_RAISED_NOTHING +# define ATF_CLEAR_EXCEPTS __nothing +# define ATF_CHECK_RAISED_INVALID __nothing +# define ATF_CHECK_RAISED_NOTHING __nothing + +#else /* __HAVE_FENV */ + +# define ATF_CLEAR_EXCEPTS (void)feclearexcept(FE_ALL_EXCEPT); -#else # define ATF_CHECK_RAISED_INVALID do { \ int r = fetestexcept(FE_ALL_EXCEPT); \ ATF_CHECK_MSG((r & FE_INVALID) != 0, \ @@ -55,72 +60,65 @@ __RCSID("$NetBSD: t_ilogb.c,v 1.9 2018/0 ATF_CHECK_MSG(r == 0, "r=%#x != 0\n", r); \ (void)feclearexcept(FE_ALL_EXCEPT); \ } while (/*CONSTCOND*/0) -#endif + +#endif /* __HAVE_FENV */ ATF_TC(ilogb); ATF_TC_HEAD(ilogb, tc) { - atf_tc_set_md_var(tc, "descr","Check ilogb family"); + atf_tc_set_md_var(tc, "descr", "Check ilogb family"); } ATF_TC_BODY(ilogb, tc) { + ATF_CLEAR_EXCEPTS; + ATF_CHECK(ilogbf(0) == FP_ILOGB0); ATF_CHECK_RAISED_INVALID; ATF_CHECK(ilogb(0) == FP_ILOGB0); ATF_CHECK_RAISED_INVALID; -#ifdef __HAVE_LONG_DOUBLE ATF_CHECK(ilogbl(0) == FP_ILOGB0); ATF_CHECK_RAISED_INVALID; -#endif - ATF_CHECK(ilogbf(-0) == FP_ILOGB0); + ATF_CHECK(ilogbf(-0.) == FP_ILOGB0); ATF_CHECK_RAISED_INVALID; - ATF_CHECK(ilogb(-0) == FP_ILOGB0); + ATF_CHECK(ilogb(-0.) == FP_ILOGB0); ATF_CHECK_RAISED_INVALID; -#ifdef __HAVE_LONG_DOUBLE - ATF_CHECK(ilogbl(-0) == FP_ILOGB0); + ATF_CHECK(ilogbl(-0.) == FP_ILOGB0); ATF_CHECK_RAISED_INVALID; -#endif - ATF_CHECK(ilogbf(INFINITY) == INT_MAX); - ATF_CHECK_RAISED_INVALID; - ATF_CHECK(ilogb(INFINITY) == INT_MAX); - ATF_CHECK_RAISED_INVALID; -#ifdef __HAVE_LONG_DOUBLE - ATF_CHECK(ilogbl(INFINITY) == INT_MAX); - ATF_CHECK_RAISED_INVALID; -#endif - - ATF_CHECK(ilogbf(-INFINITY) == INT_MAX); - ATF_CHECK_RAISED_INVALID; - ATF_CHECK(ilogb(-INFINITY) == INT_MAX); - ATF_CHECK_RAISED_INVALID; -#ifdef __HAVE_LONG_DOUBLE - ATF_CHECK(ilogbl(-INFINITY) == INT_MAX); - ATF_CHECK_RAISED_INVALID; -#endif + if (isinf(INFINITY)) { + ATF_CHECK(ilogbf(INFINITY) == INT_MAX); + ATF_CHECK_RAISED_INVALID; + ATF_CHECK(ilogb(INFINITY) == INT_MAX); + ATF_CHECK_RAISED_INVALID; + ATF_CHECK(ilogbl(INFINITY) == INT_MAX); + ATF_CHECK_RAISED_INVALID; + + ATF_CHECK(ilogbf(-INFINITY) == INT_MAX); + ATF_CHECK_RAISED_INVALID; + ATF_CHECK(ilogb(-INFINITY) == INT_MAX); + ATF_CHECK_RAISED_INVALID; + ATF_CHECK(ilogbl(-INFINITY) == INT_MAX); + ATF_CHECK_RAISED_INVALID; + } ATF_CHECK(ilogbf(1024) == 10); ATF_CHECK_RAISED_NOTHING; ATF_CHECK(ilogb(1024) == 10); ATF_CHECK_RAISED_NOTHING; -#ifdef __HAVE_LONG_DOUBLE ATF_CHECK(ilogbl(1024) == 10); ATF_CHECK_RAISED_NOTHING; -#endif -#ifndef __vax__ +#ifdef NAN ATF_CHECK(ilogbf(NAN) == FP_ILOGBNAN); ATF_CHECK_RAISED_INVALID; ATF_CHECK(ilogb(NAN) == FP_ILOGBNAN); ATF_CHECK_RAISED_INVALID; -#ifdef __HAVE_LONG_DOUBLE ATF_CHECK(ilogbl(NAN) == FP_ILOGBNAN); ATF_CHECK_RAISED_INVALID; #endif -#endif } ATF_TP_ADD_TCS(tp)