diff options
author | Andreas Schwab <schwab@redhat.com> | 2009-10-19 21:23:15 -0700 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2009-10-19 21:23:15 -0700 |
commit | b7805d0ba8948fcf5e406bf52530d9aba99f5954 (patch) | |
tree | 4cf6a9d4462778f3813492393059d095bd91c17a /sysdeps/i386/fpu/s_expm1.S | |
parent | a0902db9fe8f4cfc6b0b0344558166f5b230b806 (diff) | |
download | glibc-b7805d0ba8948fcf5e406bf52530d9aba99f5954.tar.gz glibc-b7805d0ba8948fcf5e406bf52530d9aba99f5954.tar.xz glibc-b7805d0ba8948fcf5e406bf52530d9aba99f5954.zip |
Correct errno handling in expm1.
Diffstat (limited to 'sysdeps/i386/fpu/s_expm1.S')
-rw-r--r-- | sysdeps/i386/fpu/s_expm1.S | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sysdeps/i386/fpu/s_expm1.S b/sysdeps/i386/fpu/s_expm1.S index e761183639..c690a458f8 100644 --- a/sysdeps/i386/fpu/s_expm1.S +++ b/sysdeps/i386/fpu/s_expm1.S @@ -22,6 +22,7 @@ /* Using: e^x - 1 = 2^(x * log2(e)) - 1 */ +#include <sysdep.h> #include <machine/asm.h> #ifdef __ELF__ @@ -48,6 +49,11 @@ l2e: .tfloat 1.442695040888963407359924681002 .text ENTRY(__expm1) + movzwl 4+6(%esp), %eax + xorb $0x80, %ah // invert sign bit (now 1 is "positive") + cmpl $0xc086, %eax // is num >= 704? + jae HIDDEN_JUMPTARGET (__exp) + fldl 4(%esp) // x fxam // Is NaN or +-Inf? fstsw %ax |