38 const double PX1tan=-1.30936939181383777646E4;
39 const double PX2tan=1.15351664838587416140E6;
40 const double PX3tan=-1.79565251976484877988E7;
42 const double QX1tan = 1.36812963470692954678E4;
43 const double QX2tan = -1.32089234440210967447E6;
44 const double QX3tan = 2.50083801823357915839E7;
45 const double QX4tan = -5.38695755929454629881E7;
47 const double DP1tan = 7.853981554508209228515625E-1;
48 const double DP2tan = 7.94662735614792836714E-9;
49 const double DP3tan = 3.06161699786838294307E-17;
52 const float DP2Ftan = 2.4187564849853515625e-4;
53 const float DP3Ftan = 3.77489497744594108e-8;
62 quad = (quad+1) & (~1);
63 const double y = quad;
65 return ((x - y * DP1tan) - y *
DP2tan) - y * DP3tan;
74 quad = (quad+1) & (~1);
77 return ((x - y * DP1Ftan) - y *
DP2Ftan) - y * DP3Ftan;
91 const double zz = z *
z;
111 res = z + z * zz * px / qx;
117 const int32_t alt = quad^1;
119 const double zeroIfXNonZero = (x==0.);
120 res += zeroIfXNonZero;
121 res = quad * (-1./res) + alt * res;
136 const float zz = z *
z;
142 ((((( 9.38540185543E-3
f * zz
143 + 3.11992232697E-3
f) * zz
144 + 2.44301354525
E-2
f) * zz
145 + 5.34112807005E-2
f) * zz
146 + 1.33387994085
E-1
f) * zz
147 + 3.33331568548E-1
f) * zz * z
154 const int32_t alt = quad^1;
156 const float zeroIfXNonZero = (x==0.f);
157 res += zeroIfXNonZero;
158 res = quad * (-1.f/res) + alt * res;
double reduce2quadranttan(double x, int32_t &quad)
Reduce to -45 to 45.
double dpXORuint64(const double x, const uint64_t i)
Makes a XOR of a double and a unsigned long long.
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 spXORuint32(const float x, const uint32_t i)
Makes an OR of a float and a unsigned long.
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
you should not use this method at all Int_t Int_t z
double fast_tan(double x)
Double precision tangent implementation.