|
Message-ID: <20151121203244.GZ26951@example.net> Date: Sat, 21 Nov 2015 21:32:45 +0100 From: u-uy74@...ey.se To: musl@...ts.openwall.com Subject: Re: for information, gcc-4.2.3 miscompiles musl math On Sat, Nov 21, 2015 at 09:03:42PM +0100, Szabolcs Nagy wrote: > > Hmm, which places does it add the stores around? Could you fix it with > > an explicit conversion to double_t? That might be nice to harden > > against broken compilers without penalizing correct ones. > > yeah that might work > > i dont have gcc-4.2, can you try: > > diff --git a/src/math/__rem_pio2.c b/src/math/__rem_pio2.c > index a40db9f..d403f81 100644 > --- a/src/math/__rem_pio2.c > +++ b/src/math/__rem_pio2.c > @@ -118,7 +118,7 @@ int __rem_pio2(double x, double *y) > if (ix < 0x413921fb) { /* |x| ~< 2^20*(pi/2), medium size */ > medium: > /* rint(x/(pi/2)), Assume round-to-nearest. */ > - fn = x*invpio2 + toint - toint; > + fn = (double_t)x*invpio2 + toint - toint; > n = (int32_t)fn; > r = x - fn*pio2_1; > w = fn*pio2_1t; /* 1st round, good to 85 bits */ Sure, the result: sin(8.000000) = 0.989358 Which is the same as produced by musl-1.0.0+, without this patch, iow the expected "good" value. Thanks! Rune
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.