Problem with lroundf()

Jeff Johnston jjohnstn@redhat.com
Sat Aug 25 16:18:00 GMT 2007


I have just made a patch.  The code in lroundf() was making a comparison 
between an int and a calculation using sizeof.  This ended up being an 
unsigned comparison and in this case, the int value was < 1.

-- Jeff J.

Dave Korn wrote:
> On 24 August 2007 17:16, François-Xavier Coudert wrote:
> 
>> Hi all,
>>
>> I think the following exhibits a bug in the lroundf() routine:
> 
>   Gahh, it's entirely likely, we keep finding cruft and corner cases in the fp
> math.  Cygwin's maths routines come from newlib; post redirected there and
> fups-to set.
> 
>  
>> $ cat a.c
>> #include <math.h>
>> #include <stdio.h>
>>
>> int main (void) {
>>   printf ("%d\n", (int) lroundf(0.7));
>> }
>>
>> $ gcc a.c && ./a.exe
>> 0
>>
>> The result of lroundf(0.7) should be 1, not 0. If lround() is used
>> instead of lroundf(), then it's working OK.
>>
>> I didn't file a PR in bugzilla because the bug report instructions say
>> to send a mail to this list, but I can open one if need be.
>>
>> Thanks,
>> FX
> 
>   Might get some spare time over the weekend to look at this with you, might not.
> Sorry I can't be more certain.
> 
>     cheers,
>       DaveK



More information about the Newlib mailing list