summaryrefslogtreecommitdiff
path: root/lib/msun
diff options
context:
space:
mode:
authorPeter Jeremy <peterj@FreeBSD.org>2019-02-10 08:46:07 +0000
committerPeter Jeremy <peterj@FreeBSD.org>2019-02-10 08:46:07 +0000
commit885bfcda11a9ab4db811c13551aaa533dc79b8ab (patch)
treeb6b715b3f407288b3c44885aa7e95a48035212c0 /lib/msun
parentf1784b3ec51da7ffeccbf349668ebffb7ff76aad (diff)
downloadsrc-test2-885bfcda11a9ab4db811c13551aaa533dc79b8ab.tar.gz
src-test2-885bfcda11a9ab4db811c13551aaa533dc79b8ab.zip
Notes
Diffstat (limited to 'lib/msun')
-rw-r--r--lib/msun/src/e_j0.c6
-rw-r--r--lib/msun/src/e_j0f.c6
-rw-r--r--lib/msun/src/e_j1.c6
-rw-r--r--lib/msun/src/e_j1f.c6
-rw-r--r--lib/msun/src/e_jn.c22
5 files changed, 20 insertions, 26 deletions
diff --git a/lib/msun/src/e_j0.c b/lib/msun/src/e_j0.c
index 184586aa8746..5d862b6f834d 100644
--- a/lib/msun/src/e_j0.c
+++ b/lib/msun/src/e_j0.c
@@ -93,8 +93,7 @@ __ieee754_j0(double x)
if(ix>=0x7ff00000) return one/(x*x);
x = fabs(x);
if(ix >= 0x40000000) { /* |x| >= 2.0 */
- s = sin(x);
- c = cos(x);
+ sincos(x, &s, &c);
ss = s-c;
cc = s+c;
if(ix<0x7fe00000) { /* Make sure x+x does not overflow. */
@@ -173,8 +172,7 @@ __ieee754_y0(double x)
* sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
* to compute the worse one.
*/
- s = sin(x);
- c = cos(x);
+ sincos(x, &s, &c);
ss = s-c;
cc = s+c;
/*
diff --git a/lib/msun/src/e_j0f.c b/lib/msun/src/e_j0f.c
index c4bf9e6e6dbf..1c5ef4da1b49 100644
--- a/lib/msun/src/e_j0f.c
+++ b/lib/msun/src/e_j0f.c
@@ -55,8 +55,7 @@ __ieee754_j0f(float x)
if(ix>=0x7f800000) return one/(x*x);
x = fabsf(x);
if(ix >= 0x40000000) { /* |x| >= 2.0 */
- s = sinf(x);
- c = cosf(x);
+ sincosf(x, &s, &c);
ss = s-c;
cc = s+c;
if(ix<0x7f000000) { /* Make sure x+x does not overflow. */
@@ -128,8 +127,7 @@ __ieee754_y0f(float x)
* sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
* to compute the worse one.
*/
- s = sinf(x);
- c = cosf(x);
+ sincosf(x, &s, &c);
ss = s-c;
cc = s+c;
/*
diff --git a/lib/msun/src/e_j1.c b/lib/msun/src/e_j1.c
index ca10f92b2822..fb4462738368 100644
--- a/lib/msun/src/e_j1.c
+++ b/lib/msun/src/e_j1.c
@@ -94,8 +94,7 @@ __ieee754_j1(double x)
if(ix>=0x7ff00000) return one/x;
y = fabs(x);
if(ix >= 0x40000000) { /* |x| >= 2.0 */
- s = sin(y);
- c = cos(y);
+ sincos(y, &s, &c);
ss = -s-c;
cc = s-c;
if(ix<0x7fe00000) { /* make sure y+y not overflow */
@@ -159,8 +158,7 @@ __ieee754_y1(double x)
/* y1(x<0) = NaN and raise invalid exception. */
if(hx<0) return vzero/vzero;
if(ix >= 0x40000000) { /* |x| >= 2.0 */
- s = sin(x);
- c = cos(x);
+ sincos(x, &s, &c);
ss = -s-c;
cc = s-c;
if(ix<0x7fe00000) { /* make sure x+x not overflow */
diff --git a/lib/msun/src/e_j1f.c b/lib/msun/src/e_j1f.c
index 5265ec4c0adb..c6c45c107afa 100644
--- a/lib/msun/src/e_j1f.c
+++ b/lib/msun/src/e_j1f.c
@@ -56,8 +56,7 @@ __ieee754_j1f(float x)
if(ix>=0x7f800000) return one/x;
y = fabsf(x);
if(ix >= 0x40000000) { /* |x| >= 2.0 */
- s = sinf(y);
- c = cosf(y);
+ sincosf(y, &s, &c);
ss = -s-c;
cc = s-c;
if(ix<0x7f000000) { /* make sure y+y not overflow */
@@ -114,8 +113,7 @@ __ieee754_y1f(float x)
if(ix==0) return -one/vzero;
if(hx<0) return vzero/vzero;
if(ix >= 0x40000000) { /* |x| >= 2.0 */
- s = sinf(x);
- c = cosf(x);
+ sincosf(x, &s, &c);
ss = -s-c;
cc = s-c;
if(ix<0x7f000000) { /* make sure x+x not overflow */
diff --git a/lib/msun/src/e_jn.c b/lib/msun/src/e_jn.c
index 907b3d184b86..c7ba7da6567b 100644
--- a/lib/msun/src/e_jn.c
+++ b/lib/msun/src/e_jn.c
@@ -54,7 +54,7 @@ double
__ieee754_jn(int n, double x)
{
int32_t i,hx,ix,lx, sgn;
- double a, b, temp, di;
+ double a, b, c, s, temp, di;
double z, w;
/* J(-n,x) = (-1)^n * J(n, x), J(n, -x) = (-1)^n * J(n, x)
@@ -91,11 +91,12 @@ __ieee754_jn(int n, double x)
* 2 -s+c -c-s
* 3 s+c c-s
*/
+ sincos(x, &s, &c);
switch(n&3) {
- case 0: temp = cos(x)+sin(x); break;
- case 1: temp = -cos(x)+sin(x); break;
- case 2: temp = -cos(x)-sin(x); break;
- case 3: temp = cos(x)-sin(x); break;
+ case 0: temp = c+s; break;
+ case 1: temp = -c+s; break;
+ case 2: temp = -c-s; break;
+ case 3: temp = c-s; break;
}
b = invsqrtpi*temp/sqrt(x);
} else {
@@ -216,7 +217,7 @@ __ieee754_yn(int n, double x)
{
int32_t i,hx,ix,lx;
int32_t sign;
- double a, b, temp;
+ double a, b, c, s, temp;
EXTRACT_WORDS(hx,lx,x);
ix = 0x7fffffff&hx;
@@ -248,11 +249,12 @@ __ieee754_yn(int n, double x)
* 2 -s+c -c-s
* 3 s+c c-s
*/
+ sincos(x, &s, &c);
switch(n&3) {
- case 0: temp = sin(x)-cos(x); break;
- case 1: temp = -sin(x)-cos(x); break;
- case 2: temp = -sin(x)+cos(x); break;
- case 3: temp = sin(x)+cos(x); break;
+ case 0: temp = s-c; break;
+ case 1: temp = -s-c; break;
+ case 2: temp = -s+c; break;
+ case 3: temp = s+c; break;
}
b = invsqrtpi*temp/sqrt(x);
} else {