Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Mon, 7 Apr 2014 09:40:53 -0400
From: Morten Welinder <>
Subject: Re: printf issues

I am seeing another case of printing the wrong result.  (This is with
the pre-fix code, but I don't think that matters.)

For 0xc.301316272b908p+49L (aka 6861116509411105.0L) with format
"%.15Lg" I get

musl: 6.86111650941111e+15
glibc: 6.8611165094111e+15

Musl has rounded to odd here for a midpoint case.


On Mon, Apr 7, 2014 at 3:29 AM, Rich Felker <> wrote:
> On Fri, Apr 04, 2014 at 08:01:00PM -0400, Morten Welinder wrote:
>> I *think* the right fix is to add the following "if' statement into
>> the rounding loop:
>>                 while (*d > 999999999) {
>>                     *d--=0;
>>                     if (d < a) *--a = 0;
>>                     (*d)++;
>>                 }
>> This also ought to make the d<a test afterwards unnecessary.  But
>> more tests would be better.
> After re-studying the code, I think this is the correct fix, and I've
> committed the fix to git. I also fixed the bug where %g failed to trim
> trailing zeros.
> 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.