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

Collapse All | Expand All

(-)b/lib/msun/src/e_acosf.c (-7 / +13 lines)
Lines 22-32 pi = 3.1415925026e+00, /* 0x40490fda */ Link Here
22
pio2_hi =  1.5707962513e+00; /* 0x3fc90fda */
22
pio2_hi =  1.5707962513e+00; /* 0x3fc90fda */
23
static volatile float
23
static volatile float
24
pio2_lo =  7.5497894159e-08; /* 0x33a22168 */
24
pio2_lo =  7.5497894159e-08; /* 0x33a22168 */
25
26
/*
27
 * The coefficients for the rational approximatione were generated over
28
 *  0x1p-12f <= x <= 0.5f.  The maximum error satisfies log2(e) < -30.084.
29
 */
25
static const float
30
static const float
26
pS0 =  1.6666586697e-01,
31
pS0 =  1.66666672e-01f, /* 0x3e2aaaab */
27
pS1 = -4.2743422091e-02,
32
pS1 = -1.19510300e-01f, /* 0xbdf4c1d1 */
28
pS2 = -8.6563630030e-03,
33
pS2 =  5.47002675e-03f, /* 0x3bb33de9 */
29
qS1 = -7.0662963390e-01;
34
qS1 = -1.16706085e+00f, /* 0xbf956240 */
35
qS2 =  2.90115148e-01f; /* 0x3e9489f9 */
30
36
31
float
37
float
32
acosf(float x)
38
acosf(float x)
Lines 46-58 acosf(float x) Link Here
46
	    if(ix<=0x32800000) return pio2_hi+pio2_lo;/*if|x|<2**-26*/
52
	    if(ix<=0x32800000) return pio2_hi+pio2_lo;/*if|x|<2**-26*/
47
	    z = x*x;
53
	    z = x*x;
48
	    p = z*(pS0+z*(pS1+z*pS2));
54
	    p = z*(pS0+z*(pS1+z*pS2));
49
	    q = one+z*qS1;
55
	    q = one+z*(qS1+z*qS2);
50
	    r = p/q;
56
	    r = p/q;
51
	    return pio2_hi - (x - (pio2_lo-x*r));
57
	    return pio2_hi - (x - (pio2_lo-x*r));
52
	} else  if (hx<0) {		/* x < -0.5 */
58
	} else  if (hx<0) {		/* x < -0.5 */
53
	    z = (one+x)*(float)0.5;
59
	    z = (one+x)*(float)0.5;
54
	    p = z*(pS0+z*(pS1+z*pS2));
60
	    p = z*(pS0+z*(pS1+z*pS2));
55
	    q = one+z*qS1;
61
	    q = one+z*(qS1+z*qS2);
56
	    s = sqrtf(z);
62
	    s = sqrtf(z);
57
	    r = p/q;
63
	    r = p/q;
58
	    w = r*s-pio2_lo;
64
	    w = r*s-pio2_lo;
Lines 66-72 acosf(float x) Link Here
66
	    SET_FLOAT_WORD(df,idf&0xfffff000);
72
	    SET_FLOAT_WORD(df,idf&0xfffff000);
67
	    c  = (z-df*df)/(s+df);
73
	    c  = (z-df*df)/(s+df);
68
	    p = z*(pS0+z*(pS1+z*pS2));
74
	    p = z*(pS0+z*(pS1+z*pS2));
69
	    q = one+z*qS1;
75
	    q = one+z*(qS1+z*qS2);
70
	    r = p/q;
76
	    r = p/q;
71
	    w = r*s+c;
77
	    w = r*s+c;
72
	    return (float)2.0*(df+w);
78
	    return (float)2.0*(df+w);
(-)b/lib/msun/src/e_asinf.c (-8 / +14 lines)
Lines 18-29 Link Here
18
18
19
static const float
19
static const float
20
one =  1.0000000000e+00, /* 0x3F800000 */
20
one =  1.0000000000e+00, /* 0x3F800000 */
21
huge =  1.000e+30,
21
huge =  1.000e+30;
22
	/* coefficient for R(x^2) */
22
23
pS0 =  1.6666586697e-01,
23
/*
24
pS1 = -4.2743422091e-02,
24
 * The coefficients for the rational approximatione were generated over
25
pS2 = -8.6563630030e-03,
25
 *  0x1p-12f <= x <= 0.5f.  The maximum error satisfies log2(e) < -30.084.
26
qS1 = -7.0662963390e-01;
26
 */
27
static const float
28
pS0 =  1.66666672e-01f, /* 0x3e2aaaab */
29
pS1 = -1.19510300e-01f, /* 0xbdf4c1d1 */
30
pS2 =  5.47002675e-03f, /* 0x3bb33de9 */
31
qS1 = -1.16706085e+00f, /* 0xbf956240 */
32
qS2 =  2.90115148e-01f; /* 0x3e9489f9 */
27
33
28
static const double
34
static const double
29
pio2 =  1.570796326794896558e+00;
35
pio2 =  1.570796326794896558e+00;
Lines 46-52 asinf(float x) Link Here
46
	    }
52
	    }
47
	    t = x*x;
53
	    t = x*x;
48
	    p = t*(pS0+t*(pS1+t*pS2));
54
	    p = t*(pS0+t*(pS1+t*pS2));
49
	    q = one+t*qS1;
55
	    q = one+t*(qS1+t*qS2);
50
	    w = p/q;
56
	    w = p/q;
51
	    return x+x*w;
57
	    return x+x*w;
52
	}
58
	}
Lines 54-60 asinf(float x) Link Here
54
	w = one-fabsf(x);
60
	w = one-fabsf(x);
55
	t = w*(float)0.5;
61
	t = w*(float)0.5;
56
	p = t*(pS0+t*(pS1+t*pS2));
62
	p = t*(pS0+t*(pS1+t*pS2));
57
	q = one+t*qS1;
63
	q = one+t*(qS1+t*qS2);
58
	s = sqrt(t);
64
	s = sqrt(t);
59
	w = p/q;
65
	w = p/q;
60
	t = pio2-2.0*(s+s*w);
66
	t = pio2-2.0*(s+s*w);

Return to bug 281001