diff options
Diffstat (limited to 'math/w_powl.c')
-rw-r--r-- | math/w_powl.c | 24 |
1 files changed, 5 insertions, 19 deletions
diff --git a/math/w_powl.c b/math/w_powl.c index be02e1eacc..9b86651f55 100644 --- a/math/w_powl.c +++ b/math/w_powl.c @@ -29,13 +29,7 @@ __powl (long double x, long double y) { if (_LIB_VERSION != _IEEE_) { - if (isnan (x)) - { - if (y == 0.0L) - /* pow(NaN,0.0) */ - return __kernel_standard_l (x, y, 242); - } - else if (isfinite (x) && isfinite (y)) + if (isfinite (x) && isfinite (y)) { if (isnan (z)) /* pow neg**non-int */ @@ -55,19 +49,11 @@ __powl (long double x, long double y) } } } - else if (__builtin_expect (z == 0.0L, 0) && isfinite (x) && isfinite (y) + else if (__builtin_expect (z == 0.0L, 0) + && isfinite (x) && x != 0 && isfinite (y) && _LIB_VERSION != _IEEE_) - { - if (x == 0.0L) - { - if (y == 0.0L) - /* pow(0.0,0.0) */ - return __kernel_standard_l (x, y, 220); - } - else - /* pow underflow */ - return __kernel_standard_l (x, y, 222); - } + /* pow underflow */ + return __kernel_standard_l (x, y, 222); return z; } |