Lines Matching +full:2 +full:x
13 /* asin(x)
15 * Since asin(x) = x + x^3/6 + x^5*3/40 + x^7*15/336 + ...
16 * we approximate asin(x) on [0,0.5] by
17 * asin(x) = x + x*x^2*R(x^2)
19 * R(x^2) is a rational approximation of (asin(x)-x)/x^3
21 * |(asin(x)-x)/x^3 - R(x^2)| < 2^(-58.75)
23 * For x in [0.5,1]
24 * asin(x) = pi/2-2*asin(sqrt((1-x)/2))
25 * Let y = (1-x), z = y/2, s := sqrt(z), and pio2_hi+pio2_lo=pi/2;
26 * then for x>0.98
27 * asin(x) = pi/2 - 2*(s+s*z*R(z))
28 * = pio2_hi - (2*(s+s*z*R(z)) - pio2_lo)
29 * For x<=0.98, let pio4_hi = pio2_hi/2, then
33 * asin(x) = pi/2 - 2*(s+s*z*R(z))
34 * = pio4_hi+(pio4-2s)-(2s*z*R(z)-pio2_lo)
35 * = pio4_hi+(pio4-2f)-(2s*z*R(z)-(pio2_lo+2c))
38 * if x is NaN, return x itself;
39 * if |x|>1, return NaN with invalid signal.
54 /* coefficient for R(x^2) */
67 asin(double x) in asin() argument
71 GET_HIGH_WORD(hx,x); in asin()
73 if(ix>= 0x3ff00000) { /* |x|>= 1 */ in asin()
75 GET_LOW_WORD(lx,x); in asin()
77 /* asin(1)=+-pi/2 with inexact */ in asin()
78 return x*pio2_hi+x*pio2_lo; in asin()
79 return (x-x)/(x-x); /* asin(|x|>1) is NaN */ in asin()
80 } else if (ix<0x3fe00000) { /* |x|<0.5 */ in asin()
81 if(ix<0x3e500000) { /* if |x| < 2**-26 */ in asin()
82 if(huge+x>one) return x;/* return x with inexact if x!=0*/ in asin()
84 t = x*x; in asin()
88 return x+x*w; in asin()
90 /* 1> |x|>= 0.5 */ in asin()
91 w = one-fabs(x); in asin()
96 if(ix>=0x3FEF3333) { /* if |x| > 0.975 */ in asin()