math: fix i386/expl.s with more precise x*log2e
authorSzabolcs Nagy <nsz@port70.net>
Fri, 14 Dec 2012 17:29:56 +0000 (18:29 +0100)
committerSzabolcs Nagy <nsz@port70.net>
Fri, 14 Dec 2012 17:29:56 +0000 (18:29 +0100)
commita8f73bb1a685dd7d67669c6f6ceb255cfa967790
tree6b6a17fee9e78b45247971b839d9ea9566765005
parent934609442339edb21a33532ccefac8b78e6305f2
math: fix i386/expl.s with more precise x*log2e

with naive exp2l(x*log2e) the last 12bits of the result was incorrect
for x with large absolute value

with hi + lo = x*log2e is caluclated to 128 bits precision and then
  expl(x) = exp2l(hi) + exp2l(hi) * f2xm1(lo)
this gives <1.5ulp measured error everywhere in nearest rounding mode
src/math/i386/exp.s
src/math/i386/expl.s