\frac{1}{x} - \frac{1}{\tan x}0.02222222222222222307030925492199457949027 \cdot {x}^{3} + \left(0.002116402116402116544841005563171165704262 \cdot {x}^{5} + 0.3333333333333333148296162562473909929395 \cdot x\right)double f(double x) {
double r104200 = 1.0;
double r104201 = x;
double r104202 = r104200 / r104201;
double r104203 = tan(r104201);
double r104204 = r104200 / r104203;
double r104205 = r104202 - r104204;
return r104205;
}
double f(double x) {
double r104206 = 0.022222222222222223;
double r104207 = x;
double r104208 = 3.0;
double r104209 = pow(r104207, r104208);
double r104210 = r104206 * r104209;
double r104211 = 0.0021164021164021165;
double r104212 = 5.0;
double r104213 = pow(r104207, r104212);
double r104214 = r104211 * r104213;
double r104215 = 0.3333333333333333;
double r104216 = r104215 * r104207;
double r104217 = r104214 + r104216;
double r104218 = r104210 + r104217;
return r104218;
}




Bits error versus x
Results
| Original | 59.8 |
|---|---|
| Target | 0.1 |
| Herbie | 0.4 |
Initial program 59.8
Taylor expanded around 0 0.4
Final simplification0.4
herbie shell --seed 2019308
(FPCore (x)
:name "invcot (example 3.9)"
:precision binary64
:pre (and (< -0.0259999999999999988 x) (< x 0.0259999999999999988))
:herbie-target
(if (< (fabs x) 0.0259999999999999988) (* (/ x 3) (+ 1 (/ (* x x) 15))) (- (/ 1 x) (/ 1 (tan x))))
(- (/ 1 x) (/ 1 (tan x))))