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);