math: fix 128bit long double inverse trigonometric functions
authorSzabolcs Nagy <nsz@port70.net>
Tue, 23 Aug 2016 19:47:53 +0000 (21:47 +0200)
committerRich Felker <dalias@aerifal.cx>
Tue, 30 Aug 2016 20:00:38 +0000 (16:00 -0400)
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

index ef7f4e1b79ebbe29bb80799e0876438504648466..48f83aaf8c7f8215766e2c902a38e6fbf32c8b9f 100644 (file)
@@ -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