\tan \left(x + \varepsilon\right) - \tan x
\left(\frac{\frac{\sin x}{\cos x}}{1 - \left(\sqrt[3]{\frac{\sin x}{\cos x} \cdot \frac{\sin \varepsilon}{\cos \varepsilon}} \cdot \sqrt[3]{\frac{\sin x}{\cos x} \cdot \frac{\sin \varepsilon}{\cos \varepsilon}}\right) \cdot \sqrt[3]{\frac{\sin x}{\cos x} \cdot \frac{\sin \varepsilon}{\cos \varepsilon}}} - \frac{\sin x}{\cos x}\right) + \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\sin x}{\cos x} \cdot \frac{\sin \varepsilon}{\cos \varepsilon}}double f(double x, double eps) {
double r2889710 = x;
double r2889711 = eps;
double r2889712 = r2889710 + r2889711;
double r2889713 = tan(r2889712);
double r2889714 = tan(r2889710);
double r2889715 = r2889713 - r2889714;
return r2889715;
}
double f(double x, double eps) {
double r2889716 = x;
double r2889717 = sin(r2889716);
double r2889718 = cos(r2889716);
double r2889719 = r2889717 / r2889718;
double r2889720 = 1.0;
double r2889721 = eps;
double r2889722 = sin(r2889721);
double r2889723 = cos(r2889721);
double r2889724 = r2889722 / r2889723;
double r2889725 = r2889719 * r2889724;
double r2889726 = cbrt(r2889725);
double r2889727 = r2889726 * r2889726;
double r2889728 = r2889727 * r2889726;
double r2889729 = r2889720 - r2889728;
double r2889730 = r2889719 / r2889729;
double r2889731 = r2889730 - r2889719;
double r2889732 = r2889720 - r2889725;
double r2889733 = r2889724 / r2889732;
double r2889734 = r2889731 + r2889733;
return r2889734;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.1 |
|---|---|
| Target | 15.4 |
| Herbie | 13.0 |
Initial program 37.1
rmApplied tan-sum21.6
Taylor expanded around inf 21.8
Simplified12.9
rmApplied add-cube-cbrt13.0
Final simplification13.0
herbie shell --seed 2019135 +o rules:numerics
(FPCore (x eps)
:name "2tan (problem 3.3.2)"
:herbie-target
(/ (sin eps) (* (cos x) (cos (+ x eps))))
(- (tan (+ x eps)) (tan x)))