35 const double T3PO8 = 2.41421356237309504880;
40 const double PX1atan = -8.750608600031904122785E-1;
41 const double PX2atan = -1.615753718733365076637E1;
42 const double PX3atan = -7.500855792314704667340E1;
43 const double PX4atan = -1.228866684490136173410E2;
44 const double PX5atan = -6.485021904942025371773E1;
61 const double QX1atan = 2.485846490142306297962E1;
62 const double QX2atan = 1.650270098316988542046E2;
63 const double QX3atan = 4.328810604912902668951E2;
64 const double QX4atan = 4.853903996359136964868E2;
65 const double QX5atan = 1.945506571482613964425E2;
93 const double originalx=
x;
97 x = (x-1.0) / (x+1.0);
102 x = -1.0 / originalx ;
104 if ( originalx <= 0.66 ) {
110 const double x2 = x *
x;
117 const double poq=px / qx;
119 double res = x * x2 * poq +
x;
138 if( x0 > 0.4142135623730950
f ){
139 x = (x0-1.0f)/(x0+1.0
f);
142 if( x0 > 2.414213562373095
f ){
148 const float x2 = x *
x;
150 ((( 8.05374449538e-2
f * x2
151 - 1.38776856032E-1
f) * x2
152 + 1.99777106478
E-1
f) * x2
153 - 3.33329491539E-1
f) * x2 * x
169 #endif // end of atan
double get_atan_px(const double x2)
static const double x2[5]
double fast_atan(double x)
Fast Atan implementation double precision.
uint64_t getSignMask(const double x)
VecExpr< UnaryOp< Fabs< T >, VecExpr< A, T, D >, T >, T, D > fabs(const VecExpr< A, T, D > &rhs)
float spORuint32(const float x, const uint32_t i)
Makes an OR of a float and a unsigned long.
double get_atan_qx(const double x2)
double dpORuint64(const double x, const uint64_t i)
Makes an OR of a double and a unsigned long long.
float fast_atanf(float xx)
Fast Atan implementation single precision.