\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 r134769 = 1.0;
double r134770 = x;
double r134771 = r134769 / r134770;
double r134772 = tan(r134770);
double r134773 = r134769 / r134772;
double r134774 = r134771 - r134773;
return r134774;
}
double f(double x) {
double r134775 = 0.022222222222222223;
double r134776 = x;
double r134777 = 3.0;
double r134778 = pow(r134776, r134777);
double r134779 = r134775 * r134778;
double r134780 = 0.0021164021164021165;
double r134781 = 5.0;
double r134782 = pow(r134776, r134781);
double r134783 = r134780 * r134782;
double r134784 = 0.3333333333333333;
double r134785 = r134784 * r134776;
double r134786 = r134783 + r134785;
double r134787 = r134779 + r134786;
return r134787;
}




Bits error versus x
Results
| Original | 60.0 |
|---|---|
| Target | 0.1 |
| Herbie | 0.3 |
Initial program 60.0
Taylor expanded around 0 0.3
Final simplification0.3
herbie shell --seed 2019353
(FPCore (x)
:name "invcot (example 3.9)"
:precision binary64
: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))))