aboutsummaryrefslogtreecommitdiffstats
path: root/main/musl/0002-math-fix-128bit-long-double-inverse-trigonometric-fu.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/musl/0002-math-fix-128bit-long-double-inverse-trigonometric-fu.patch')
-rw-r--r--main/musl/0002-math-fix-128bit-long-double-inverse-trigonometric-fu.patch32
1 files changed, 32 insertions, 0 deletions
diff --git a/main/musl/0002-math-fix-128bit-long-double-inverse-trigonometric-fu.patch b/main/musl/0002-math-fix-128bit-long-double-inverse-trigonometric-fu.patch
new file mode 100644
index 0000000000..ea9d1f19eb
--- /dev/null
+++ b/main/musl/0002-math-fix-128bit-long-double-inverse-trigonometric-fu.patch
@@ -0,0 +1,32 @@
+From 5b5db97f7e80bde2678aed72336a28375e800354 Mon Sep 17 00:00:00 2001
+From: Szabolcs Nagy <nsz@port70.net>
+Date: Tue, 23 Aug 2016 21:47:53 +0200
+Subject: [PATCH 2/2] math: fix 128bit long double inverse trigonometric
+ functions
+
+there was a copy paste error that could cause large ulp errors
+in atan2l, atanl, asinl and acosl on aarch64, mips64 and mipsn32.
+
+(the implementation is from freebsd fdlibm, but the tail end
+of the polynomial was wrong. 128 bit long double functions
+are not yet tested so this went undetected.)
+---
+ src/math/__invtrigl.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/math/__invtrigl.c b/src/math/__invtrigl.c
+index ef7f4e1..48f83aa 100644
+--- a/src/math/__invtrigl.c
++++ b/src/math/__invtrigl.c
+@@ -57,7 +57,7 @@ long double __invtrigl_R(long double z)
+ {
+ long double p, q;
+ p = z*(pS0+z*(pS1+z*(pS2+z*(pS3+z*(pS4+z*(pS5+z*(pS6+z*(pS7+z*(pS8+z*pS9)))))))));
+- q = 1.0+z*(qS1+z*(qS2+z*(qS3+z*(qS4+z*(qS5+z*(pS6+z*(pS7+z*(pS8+z*pS9))))))));
++ q = 1.0+z*(qS1+z*(qS2+z*(qS3+z*(qS4+z*(qS5+z*(qS6+z*(qS7+z*(qS8+z*qS9))))))));
+ return p/q;
+ }
+ #endif
+--
+2.10.1
+