\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 r135476 = x;
double r135477 = eps;
double r135478 = r135476 + r135477;
double r135479 = tan(r135478);
double r135480 = tan(r135476);
double r135481 = r135479 - r135480;
return r135481;
}
double f(double x, double eps) {
double r135482 = x;
double r135483 = sin(r135482);
double r135484 = 2.0;
double r135485 = pow(r135483, r135484);
double r135486 = eps;
double r135487 = sin(r135486);
double r135488 = r135485 * r135487;
double r135489 = cos(r135486);
double r135490 = 1.0;
double r135491 = 3.0;
double r135492 = pow(r135483, r135491);
double r135493 = pow(r135487, r135491);
double r135494 = r135492 * r135493;
double r135495 = cos(r135482);
double r135496 = pow(r135495, r135491);
double r135497 = pow(r135489, r135491);
double r135498 = r135496 * r135497;
double r135499 = r135494 / r135498;
double r135500 = r135490 - r135499;
double r135501 = pow(r135495, r135484);
double r135502 = r135500 * r135501;
double r135503 = r135489 * r135502;
double r135504 = r135488 / r135503;
double r135505 = r135500 * r135489;
double r135506 = r135487 / r135505;
double r135507 = r135504 + r135506;
double r135508 = r135485 * r135493;
double r135509 = r135500 * r135497;
double r135510 = r135501 * r135509;
double r135511 = r135508 / r135510;
double r135512 = pow(r135487, r135484);
double r135513 = pow(r135489, r135484);
double r135514 = r135500 * r135513;
double r135515 = r135512 / r135514;
double r135516 = r135483 / r135495;
double r135517 = r135492 / r135496;
double r135518 = r135516 + r135517;
double r135519 = r135515 * r135518;
double r135520 = r135511 + r135519;
double r135521 = r135500 * r135495;
double r135522 = r135483 / r135521;
double r135523 = r135522 - r135516;
double r135524 = r135520 + r135523;
double r135525 = r135507 + r135524;
return r135525;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.1 |
|---|---|
| Target | 14.5 |
| Herbie | 0.4 |
Initial program 37.1
rmApplied tan-sum22.5
rmApplied flip3--22.5
Applied associate-/r/22.5
Simplified22.5
Taylor expanded around inf 22.6
Simplified0.5
rmApplied associate--l+0.4
Final simplification0.4
herbie shell --seed 2020035
(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)))