\tan \left(x + \varepsilon\right) - \tan x
\frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \sin x}{\cos x}} + \left(\frac{\frac{\sin x}{\cos x}}{1 - \frac{\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \sin x}{\cos x}} - \frac{\sin x}{\cos x}\right)double f(double x, double eps) {
double r2108335 = x;
double r2108336 = eps;
double r2108337 = r2108335 + r2108336;
double r2108338 = tan(r2108337);
double r2108339 = tan(r2108335);
double r2108340 = r2108338 - r2108339;
return r2108340;
}
double f(double x, double eps) {
double r2108341 = eps;
double r2108342 = sin(r2108341);
double r2108343 = cos(r2108341);
double r2108344 = r2108342 / r2108343;
double r2108345 = 1.0;
double r2108346 = x;
double r2108347 = sin(r2108346);
double r2108348 = r2108344 * r2108347;
double r2108349 = cos(r2108346);
double r2108350 = r2108348 / r2108349;
double r2108351 = r2108345 - r2108350;
double r2108352 = r2108344 / r2108351;
double r2108353 = r2108347 / r2108349;
double r2108354 = r2108353 / r2108351;
double r2108355 = r2108354 - r2108353;
double r2108356 = r2108352 + r2108355;
return r2108356;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.3 |
|---|---|
| Target | 15.2 |
| Herbie | 13.0 |
Initial program 37.3
rmApplied tan-sum21.9
Taylor expanded around -inf 22.0
Simplified13.0
Final simplification13.0
herbie shell --seed 2019151 +o rules:numerics
(FPCore (x eps)
:name "2tan (problem 3.3.2)"
:herbie-target
(/ (sin eps) (* (cos x) (cos (+ x eps))))
(- (tan (+ x eps)) (tan x)))