\frac{1}{x} - \frac{1}{\tan x}{x}^{5} \cdot \frac{2}{945} + \frac{x}{\frac{\frac{\frac{-1}{3} + \frac{1}{45} \cdot \left(x \cdot x\right)}{\frac{1}{3} + \frac{1}{45} \cdot \left(x \cdot x\right)}}{\frac{-1}{3} + \frac{1}{45} \cdot \left(x \cdot x\right)}}double f(double x) {
double r2755834 = 1.0;
double r2755835 = x;
double r2755836 = r2755834 / r2755835;
double r2755837 = tan(r2755835);
double r2755838 = r2755834 / r2755837;
double r2755839 = r2755836 - r2755838;
return r2755839;
}
double f(double x) {
double r2755840 = x;
double r2755841 = 5.0;
double r2755842 = pow(r2755840, r2755841);
double r2755843 = 0.0021164021164021165;
double r2755844 = r2755842 * r2755843;
double r2755845 = -0.3333333333333333;
double r2755846 = 0.022222222222222223;
double r2755847 = r2755840 * r2755840;
double r2755848 = r2755846 * r2755847;
double r2755849 = r2755845 + r2755848;
double r2755850 = 0.3333333333333333;
double r2755851 = r2755850 + r2755848;
double r2755852 = r2755849 / r2755851;
double r2755853 = r2755852 / r2755849;
double r2755854 = r2755840 / r2755853;
double r2755855 = r2755844 + r2755854;
return r2755855;
}




Bits error versus x
Results
| Original | 59.8 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
Initial program 59.8
Taylor expanded around 0 0.3
Simplified0.3
rmApplied flip-+0.3
Applied associate-*r/0.3
rmApplied associate-/l*0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019162
(FPCore (x)
:name "invcot (example 3.9)"
:pre (and (< -0.026 x) (< x 0.026))
:herbie-target
(if (< (fabs x) 0.026) (* (/ x 3) (+ 1 (/ (* x x) 15))) (- (/ 1 x) (/ 1 (tan x))))
(- (/ 1 x) (/ 1 (tan x))))