[CRT]
authorAleksandar Andrejevic <aandrejevic@reactos.org>
Sun, 22 Nov 2015 01:12:34 +0000 (01:12 +0000)
committerAleksandar Andrejevic <aandrejevic@reactos.org>
Sun, 22 Nov 2015 01:12:34 +0000 (01:12 +0000)
Check for positive and negative infinity in exp().

svn path=/trunk/; revision=69998

reactos/lib/sdk/crt/math/i386/exp_asm.s

index 3dd5be0..fe2e214 100644 (file)
@@ -11,6 +11,18 @@ _exp:
     mov ebp, esp
 
     fld qword ptr [ebp + 8]
     mov ebp, esp
 
     fld qword ptr [ebp + 8]
+    fxam
+    fstsw ax
+    fwait
+    sahf
+    jnp .not_inf
+    jnc .not_inf
+    test ah, 2
+    jz .done
+    fstp st
+    fldz
+    jmp .done
+.not_inf:
     fldl2e
     fmul st, st(1)
     fst st(1)
     fldl2e
     fmul st, st(1)
     fst st(1)
@@ -22,7 +34,7 @@ _exp:
     faddp st(1), st
     fscale
     fstp st(1)
     faddp st(1), st
     fscale
     fstp st(1)
-
+.done:
     pop ebp
     ret
 
     pop ebp
     ret