View | Details | Raw Unified | Return to bug 229501 | Differences between
and this patch

Collapse All | Expand All

(-)src/e_j0.c (-5 / +6 lines)
Lines 80-86 Link Here
80
S03  =  5.13546550207318111446e-07, /* 0x3EA13B54, 0xCE84D5A9 */
80
S03  =  5.13546550207318111446e-07, /* 0x3EA13B54, 0xCE84D5A9 */
81
S04  =  1.16614003333790000205e-09; /* 0x3E1408BC, 0xF4745D8F */
81
S04  =  1.16614003333790000205e-09; /* 0x3E1408BC, 0xF4745D8F */
82
82
83
static const double zero = 0.0;
83
static const double zero = 0, qrtr = 0.25;
84
84
85
double
85
double
86
__ieee754_j0(double x)
86
__ieee754_j0(double x)
Lines 97-103 Link Here
97
		c = cos(x);
97
		c = cos(x);
98
		ss = s-c;
98
		ss = s-c;
99
		cc = s+c;
99
		cc = s+c;
100
		if(ix<0x7fe00000) {  /* make sure x+x not overflow */
100
		if(ix<0x7fe00000) {  /* Make sure x+x does not overflow. */
101
		    z = -cos(x+x);
101
		    z = -cos(x+x);
102
		    if ((s*c)<zero) cc = z/ss;
102
		    if ((s*c)<zero) cc = z/ss;
103
		    else 	    ss = z/cc;
103
		    else 	    ss = z/cc;
Lines 123-131 Link Here
123
	r =  z*(R02+z*(R03+z*(R04+z*R05)));
123
	r =  z*(R02+z*(R03+z*(R04+z*R05)));
124
	s =  one+z*(S01+z*(S02+z*(S03+z*S04)));
124
	s =  one+z*(S01+z*(S02+z*(S03+z*S04)));
125
	if(ix < 0x3FF00000) {	/* |x| < 1.00 */
125
	if(ix < 0x3FF00000) {	/* |x| < 1.00 */
126
	    return one + z*(-0.25+(r/s));
126
	    return one + z*((r/s)-qrtr);
127
	} else {
127
	} else {
128
	    u = 0.5*x;
128
	    u = x/2;
129
	    return((one+u)*(one-u)+z*(r/s));
129
	    return((one+u)*(one-u)+z*(r/s));
130
	}
130
	}
131
}
131
}
Lines 374-379 Link Here
374
static __inline double
374
static __inline double
375
qzero(double x)
375
qzero(double x)
376
{
376
{
377
	static const double eighth = 0.125;
377
	const double *p,*q;
378
	const double *p,*q;
378
	double s,r,z;
379
	double s,r,z;
379
	int32_t ix;
380
	int32_t ix;
Lines 386-390 Link Here
386
	z = one/(x*x);
387
	z = one/(x*x);
387
	r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
388
	r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
388
	s = one+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*(q[4]+z*q[5])))));
389
	s = one+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*(q[4]+z*q[5])))));
389
	return (-.125 + r/s)/x;
390
	return (r/s-eighth)/x;
390
}
391
}
(-)src/e_j0f.c (-5 / +6 lines)
Lines 42-48 Link Here
42
S03  =  5.1354652442e-07, /* 0x3509daa6 */
42
S03  =  5.1354652442e-07, /* 0x3509daa6 */
43
S04  =  1.1661400734e-09; /* 0x30a045e8 */
43
S04  =  1.1661400734e-09; /* 0x30a045e8 */
44
44
45
static const float zero = 0.0;
45
static const float zero = 0, qrtr = 0.25;
46
46
47
float
47
float
48
__ieee754_j0f(float x)
48
__ieee754_j0f(float x)
Lines 59-65 Link Here
59
		c = cosf(x);
59
		c = cosf(x);
60
		ss = s-c;
60
		ss = s-c;
61
		cc = s+c;
61
		cc = s+c;
62
		if(ix<0x7f000000) {  /* make sure x+x not overflow */
62
		if(ix<0x7f000000) {  /* Make sure x+x does not overflow. */
63
		    z = -cosf(x+x);
63
		    z = -cosf(x+x);
64
		    if ((s*c)<zero) cc = z/ss;
64
		    if ((s*c)<zero) cc = z/ss;
65
		    else 	    ss = z/cc;
65
		    else 	    ss = z/cc;
Lines 85-93 Link Here
85
	r =  z*(R02+z*(R03+z*(R04+z*R05)));
85
	r =  z*(R02+z*(R03+z*(R04+z*R05)));
86
	s =  one+z*(S01+z*(S02+z*(S03+z*S04)));
86
	s =  one+z*(S01+z*(S02+z*(S03+z*S04)));
87
	if(ix < 0x3F800000) {	/* |x| < 1.00 */
87
	if(ix < 0x3F800000) {	/* |x| < 1.00 */
88
	    return one + z*((float)-0.25+(r/s));
88
	    return one + z*((r/s)-qrtr);
89
	} else {
89
	} else {
90
	    u = (float)0.5*x;
90
	    u = x/2;
91
	    return((one+u)*(one-u)+z*(r/s));
91
	    return((one+u)*(one-u)+z*(r/s));
92
	}
92
	}
93
}
93
}
Lines 328-333 Link Here
328
static __inline float
328
static __inline float
329
qzerof(float x)
329
qzerof(float x)
330
{
330
{
331
	static const float eighth = 0.125;
331
	const float *p,*q;
332
	const float *p,*q;
332
	float s,r,z;
333
	float s,r,z;
333
	int32_t ix;
334
	int32_t ix;
Lines 340-344 Link Here
340
	z = one/(x*x);
341
	z = one/(x*x);
341
	r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
342
	r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
342
	s = one+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*(q[4]+z*q[5])))));
343
	s = one+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*(q[4]+z*q[5])))));
343
	return (-(float).125 + r/s)/x;
344
	return (r/s-eighth)/x;
344
}
345
}

Return to bug 229501