math: fix underflow in exp*.c and long double handling in exp2l
authorSzabolcs Nagy <nsz@port70.net>
Wed, 4 Sep 2013 07:51:11 +0000 (07:51 +0000)
committerSzabolcs Nagy <nsz@port70.net>
Thu, 5 Sep 2013 11:30:08 +0000 (11:30 +0000)
commit39c910fb061114e6aa5c3bf2c94b1d7262d62221
tree5ca9b82746e8ac224f93dcda1b8d19f95b68eda2
parentea9bb95a5b36c0a3d2ed8fb03808745b406c2633
math: fix underflow in exp*.c and long double handling in exp2l

* don't care about inexact flag
* use double_t and float_t (faster, smaller, more precise on x86)
* exp: underflow when result is zero or subnormal and not -inf
* exp2: underflow when result is zero or subnormal and not exact
* expm1: underflow when result is zero or subnormal
* expl: don't underflow on -inf
* exp2: fix incorrect comment
* expm1: simplify special case handling and overflow properly
* expm1: cleanup final scaling and fix negative left shift ub (twopk)
src/math/exp.c
src/math/exp2.c
src/math/exp2f.c
src/math/exp2l.c
src/math/expf.c
src/math/expl.c
src/math/expm1.c
src/math/expm1f.c