|
@@ -123,6 +123,23 @@ double attribute_hidden __ieee754_j0(double x)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * wrapper j0(double x)
|
|
|
|
+ */
|
|
|
|
+#ifndef _IEEE_LIBM
|
|
|
|
+double j0(double x)
|
|
|
|
+{
|
|
|
|
+ double z = __ieee754_j0(x);
|
|
|
|
+ if (_LIB_VERSION == _IEEE_ || isnan(x))
|
|
|
|
+ return z;
|
|
|
|
+ if (fabs(x) > X_TLOSS)
|
|
|
|
+ return __kernel_standard(x, x, 34); /* j0(|x|>X_TLOSS) */
|
|
|
|
+ return z;
|
|
|
|
+}
|
|
|
|
+#else
|
|
|
|
+strong_alias(__ieee754_j0, j0)
|
|
|
|
+#endif
|
|
|
|
+
|
|
static const double
|
|
static const double
|
|
u00 = -7.38042951086872317523e-02, /* 0xBFB2E4D6, 0x99CBD01F */
|
|
u00 = -7.38042951086872317523e-02, /* 0xBFB2E4D6, 0x99CBD01F */
|
|
u01 = 1.76666452509181115538e-01, /* 0x3FC69D01, 0x9DE9E3FC */
|
|
u01 = 1.76666452509181115538e-01, /* 0x3FC69D01, 0x9DE9E3FC */
|
|
@@ -188,6 +205,30 @@ double attribute_hidden __ieee754_y0(double x)
|
|
return(u/v + tpi*(__ieee754_j0(x)*__ieee754_log(x)));
|
|
return(u/v + tpi*(__ieee754_j0(x)*__ieee754_log(x)));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * wrapper y0(double x)
|
|
|
|
+ */
|
|
|
|
+#ifndef _IEEE_LIBM
|
|
|
|
+double y0(double x)
|
|
|
|
+{
|
|
|
|
+ double z = __ieee754_y0(x);
|
|
|
|
+ if (_LIB_VERSION == _IEEE_ || isnan(x))
|
|
|
|
+ return z;
|
|
|
|
+ if (x <= 0.0) {
|
|
|
|
+ if (x == 0.0) /* d= -one/(x-x); */
|
|
|
|
+ return __kernel_standard(x, x, 8);
|
|
|
|
+ /* d = zero/(x-x); */
|
|
|
|
+ return __kernel_standard(x, x, 9);
|
|
|
|
+ }
|
|
|
|
+ if (x > X_TLOSS)
|
|
|
|
+ return __kernel_standard(x, x, 35); /* y0(x>X_TLOSS) */
|
|
|
|
+ return z;
|
|
|
|
+}
|
|
|
|
+#else
|
|
|
|
+strong_alias(__ieee754_y0, y0)
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+
|
|
/* The asymptotic expansions of pzero is
|
|
/* The asymptotic expansions of pzero is
|
|
* 1 - 9/128 s^2 + 11025/98304 s^4 - ..., where s = 1/x.
|
|
* 1 - 9/128 s^2 + 11025/98304 s^4 - ..., where s = 1/x.
|
|
* For x >= 2, We approximate pzero by
|
|
* For x >= 2, We approximate pzero by
|
|
@@ -261,7 +302,7 @@ static const double pS2[5] = {
|
|
1.46576176948256193810e+01, /* 0x402D50B3, 0x44391809 */
|
|
1.46576176948256193810e+01, /* 0x402D50B3, 0x44391809 */
|
|
};
|
|
};
|
|
|
|
|
|
- static double pzero(double x)
|
|
|
|
|
|
+static double pzero(double x)
|
|
{
|
|
{
|
|
const double *p = 0,*q = 0;
|
|
const double *p = 0,*q = 0;
|
|
double z,r,s;
|
|
double z,r,s;
|
|
@@ -356,7 +397,7 @@ static const double qS2[6] = {
|
|
-5.31095493882666946917e+00, /* 0xC0153E6A, 0xF8B32931 */
|
|
-5.31095493882666946917e+00, /* 0xC0153E6A, 0xF8B32931 */
|
|
};
|
|
};
|
|
|
|
|
|
- static double qzero(double x)
|
|
|
|
|
|
+static double qzero(double x)
|
|
{
|
|
{
|
|
const double *p=0,*q=0;
|
|
const double *p=0,*q=0;
|
|
double s,r,z;
|
|
double s,r,z;
|