\tan \left(x + \varepsilon\right) - \tan x
\frac{\frac{\frac{\sin x}{\cos x}}{1 - \frac{\frac{\sin x \cdot \sin \varepsilon}{\cos \varepsilon}}{\cos x}} \cdot \frac{\frac{\sin x}{\cos x}}{1 - \frac{\frac{\sin x \cdot \sin \varepsilon}{\cos \varepsilon}}{\cos x}} - \frac{\sin x}{\cos x} \cdot \frac{\sin x}{\cos x}}{\frac{\sin x}{\cos x} + \frac{\frac{\sin x}{\cos x}}{1 - \frac{\frac{\sin x \cdot \sin \varepsilon}{\cos \varepsilon}}{\cos x}}} + \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\frac{\sin x \cdot \sin \varepsilon}{\cos \varepsilon}}{\cos x}}double f(double x, double eps) {
double r3658280 = x;
double r3658281 = eps;
double r3658282 = r3658280 + r3658281;
double r3658283 = tan(r3658282);
double r3658284 = tan(r3658280);
double r3658285 = r3658283 - r3658284;
return r3658285;
}
double f(double x, double eps) {
double r3658286 = x;
double r3658287 = sin(r3658286);
double r3658288 = cos(r3658286);
double r3658289 = r3658287 / r3658288;
double r3658290 = 1.0;
double r3658291 = eps;
double r3658292 = sin(r3658291);
double r3658293 = r3658287 * r3658292;
double r3658294 = cos(r3658291);
double r3658295 = r3658293 / r3658294;
double r3658296 = r3658295 / r3658288;
double r3658297 = r3658290 - r3658296;
double r3658298 = r3658289 / r3658297;
double r3658299 = r3658298 * r3658298;
double r3658300 = r3658289 * r3658289;
double r3658301 = r3658299 - r3658300;
double r3658302 = r3658289 + r3658298;
double r3658303 = r3658301 / r3658302;
double r3658304 = r3658292 / r3658294;
double r3658305 = r3658304 / r3658297;
double r3658306 = r3658303 + r3658305;
return r3658306;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.3 |
|---|---|
| Target | 15.3 |
| Herbie | 12.5 |
Initial program 36.3
rmApplied tan-sum21.0
Taylor expanded around inf 21.1
Simplified12.5
rmApplied flip--12.5
Final simplification12.5
herbie shell --seed 2019165
(FPCore (x eps)
:name "2tan (problem 3.3.2)"
:herbie-target
(/ (sin eps) (* (cos x) (cos (+ x eps))))
(- (tan (+ x eps)) (tan x)))