\tan \left(x + \varepsilon\right) - \tan x
\left(\frac{{\left(\sin x\right)}^{2} \cdot \sin \varepsilon}{\cos \varepsilon \cdot \left(\left(1 - \frac{{\left(\sin x\right)}^{3} \cdot {\left(\sin \varepsilon\right)}^{3}}{{\left(\cos x\right)}^{3} \cdot {\left(\cos \varepsilon\right)}^{3}}\right) \cdot {\left(\cos x\right)}^{2}\right)} + \frac{\sin \varepsilon}{\left(1 - \frac{{\left(\sin x\right)}^{3} \cdot {\left(\sin \varepsilon\right)}^{3}}{{\left(\cos x\right)}^{3} \cdot {\left(\cos \varepsilon\right)}^{3}}\right) \cdot \cos \varepsilon}\right) + \left(\left(\frac{{\left(\sin x\right)}^{2} \cdot {\left(\sin \varepsilon\right)}^{3}}{{\left(\cos x\right)}^{2} \cdot \left(\left(1 - \frac{{\left(\sin x\right)}^{3} \cdot {\left(\sin \varepsilon\right)}^{3}}{{\left(\cos x\right)}^{3} \cdot {\left(\cos \varepsilon\right)}^{3}}\right) \cdot {\left(\cos \varepsilon\right)}^{3}\right)} + \frac{{\left(\sin \varepsilon\right)}^{2}}{\left(1 - \frac{{\left(\sin x\right)}^{3} \cdot {\left(\sin \varepsilon\right)}^{3}}{{\left(\cos x\right)}^{3} \cdot {\left(\cos \varepsilon\right)}^{3}}\right) \cdot {\left(\cos \varepsilon\right)}^{2}} \cdot \left(\frac{\sin x}{\cos x} + \frac{{\left(\sin x\right)}^{3}}{{\left(\cos x\right)}^{3}}\right)\right) + \left(\frac{\sin x}{\left(1 - \frac{{\left(\sin x\right)}^{3} \cdot {\left(\sin \varepsilon\right)}^{3}}{{\left(\cos x\right)}^{3} \cdot {\left(\cos \varepsilon\right)}^{3}}\right) \cdot \cos x} - \frac{\sin x}{\cos x}\right)\right)double f(double x, double eps) {
double r166265 = x;
double r166266 = eps;
double r166267 = r166265 + r166266;
double r166268 = tan(r166267);
double r166269 = tan(r166265);
double r166270 = r166268 - r166269;
return r166270;
}
double f(double x, double eps) {
double r166271 = x;
double r166272 = sin(r166271);
double r166273 = 2.0;
double r166274 = pow(r166272, r166273);
double r166275 = eps;
double r166276 = sin(r166275);
double r166277 = r166274 * r166276;
double r166278 = cos(r166275);
double r166279 = 1.0;
double r166280 = 3.0;
double r166281 = pow(r166272, r166280);
double r166282 = pow(r166276, r166280);
double r166283 = r166281 * r166282;
double r166284 = cos(r166271);
double r166285 = pow(r166284, r166280);
double r166286 = pow(r166278, r166280);
double r166287 = r166285 * r166286;
double r166288 = r166283 / r166287;
double r166289 = r166279 - r166288;
double r166290 = pow(r166284, r166273);
double r166291 = r166289 * r166290;
double r166292 = r166278 * r166291;
double r166293 = r166277 / r166292;
double r166294 = r166289 * r166278;
double r166295 = r166276 / r166294;
double r166296 = r166293 + r166295;
double r166297 = r166274 * r166282;
double r166298 = r166289 * r166286;
double r166299 = r166290 * r166298;
double r166300 = r166297 / r166299;
double r166301 = pow(r166276, r166273);
double r166302 = pow(r166278, r166273);
double r166303 = r166289 * r166302;
double r166304 = r166301 / r166303;
double r166305 = r166272 / r166284;
double r166306 = r166281 / r166285;
double r166307 = r166305 + r166306;
double r166308 = r166304 * r166307;
double r166309 = r166300 + r166308;
double r166310 = r166289 * r166284;
double r166311 = r166272 / r166310;
double r166312 = r166311 - r166305;
double r166313 = r166309 + r166312;
double r166314 = r166296 + r166313;
return r166314;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.1 |
|---|---|
| Target | 15.6 |
| Herbie | 0.5 |
Initial program 37.1
rmApplied tan-sum21.4
rmApplied flip3--21.4
Applied associate-/r/21.4
Simplified21.4
Taylor expanded around inf 21.6
Simplified0.5
rmApplied associate--l+0.5
Final simplification0.5
herbie shell --seed 2019344
(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)))