\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 r126980 = x;
double r126981 = eps;
double r126982 = r126980 + r126981;
double r126983 = tan(r126982);
double r126984 = tan(r126980);
double r126985 = r126983 - r126984;
return r126985;
}
double f(double x, double eps) {
double r126986 = eps;
double r126987 = sin(r126986);
double r126988 = x;
double r126989 = cos(r126988);
double r126990 = r126987 * r126989;
double r126991 = cos(r126986);
double r126992 = r126990 / r126991;
double r126993 = sin(r126988);
double r126994 = 2.0;
double r126995 = pow(r126993, r126994);
double r126996 = r126995 * r126987;
double r126997 = r126989 * r126991;
double r126998 = r126996 / r126997;
double r126999 = r126992 + r126998;
double r127000 = 1.0;
double r127001 = tan(r126988);
double r127002 = tan(r126986);
double r127003 = r127001 * r127002;
double r127004 = r127000 - r127003;
double r127005 = r127004 * r126989;
double r127006 = r126999 / r127005;
return r127006;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.1 |
|---|---|
| Target | 15.1 |
| Herbie | 0.4 |
Initial program 37.1
rmApplied tan-quot37.1
Applied tan-sum22.0
Applied frac-sub22.0
Taylor expanded around inf 0.4
Final simplification0.4
herbie shell --seed 2020042
(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)))