This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix powf overflow handling in non-nearest rounding mode


On Dec 10 15:04, Szabolcs Nagy wrote:
> Follows the fix in https://github.com/ARM-software/optimized-routines

> From 8ff59d2f4e0209f03c30462e9319baf4c6ba79f7 Mon Sep 17 00:00:00 2001
> From: Szabolcs Nagy <szabolcs.nagy@arm.com>
> Date: Mon, 10 Dec 2018 14:40:01 +0000
> Subject: [PATCH] Fix powf overflow handling in non-nearest rounding mode
> 
> The threshold value at which powf overflows depends on the rounding mode
> and the current check did not take this into account. So when the result
> was rounded away from zero it could become infinity without setting
> errno to ERANGE.
> 
> Example: pow(0x1.7ac7cp+5, 23) is 0x1.fffffep+127 + 0.1633ulp
> 
> If the result goes above 0x1.fffffep+127 + 0.5ulp then errno is set,
> which is fine in nearest rounding mode, but
> 
>   powf(0x1.7ac7cp+5, 23) is inf in upward rounding mode
>   powf(-0x1.7ac7cp+5, 23) is -inf in downward rounding mode
> 
> and the previous implementation did not set errno in these cases.
> 
> The fix tries to avoid affecting the common code path or calling a
> function that may introduce a stack frame, so float arithmetics is used
> to check the rounding mode and the threshold is selected accordingly.
> ---
>  newlib/libm/common/sf_pow.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)

Pushed.


Thanks,
Corinna

-- 
Corinna Vinschen
Cygwin Maintainer
Red Hat

Attachment: signature.asc
Description: PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]