\tan \left(x + \varepsilon\right) - \tan x
\frac{\frac{\sin \varepsilon \cdot \cos x}{\cos \varepsilon} + \frac{{\left(\sin x\right)}^{2} \cdot \sin \varepsilon}{\cos x \cdot \cos \varepsilon}}{\left(1 - \tan x \cdot \tan \varepsilon\right) \cdot \cos x}double f(double x, double eps) {
double r82875 = x;
double r82876 = eps;
double r82877 = r82875 + r82876;
double r82878 = tan(r82877);
double r82879 = tan(r82875);
double r82880 = r82878 - r82879;
return r82880;
}
double f(double x, double eps) {
double r82881 = eps;
double r82882 = sin(r82881);
double r82883 = x;
double r82884 = cos(r82883);
double r82885 = r82882 * r82884;
double r82886 = cos(r82881);
double r82887 = r82885 / r82886;
double r82888 = sin(r82883);
double r82889 = 2.0;
double r82890 = pow(r82888, r82889);
double r82891 = r82890 * r82882;
double r82892 = r82884 * r82886;
double r82893 = r82891 / r82892;
double r82894 = r82887 + r82893;
double r82895 = 1.0;
double r82896 = tan(r82883);
double r82897 = tan(r82881);
double r82898 = r82896 * r82897;
double r82899 = r82895 - r82898;
double r82900 = r82899 * r82884;
double r82901 = r82894 / r82900;
return r82901;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.9 |
|---|---|
| Target | 14.8 |
| Herbie | 0.4 |
Initial program 36.9
rmApplied tan-quot36.9
Applied tan-sum22.1
Applied frac-sub22.1
Taylor expanded around inf 0.4
Final simplification0.4
herbie shell --seed 2019325
(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)))