\tan \left(x + \varepsilon\right) - \tan x
\frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \sin x}{\cos x}} + \left(\frac{\frac{\sin x}{\cos x}}{1 - \frac{\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \sin x}{\cos x}} - \frac{\sin x}{\cos x}\right)double f(double x, double eps) {
double r2964753 = x;
double r2964754 = eps;
double r2964755 = r2964753 + r2964754;
double r2964756 = tan(r2964755);
double r2964757 = tan(r2964753);
double r2964758 = r2964756 - r2964757;
return r2964758;
}
double f(double x, double eps) {
double r2964759 = eps;
double r2964760 = sin(r2964759);
double r2964761 = cos(r2964759);
double r2964762 = r2964760 / r2964761;
double r2964763 = 1.0;
double r2964764 = x;
double r2964765 = sin(r2964764);
double r2964766 = r2964762 * r2964765;
double r2964767 = cos(r2964764);
double r2964768 = r2964766 / r2964767;
double r2964769 = r2964763 - r2964768;
double r2964770 = r2964762 / r2964769;
double r2964771 = r2964765 / r2964767;
double r2964772 = r2964771 / r2964769;
double r2964773 = r2964772 - r2964771;
double r2964774 = r2964770 + r2964773;
return r2964774;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.9 |
|---|---|
| Target | 15.5 |
| Herbie | 12.6 |
Initial program 36.9
rmApplied tan-sum21.3
Taylor expanded around inf 21.5
Simplified12.6
Final simplification12.6
herbie shell --seed 2019155 +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)))