|
Message-Id: <mwpn2hm1wy.fsf@tomate.loria.fr> Date: Thu, 07 Jan 2021 12:17:33 +0100 From: Paul Zimmermann <Paul.Zimmermann@...ia.fr> To: musl@...ts.openwall.com Subject: issue with exp10l Hi, I am extending my comparison of the accuracy of several mathematical libraries to the "double extended precision" (long double on x86_64). First I notice that Musl does not provide j0, j1, y0, and y1 for the long double format. Do you confirm? Then I got a segmentation fault using exp10l with NaN input with a non-zero payload. $ cat test_exp10.c #define _GNU_SOURCE typedef union { __uint128_t n; long double x; } union_t; #include <stdio.h> #include <math.h> int main() { union_t u; u.n = 16383UL; u.n = u.n << 64; u.n = u.n | 629329181547216221UL; /* u.n = 302213637488765131341149 */ long double x = u.x; printf ("x=%La\n", x); fflush (stdout); long double y; y = exp10l (x); printf ("y=%La\n", y); fflush (stdout); return 0; } With glibc this works fine: $ gcc -fno-builtin test_exp10.c -lm $ ./a.out x=nan y=-nan With Musl 1.2.1 I get: $ ./a.out x=nan Segmentation fault According to gdb, the issue is in pow10l: Program received signal SIGSEGV, Segmentation fault. 0x000055555555d10e in pow10l () (gdb) where #0 0x000055555555d10e in pow10l () #1 0x0000000080000000 in ?? () #2 0x0000000000003fff in ?? () #3 0x0000000000000000 in ?? () Best regards, Paul
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.