\tan \left(x + \varepsilon\right) - \tan x
\left(1 + \left(\frac{\frac{\sin \varepsilon}{\cos x} \cdot \sin x}{\cos \varepsilon} + \frac{\frac{\sin \varepsilon}{\cos x} \cdot \sin x}{\cos \varepsilon} \cdot \frac{\frac{\sin \varepsilon}{\cos x} \cdot \sin x}{\cos \varepsilon}\right)\right) \cdot \frac{\frac{\sin \varepsilon}{1 - \frac{\sqrt[3]{\left(\left(\frac{\sin \varepsilon}{\cos x} \cdot \sin x\right) \cdot \left(\frac{\sin \varepsilon}{\cos x} \cdot \sin x\right)\right) \cdot \left(\frac{\sin \varepsilon}{\cos x} \cdot \sin x\right)}}{\cos \varepsilon} \cdot \left(\frac{\frac{\sin \varepsilon}{\cos x} \cdot \sin x}{\cos \varepsilon} \cdot \frac{\frac{\sin \varepsilon}{\cos x} \cdot \sin x}{\cos \varepsilon}\right)}}{\cos \varepsilon} + \left(\frac{\frac{\sin x}{\cos x}}{1 - \frac{\frac{\sin \varepsilon}{\cos x} \cdot \sin x}{\cos \varepsilon}} - \frac{\sin x}{\cos x}\right)double f(double x, double eps) {
double r5323250 = x;
double r5323251 = eps;
double r5323252 = r5323250 + r5323251;
double r5323253 = tan(r5323252);
double r5323254 = tan(r5323250);
double r5323255 = r5323253 - r5323254;
return r5323255;
}
double f(double x, double eps) {
double r5323256 = 1.0;
double r5323257 = eps;
double r5323258 = sin(r5323257);
double r5323259 = x;
double r5323260 = cos(r5323259);
double r5323261 = r5323258 / r5323260;
double r5323262 = sin(r5323259);
double r5323263 = r5323261 * r5323262;
double r5323264 = cos(r5323257);
double r5323265 = r5323263 / r5323264;
double r5323266 = r5323265 * r5323265;
double r5323267 = r5323265 + r5323266;
double r5323268 = r5323256 + r5323267;
double r5323269 = r5323263 * r5323263;
double r5323270 = r5323269 * r5323263;
double r5323271 = cbrt(r5323270);
double r5323272 = r5323271 / r5323264;
double r5323273 = r5323272 * r5323266;
double r5323274 = r5323256 - r5323273;
double r5323275 = r5323258 / r5323274;
double r5323276 = r5323275 / r5323264;
double r5323277 = r5323268 * r5323276;
double r5323278 = r5323262 / r5323260;
double r5323279 = r5323256 - r5323265;
double r5323280 = r5323278 / r5323279;
double r5323281 = r5323280 - r5323278;
double r5323282 = r5323277 + r5323281;
return r5323282;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.9 |
|---|---|
| Target | 15.5 |
| Herbie | 12.8 |
Initial program 36.9
rmApplied tan-sum21.4
Taylor expanded around inf 21.5
Simplified12.7
rmApplied flip3--12.8
Applied associate-*l/12.8
Applied associate-/r/12.8
Simplified12.8
rmApplied add-cbrt-cube12.8
Final simplification12.8
herbie shell --seed 2019163 +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)))