\tan \left(x + \varepsilon\right) - \tan x
\frac{\frac{\left(\sin x \cdot \sin \varepsilon\right) \cdot \sin x}{\cos x \cdot \cos \varepsilon} + \frac{\sin \varepsilon \cdot \cos x}{\cos \varepsilon}}{\left(1 - \tan x \cdot \tan \varepsilon\right) \cdot \cos x}double f(double x, double eps) {
double r102826 = x;
double r102827 = eps;
double r102828 = r102826 + r102827;
double r102829 = tan(r102828);
double r102830 = tan(r102826);
double r102831 = r102829 - r102830;
return r102831;
}
double f(double x, double eps) {
double r102832 = x;
double r102833 = sin(r102832);
double r102834 = eps;
double r102835 = sin(r102834);
double r102836 = r102833 * r102835;
double r102837 = r102836 * r102833;
double r102838 = cos(r102832);
double r102839 = cos(r102834);
double r102840 = r102838 * r102839;
double r102841 = r102837 / r102840;
double r102842 = r102835 * r102838;
double r102843 = r102842 / r102839;
double r102844 = r102841 + r102843;
double r102845 = 1.0;
double r102846 = tan(r102832);
double r102847 = tan(r102834);
double r102848 = r102846 * r102847;
double r102849 = r102845 - r102848;
double r102850 = r102849 * r102838;
double r102851 = r102844 / r102850;
return r102851;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.1 |
|---|---|
| Target | 15.3 |
| Herbie | 0.4 |
Initial program 37.1
rmApplied tan-quot37.1
Applied tan-sum21.9
Applied frac-sub21.9
Taylor expanded around inf 0.4
rmApplied sqr-pow0.4
Applied associate-*l*0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019326
(FPCore (x eps)
:name "2tan (problem 3.3.2)"
:precision binary64
:herbie-target
(/ (sin eps) (* (cos x) (cos (+ x eps))))
(- (tan (+ x eps)) (tan x)))