\frac{1}{x} - \frac{1}{\tan x}{x}^{5} \cdot \frac{2}{945} + \frac{x}{\frac{\frac{\frac{-1}{3} + \left(x \cdot x\right) \cdot \frac{1}{45}}{\frac{1}{3} + \left(x \cdot x\right) \cdot \frac{1}{45}}}{\frac{-1}{3} + \left(x \cdot x\right) \cdot \frac{1}{45}}}double f(double x) {
double r3431745 = 1.0;
double r3431746 = x;
double r3431747 = r3431745 / r3431746;
double r3431748 = tan(r3431746);
double r3431749 = r3431745 / r3431748;
double r3431750 = r3431747 - r3431749;
return r3431750;
}
double f(double x) {
double r3431751 = x;
double r3431752 = 5.0;
double r3431753 = pow(r3431751, r3431752);
double r3431754 = 0.0021164021164021165;
double r3431755 = r3431753 * r3431754;
double r3431756 = -0.3333333333333333;
double r3431757 = r3431751 * r3431751;
double r3431758 = 0.022222222222222223;
double r3431759 = r3431757 * r3431758;
double r3431760 = r3431756 + r3431759;
double r3431761 = 0.3333333333333333;
double r3431762 = r3431761 + r3431759;
double r3431763 = r3431760 / r3431762;
double r3431764 = r3431763 / r3431760;
double r3431765 = r3431751 / r3431764;
double r3431766 = r3431755 + r3431765;
return r3431766;
}




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 2019158
(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))))