Module Name: src Committed By: riastradh Date: Wed Jul 17 11:59:58 UTC 2024
Modified Files: src/lib/libm/src: math_private.h src/tests/lib/libm: t_log.c Log Message: libm: Fix order of significand words in EXTRACT_LDBL128_WORDS. PR lib/58337 To generate a diff of this commit: cvs rdiff -u -r1.32 -r1.33 src/lib/libm/src/math_private.h cvs rdiff -u -r1.17 -r1.18 src/tests/lib/libm/t_log.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libm/src/math_private.h diff -u src/lib/libm/src/math_private.h:1.32 src/lib/libm/src/math_private.h:1.33 --- src/lib/libm/src/math_private.h:1.32 Wed Apr 3 04:40:23 2024 +++ src/lib/libm/src/math_private.h Wed Jul 17 11:59:58 2024 @@ -11,7 +11,7 @@ /* * from: @(#)fdlibm.h 5.1 93/09/24 - * $NetBSD: math_private.h,v 1.32 2024/04/03 04:40:23 kre Exp $ + * $NetBSD: math_private.h,v 1.33 2024/07/17 11:59:58 riastradh Exp $ */ #ifndef _MATH_PRIVATE_H_ @@ -264,8 +264,8 @@ do { \ union ieee_ext_u ew_u; \ ew_u.extu_ld = (d); \ (ix0) = GET_EXPSIGN(&ew_u); \ - (ix1) = ew_u.extu_fracl; \ - (ix2) = ew_u.extu_frach; \ + (ix1) = ew_u.extu_frach; \ + (ix2) = ew_u.extu_fracl; \ } while (0) /* Get expsign as a 16 bit int from a long double. */ Index: src/tests/lib/libm/t_log.c diff -u src/tests/lib/libm/t_log.c:1.17 src/tests/lib/libm/t_log.c:1.18 --- src/tests/lib/libm/t_log.c:1.17 Tue Jul 16 03:14:16 2024 +++ src/tests/lib/libm/t_log.c Wed Jul 17 11:59:58 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: t_log.c,v 1.17 2024/07/16 03:14:16 riastradh Exp $ */ +/* $NetBSD: t_log.c,v 1.18 2024/07/17 11:59:58 riastradh Exp $ */ /*- * Copyright (c) 2011 The NetBSD Foundation, Inc. @@ -29,7 +29,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> -__RCSID("$NetBSD: t_log.c,v 1.17 2024/07/16 03:14:16 riastradh Exp $"); +__RCSID("$NetBSD: t_log.c,v 1.18 2024/07/17 11:59:58 riastradh Exp $"); #include <sys/types.h> @@ -238,16 +238,6 @@ ATF_TC_BODY(log10_exact, tc) ATF_CHECK_EQ(signbit(log10(1)), 0); ATF_CHECK_EQ(signbit(log10l(1)), 0); -#if __HAVE_LONG_DOUBLE + 0 == 128 - /* - * Not sure if it's the same issue, but probably! - * - * log10l(x) != y: [1] log10l(0x1.4p+3=10)=0x1.ffffffffcf54a625cf632f6e120dp-1=0.99999999997786775, expected 0x1p+0=1 - * log10l(x) != y: [2] log10l(0x1.9p+6=100)=0x1.ffffc6bdc46c7020e9b1f5a2930ep+0=1.9999965871142409, expected 0x1p+1=2 - */ - atf_tc_expect_fail("PR lib/58337: logl() crashes on arm64"); -#endif - for (i = 0; i < __arraycount(log10f_exact); i++) { const float x = log10f_exact[i].x; const float y = log10f_exact[i].y; @@ -274,10 +264,6 @@ ATF_TC_BODY(log10_approx, tc) volatile long double log10e2 = 2*0.43429448190325182765112891891660508229439700580367L; -#if __HAVE_LONG_DOUBLE + 0 == 128 - atf_tc_expect_fail("PR lib/58337: logl() crashes on arm64"); -#endif - ATF_CHECK_MSG((fabsf((log10f(e) - (float)log10e)/(float)log10e) < 2*FLT_EPSILON), "log10f(e)=%a=%.8g expected %a=%.8g", @@ -398,10 +384,6 @@ ATF_TC_BODY(log1p_approx, tc) volatile long double e2m1 = /* exp(2) - 1 */ 6.3890560989306502272304274605750078131803155705519L; -#if __HAVE_LONG_DOUBLE + 0 == 128 - atf_tc_expect_fail("PR lib/58337: logl() crashes on arm64"); -#endif - /* * Approximation is close enough that equality of the rounded * output had better hold. @@ -593,10 +575,6 @@ ATF_TC_BODY(log2_approx, tc) volatile long double log2e2 = 2*1.442695040888963407359924681001892137426645954153L; -#if __HAVE_LONG_DOUBLE + 0 == 128 - atf_tc_expect_fail("PR lib/58337: logl() crashes on arm64"); -#endif - ATF_CHECK_MSG((fabsf((log2f(e) - (float)log2e)/(float)log2e) < 2*FLT_EPSILON), "log2f(e)=%a=%.8g expected %a=%.8g", @@ -717,10 +695,6 @@ ATF_TC_BODY(log_approx, tc) volatile long double log_10 = 2.30258509299404568401799145468436420760110148862875L; -#if __HAVE_LONG_DOUBLE + 0 == 128 - atf_tc_expect_fail("PR lib/58337: logl() crashes on arm64"); -#endif - ATF_CHECK_MSG(fabsf((logf(2) - log_2)/log_2) < 2*FLT_EPSILON, "logf(2)=%a=%.8g expected %a=%.8g", logf(2), logf(2), (float)log_2, (float)log_2);