aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--math/cosf.c6
-rw-r--r--math/sincosf.c6
-rw-r--r--math/sincosf.h15
-rw-r--r--math/sincosf_data.c4
-rw-r--r--math/sinf.c6
5 files changed, 19 insertions, 18 deletions
diff --git a/math/cosf.c b/math/cosf.c
index de664ea..7d57d06 100644
--- a/math/cosf.c
+++ b/math/cosf.c
@@ -37,7 +37,7 @@ cosf (float y)
double x = y;
double s;
int n;
- sincos_t *p = &sincosf_table[0];
+ const sincos_t *p = &__sincosf_table[0];
if (abstop12 (y) < abstop12 (pio4))
{
@@ -56,7 +56,7 @@ cosf (float y)
s = p->sign[n & 3];
if (n & 2)
- p = &sincosf_table[1];
+ p = &__sincosf_table[1];
return sinf_poly (x * s, x * x, p, n ^ 1);
}
@@ -71,7 +71,7 @@ cosf (float y)
s = p->sign[(n + sign) & 3];
if ((n + sign) & 2)
- p = &sincosf_table[1];
+ p = &__sincosf_table[1];
return sinf_poly (x * s, x * x, p, n ^ 1);
}
diff --git a/math/sincosf.c b/math/sincosf.c
index 2363a42..5b13d72 100644
--- a/math/sincosf.c
+++ b/math/sincosf.c
@@ -37,7 +37,7 @@ sincosf (float y, float *sinp, float *cosp)
double x = y;
double s;
int n;
- sincos_t *p = &sincosf_table[0];
+ const sincos_t *p = &__sincosf_table[0];
if (abstop12 (y) < abstop12 (pio4))
{
@@ -63,7 +63,7 @@ sincosf (float y, float *sinp, float *cosp)
s = p->sign[n & 3];
if (n & 2)
- p = &sincosf_table[1];
+ p = &__sincosf_table[1];
sincosf_poly (x * s, x * x, p, n, sinp, cosp);
}
@@ -78,7 +78,7 @@ sincosf (float y, float *sinp, float *cosp)
s = p->sign[(n + sign) & 3];
if ((n + sign) & 2)
- p = &sincosf_table[1];
+ p = &__sincosf_table[1];
sincosf_poly (x * s, x * x, p, n, sinp, cosp);
}
diff --git a/math/sincosf.h b/math/sincosf.h
index 1e59d9f..1dd50e2 100644
--- a/math/sincosf.h
+++ b/math/sincosf.h
@@ -26,15 +26,15 @@ static const double pi64 = 0x1.921FB54442D18p-62;
/* PI / 4. */
static const double pio4 = 0x1.921FB54442D18p-1;
-typedef const struct
+typedef struct
{
double sign[4];
double hpi_inv, hpi, c0, c1, c2, c3, c4, s1, s2, s3;
} sincos_t;
-extern sincos_t sincosf_table[2] HIDDEN;
+extern const sincos_t __sincosf_table[2] HIDDEN;
-extern const uint32_t inv_pio4[] HIDDEN;
+extern const uint32_t __inv_pio4[] HIDDEN;
/* abstop12 assumes floating point reinterpret is fast by default.
If floating point comparisons are faster, define PREFER_FLOAT_COMPARISON. */
@@ -56,7 +56,8 @@ abstop12 (float x)
polynomial P and store the results in SINP and COSP. N is the quadrant,
if odd the cosine and sine polynomials are swapped. */
static inline void
-sincosf_poly (double x, double x2, sincos_t *p, int n, float *sinp, float *cosp)
+sincosf_poly (double x, double x2, const sincos_t *p, int n, float *sinp,
+ float *cosp)
{
double x3, x4, x5, x6, s, c, c1, c2, s1;
@@ -84,7 +85,7 @@ sincosf_poly (double x, double x2, sincos_t *p, int n, float *sinp, float *cosp)
/* Return the sine of inputs X and X2 (X squared) using the polynomial P.
N is the quadrant, and if odd the cosine polynomial is used. */
static inline float
-sinf_poly (double x, double x2, sincos_t *p, int n)
+sinf_poly (double x, double x2, const sincos_t *p, int n)
{
double x3, x4, x6, x7, s, c, c1, c2, s1;
@@ -119,7 +120,7 @@ sinf_poly (double x, double x2, sincos_t *p, int n)
Use round/lround if inlined, otherwise convert to int. To avoid inaccuracies
introduced by truncating negative values, compute the quadrant * 2^24. */
static inline double
-reduce_fast (double x, sincos_t *p, int *np)
+reduce_fast (double x, const sincos_t *p, int *np)
{
double r;
#if TOINT_INTRINSICS
@@ -144,7 +145,7 @@ reduce_fast (double x, sincos_t *p, int *np)
static inline double
reduce_large (uint32_t xi, int *np)
{
- const uint32_t *arr = &inv_pio4[(xi >> 26) & 15];
+ const uint32_t *arr = &__inv_pio4[(xi >> 26) & 15];
int shift = (xi >> 23) & 7;
uint64_t n, res0, res1, res2;
diff --git a/math/sincosf_data.c b/math/sincosf_data.c
index ee6aeb9..deaed1b 100644
--- a/math/sincosf_data.c
+++ b/math/sincosf_data.c
@@ -26,7 +26,7 @@
/* The constants and polynomials for sine and cosine. The 2nd entry
computes -cos (x) rather than cos (x) to get negation for free. */
-sincos_t sincosf_table[2] =
+const sincos_t __sincosf_table[2] =
{
{
{ 1.0, -1.0, -1.0, 1.0 },
@@ -66,7 +66,7 @@ sincos_t sincosf_table[2] =
/* Table with 4/PI to 192 bit precision. To avoid unaligned accesses
only 8 new bits are added per entry, making the table 4 times larger. */
-const uint32_t inv_pio4[24] =
+const uint32_t __inv_pio4[24] =
{
0xa2, 0xa2f9, 0xa2f983, 0xa2f9836e,
0xf9836e4e, 0x836e4e44, 0x6e4e4415, 0x4e441529,
diff --git a/math/sinf.c b/math/sinf.c
index 8c6e366..5369d50 100644
--- a/math/sinf.c
+++ b/math/sinf.c
@@ -36,7 +36,7 @@ sinf (float y)
double x = y;
double s;
int n;
- sincos_t *p = &sincosf_table[0];
+ const sincos_t *p = &__sincosf_table[0];
if (abstop12 (y) < abstop12 (pio4))
{
@@ -60,7 +60,7 @@ sinf (float y)
s = p->sign[n & 3];
if (n & 2)
- p = &sincosf_table[1];
+ p = &__sincosf_table[1];
return sinf_poly (x * s, x * x, p, n);
}
@@ -75,7 +75,7 @@ sinf (float y)
s = p->sign[(n + sign) & 3];
if ((n + sign) & 2)
- p = &sincosf_table[1];
+ p = &__sincosf_table[1];
return sinf_poly (x * s, x * x, p, n);
}