[PATCH] Don't call double rint from float powf.

Jim Wilson jimw@sifive.com
Tue Dec 12 18:14:00 GMT 2017


On 12/12/2017 04:48 AM, Corinna Vinschen wrote:
> On Dec 11 19:37, Craig Howland wrote:
>>> +		       if(x<0.0&&rintf(y)!=y) exc.retval = -HUGE_VAL;
>>>    		    }
>>>    		    if (_LIB_VERSION == _POSIX_)
>>>    		        errno = ERANGE;
>> To be most rigorous, "0.0" on the same lines as the rintf() should be "0.0F"
>> (as otherwise the comparison strictly should be done in double).  (Not
>> addressing the exact change you are making, but is the same class of fix and
>> are on the same line of source code.)
> 
> Also, HUGE_VAL is double, so it should better be replaced with HUGE_VALF.

The "struct exception" type uses doubles, so this has to be HUGE_VAL.

Even with my two patches, we still have extendsfdf2 and truncdfsf2 
calls, but those will be much harder to get rid of, as we can't change 
struct exception without breaking matherr.  All of the other soft-float 
calls are gone though.

Jim



More information about the Newlib mailing list