\frac{1}{x} - \frac{1}{\tan x}\mathsf{fma}\left(\left({x}^{5}\right), \frac{2}{945}, \left(\frac{x}{\frac{\left(\frac{1}{9} - \left(\left(\frac{1}{45} \cdot x\right) \cdot x\right) \cdot \frac{1}{3}\right) + \left(\left(\frac{1}{45} \cdot x\right) \cdot x\right) \cdot \left(\left(\frac{1}{45} \cdot x\right) \cdot x\right)}{\mathsf{fma}\left(\left(\left(\left(\frac{1}{45} \cdot x\right) \cdot x\right) \cdot \left(\left(\frac{1}{45} \cdot x\right) \cdot x\right)\right), \left(\left(\frac{1}{45} \cdot x\right) \cdot x\right), \frac{1}{27}\right)}}\right)\right)double f(double x) {
double r2609074 = 1.0;
double r2609075 = x;
double r2609076 = r2609074 / r2609075;
double r2609077 = tan(r2609075);
double r2609078 = r2609074 / r2609077;
double r2609079 = r2609076 - r2609078;
return r2609079;
}
double f(double x) {
double r2609080 = x;
double r2609081 = 5.0;
double r2609082 = pow(r2609080, r2609081);
double r2609083 = 0.0021164021164021165;
double r2609084 = 0.1111111111111111;
double r2609085 = 0.022222222222222223;
double r2609086 = r2609085 * r2609080;
double r2609087 = r2609086 * r2609080;
double r2609088 = 0.3333333333333333;
double r2609089 = r2609087 * r2609088;
double r2609090 = r2609084 - r2609089;
double r2609091 = r2609087 * r2609087;
double r2609092 = r2609090 + r2609091;
double r2609093 = 0.037037037037037035;
double r2609094 = fma(r2609091, r2609087, r2609093);
double r2609095 = r2609092 / r2609094;
double r2609096 = r2609080 / r2609095;
double r2609097 = fma(r2609082, r2609083, r2609096);
return r2609097;
}




Bits error versus x
| Original | 59.9 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
Initial program 59.9
Taylor expanded around 0 0.3
Simplified0.3
rmApplied flip3-+1.2
Applied associate-*r/1.1
Simplified0.3
rmApplied associate-/l*0.0
Final simplification0.0
herbie shell --seed 2019130 +o rules:numerics
(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))))