\tan \left(x + \varepsilon\right) - \tan x
\frac{\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \frac{\sin x \cdot \sin x}{\cos x} + \frac{\sin \varepsilon}{\cos \varepsilon} \cdot \cos x}{\left(1 - \tan \varepsilon \cdot \tan x\right) \cdot \cos x}double f(double x, double eps) {
double r5487229 = x;
double r5487230 = eps;
double r5487231 = r5487229 + r5487230;
double r5487232 = tan(r5487231);
double r5487233 = tan(r5487229);
double r5487234 = r5487232 - r5487233;
return r5487234;
}
double f(double x, double eps) {
double r5487235 = eps;
double r5487236 = sin(r5487235);
double r5487237 = cos(r5487235);
double r5487238 = r5487236 / r5487237;
double r5487239 = x;
double r5487240 = sin(r5487239);
double r5487241 = r5487240 * r5487240;
double r5487242 = cos(r5487239);
double r5487243 = r5487241 / r5487242;
double r5487244 = r5487238 * r5487243;
double r5487245 = r5487238 * r5487242;
double r5487246 = r5487244 + r5487245;
double r5487247 = 1.0;
double r5487248 = tan(r5487235);
double r5487249 = tan(r5487239);
double r5487250 = r5487248 * r5487249;
double r5487251 = r5487247 - r5487250;
double r5487252 = r5487251 * r5487242;
double r5487253 = r5487246 / r5487252;
return r5487253;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.8 |
|---|---|
| Target | 15.1 |
| Herbie | 0.4 |
Initial program 36.8
rmApplied tan-quot36.8
Applied tan-sum21.8
Applied frac-sub21.9
Taylor expanded around inf 0.4
Simplified0.4
rmApplied associate-/r/0.4
Final simplification0.4
herbie shell --seed 2019172
(FPCore (x eps)
:name "2tan (problem 3.3.2)"
:herbie-target
(/ (sin eps) (* (cos x) (cos (+ x eps))))
(- (tan (+ x eps)) (tan x)))