**diff options**

author | Szabolcs Nagy <nsz@port70.net> | 2013-09-05 10:58:48 +0000 |
---|---|---|

committer | Szabolcs Nagy <nsz@port70.net> | 2013-09-05 11:30:09 +0000 |

commit | 07039ed8563b850624146c938ae201a1099d2f75 (patch) | |

tree | 2a751e8684596943be0bca4391289759b718f2b4 /dist | |

parent | 8dba5486288e719ed290cccefcd932ed32756d7c (diff) | |

download | musl-07039ed8563b850624146c938ae201a1099d2f75.tar.gz |

math: fix exp2l asm on x86 (raise underflow correctly)

there were two problems:
* omitted underflow on subnormal results: exp2l(-16383.5) was calculated
as sqrt(2)*2^-16384, the last bits of sqrt(2) are zero so the down scaling
does not underflow eventhough the result is in subnormal range
* spurious underflow for subnormal inputs: exp2l(0x1p-16400) was evaluated
as f2xm1(x)+1 and f2xm1 raised underflow (because inexact subnormal result)
the first issue is fixed by raising underflow manually if x is in
(-32768,-16382] and not integer (x-0x1p63+0x1p63 != x)
the second issue is fixed by treating x in (-0x1p64,0x1p64) specially
for these fixes the special case handling was completely rewritten

Diffstat (limited to 'dist')

0 files changed, 0 insertions, 0 deletions