Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/mingw/mingwex/math/log1p.S')
-rw-r--r--winsup/mingw/mingwex/math/log1p.S47
1 files changed, 47 insertions, 0 deletions
diff --git a/winsup/mingw/mingwex/math/log1p.S b/winsup/mingw/mingwex/math/log1p.S
new file mode 100644
index 000000000..a38816cb3
--- /dev/null
+++ b/winsup/mingw/mingwex/math/log1p.S
@@ -0,0 +1,47 @@
+/*
+ * Written by J.T. Conklin <jtc@netbsd.org>.
+ * Public domain.
+ * Removed header file dependency for use in libmingwex.a by
+ * Danny Smith <dannysmith@users.sourceforge.net>
+ */
+
+ .file "log1p.S"
+ .text
+ .align 4
+ /* The fyl2xp1 can only be used for values in
+ -1 + sqrt(2) / 2 <= x <= 1 - sqrt(2) / 2
+ 0.29 is a safe value.
+ */
+limit: .double 0.29
+one: .double 1.0
+/*
+ * Use the fyl2xp1 function when the argument is in the range -0.29 to 0.29,
+ * otherwise fyl2x with the needed extra computation.
+ */
+.globl _log1p;
+ .def _log1p; .scl 2; .type 32; .endef
+_log1p:
+ fldln2
+ fldl 4(%esp)
+ fxam
+ fnstsw
+ fld %st
+ sahf
+ jc 3f // in case x is NaN or ħInf
+
+4: fabs
+ fcompl limit
+ fnstsw
+ sahf
+ jc 2f
+ faddl one
+ fyl2x
+ ret
+
+2: fyl2xp1
+ ret
+
+3: jp 4b // in case x is ħInf
+ fstp %st(1)
+ fstp %st(1)
+ ret