]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
sysdeps: Simplify sin Taylor Series calculation
authorAkila Welihinda <akilawelihinda@ucla.edu>
Sun, 12 Dec 2021 18:35:03 +0000 (10:35 -0800)
committerPaul Zimmermann <Paul.Zimmermann@inria.fr>
Mon, 13 Dec 2021 14:31:05 +0000 (15:31 +0100)
The macro TAYLOR_SIN adds the term `-0.5*da*a^2 + da` in hopes
of regaining some precision as a function of da. However the
comment says we add the term `-0.5*da*a^2 + 0.5*da` which is
different. This fix updates the comment to reflect the
code and also simplifies the calculation by replacing `a` with `x`
because they always have the same value.

Signed-off-by: Akila Welihinda <akilawelihinda@ucla.edu>
Reviewed-by: Paul Zimmermann <Paul.Zimmermann@inria.fr>
sysdeps/ieee754/dbl-64/s_sin.c

index 7d89e3dfc271bfc21d5ac2a2a38b133c532579f4..a412c3642dbaecf5b58a1960ca8847fa98e694ee 100644 (file)
 #define POLYNOMIAL(xx) (POLYNOMIAL2 (xx) + s1)
 
 /* The computed polynomial is a variation of the Taylor series expansion for
-   sin(a):
+   sin(x):
 
-   a - a^3/3! + a^5/5! - a^7/7! + a^9/9! + (1 - a^2) * da / 2
+   x - x^3/3! + x^5/5! - x^7/7! + x^9/9! - dx*x^2/2 + dx
 
    The constants s1, s2, s3, etc. are pre-computed values of 1/3!, 1/5! and so
    on.  The result is returned to LHS.  */
-#define TAYLOR_SIN(xx, a, da) \
+#define TAYLOR_SIN(xx, x, dx) \
 ({                                                                           \
-  double t = ((POLYNOMIAL (xx)  * (a) - 0.5 * (da))  * (xx) + (da));         \
-  double res = (a) + t;                                                              \
+  double t = ((POLYNOMIAL (xx)  * (x) - 0.5 * (dx))  * (xx) + (dx));         \
+  double res = (x) + t;                                                              \
   res;                                                                       \
 })