aboutsummaryrefslogtreecommitdiff
path: root/pl/math/tanf_3u3.c
diff options
context:
space:
mode:
Diffstat (limited to 'pl/math/tanf_3u3.c')
-rw-r--r--pl/math/tanf_3u3.c18
1 files changed, 5 insertions, 13 deletions
diff --git a/pl/math/tanf_3u3.c b/pl/math/tanf_3u3.c
index 0b1617c..ec006dc 100644
--- a/pl/math/tanf_3u3.c
+++ b/pl/math/tanf_3u3.c
@@ -7,6 +7,7 @@
#include "math_config.h"
#include "pl_sig.h"
#include "pl_test.h"
+#include "pairwise_hornerf.h"
/* Useful constants. */
#define NegPio2_1 (-0x1.921fb6p+0f)
@@ -21,28 +22,19 @@
/* 2PI * 2^-64. */
#define Pio2p63 (0x1.921FB54442D18p-62)
-#define P __tanf_poly_data.poly_tan
-#define Q __tanf_poly_data.poly_cotan
+#define P(i) __tanf_poly_data.poly_tan[i]
+#define Q(i) __tanf_poly_data.poly_cotan[i]
static inline float
eval_P (float z)
{
- float z2 = z * z;
- float y_10 = fmaf (z, P[1], P[0]);
- float y_32 = fmaf (z, P[3], P[2]);
- float y_54 = fmaf (z, P[5], P[4]);
- float y_6_54 = fmaf (z2, P[6], y_54);
- float y_32_10 = fmaf (z2, y_32, y_10);
- float y = fmaf (z2, z2 * y_6_54, y_32_10);
- return y;
+ return PAIRWISE_HORNER_5 (z, z * z, P);
}
static inline float
eval_Q (float z)
{
- float z2 = z * z;
- float y = fmaf (z2, fmaf (z, Q[3], Q[2]), fmaf (z, Q[1], Q[0]));
- return y;
+ return PAIRWISE_HORNER_3 (z, z * z, Q);
}
/* Reduction of the input argument x using Cody-Waite approach, such that x = r