\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 r146968 = x;
double r146969 = eps;
double r146970 = r146968 + r146969;
double r146971 = tan(r146970);
double r146972 = tan(r146968);
double r146973 = r146971 - r146972;
return r146973;
}
double f(double x, double eps) {
double r146974 = eps;
double r146975 = sin(r146974);
double r146976 = x;
double r146977 = cos(r146976);
double r146978 = r146975 * r146977;
double r146979 = cos(r146974);
double r146980 = r146978 / r146979;
double r146981 = sin(r146976);
double r146982 = 2.0;
double r146983 = pow(r146981, r146982);
double r146984 = r146983 * r146975;
double r146985 = r146977 * r146979;
double r146986 = r146984 / r146985;
double r146987 = r146980 + r146986;
double r146988 = 1.0;
double r146989 = tan(r146976);
double r146990 = tan(r146974);
double r146991 = r146989 * r146990;
double r146992 = r146988 - r146991;
double r146993 = r146992 * r146977;
double r146994 = r146987 / r146993;
return r146994;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.6 |
|---|---|
| Target | 14.9 |
| Herbie | 0.4 |
Initial program 36.6
rmApplied tan-quot36.6
Applied tan-sum21.8
Applied frac-sub21.9
Taylor expanded around inf 0.4
Final simplification0.4
herbie shell --seed 2019356
(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)))