![]() |
|
Message-ID: <20250311173517.GD1827@brightrain.aerifal.cx> Date: Tue, 11 Mar 2025 13:35:17 -0400 From: Rich Felker <dalias@...c.org> To: Victor Stinner <vstinner@...hon.org> Cc: musl@...ts.openwall.com Subject: Re: Bug in fma(): should return negative zero On Tue, Mar 11, 2025 at 01:09:23PM -0400, Rich Felker wrote: > On Tue, Mar 11, 2025 at 05:19:26PM +0100, Victor Stinner wrote: > > Hi, > > > > On Tue, Mar 11, 2025 at 2:25 PM Rich Felker <dalias@...c.org> wrote: > > > What archs have you tested it on? > > > > I tested on x86-64. > > > > > It doesn't happen for me and the general C code looks like it handles > > > this case correctly, > > > > Oh. I can reproduce the issue with my C example on: > > > > * Fedora 41: musl 1.2.5-1, musl-gcc version "gcc (GCC) 14.2.1" > > * Alpine Linux v3.21: musl-1.2.5-r9, gcc version 14.2.0. > > > > Example on Fedora: > > --- > > $ musl-gcc x.c -o x && ./x > > fma(+1e-300, -1e-300, +0) = +0 > > --- > > > > The result is wrong (+0), it must be "-0": fma(x, y, z) = (+1e-300) * > > (-1e-300) + (+0) = -0. > > Indeed, the correct result is -0 and +0 is wrong. But there is no bug > in musl. The bug is in the version of gcc used to compile musl. Using > gcc 13.2.1 on Alpine 3.20 and building musl myself, fma correctly > returns -0. But the musl binary shipped with Alpine 3.20 has been > miscompiled so that the "return x*y;" on line 56 incorrectly just > branches to line 53's "return x*y+z;". > > I'm not sure what the buggy version of gcc is, but I would guess it's > a new regression in gcc 14. So I guess we need to track this down and > report it. My guess is that someone wrongly thought they could infer > from the branches on the bit representation of the float that it's > zero, and thereby "of course adding zero is a no-op" (no! no! NO!) so > they folded the two code paths to the same thing... Ah, no, I should have checked. This is a bug in musl that was fixed by nsz last year in git, but the fix hasn't made it into any release. Rich
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.