\tan \left(x + \varepsilon\right) - \tan x
\left(\left(\left(\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} + \mathsf{fma}\left(\frac{{\left(\sin x\right)}^{2}}{{\left(\cos x\right)}^{2}}, \frac{{\left(\sin \varepsilon\right)}^{3}}{\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}}, \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)}\right)\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) + \frac{\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} \cdot \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} \cdot \frac{\sin x}{\cos x}}{\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) + \mathsf{fma}\left(-\tan x, 1, \tan x\right)double f(double x, double eps) {
double r159501 = x;
double r159502 = eps;
double r159503 = r159501 + r159502;
double r159504 = tan(r159503);
double r159505 = tan(r159501);
double r159506 = r159504 - r159505;
return r159506;
}
double f(double x, double eps) {
double r159507 = eps;
double r159508 = sin(r159507);
double r159509 = 1.0;
double r159510 = x;
double r159511 = sin(r159510);
double r159512 = 3.0;
double r159513 = pow(r159511, r159512);
double r159514 = pow(r159508, r159512);
double r159515 = r159513 * r159514;
double r159516 = cos(r159510);
double r159517 = pow(r159516, r159512);
double r159518 = cos(r159507);
double r159519 = pow(r159518, r159512);
double r159520 = r159517 * r159519;
double r159521 = r159515 / r159520;
double r159522 = r159509 - r159521;
double r159523 = r159522 * r159518;
double r159524 = r159508 / r159523;
double r159525 = 2.0;
double r159526 = pow(r159511, r159525);
double r159527 = pow(r159516, r159525);
double r159528 = r159526 / r159527;
double r159529 = r159522 * r159519;
double r159530 = r159514 / r159529;
double r159531 = r159526 * r159508;
double r159532 = r159522 * r159527;
double r159533 = r159518 * r159532;
double r159534 = r159531 / r159533;
double r159535 = fma(r159528, r159530, r159534);
double r159536 = r159524 + r159535;
double r159537 = pow(r159508, r159525);
double r159538 = pow(r159518, r159525);
double r159539 = r159522 * r159538;
double r159540 = r159537 / r159539;
double r159541 = r159511 / r159516;
double r159542 = r159513 / r159517;
double r159543 = r159541 + r159542;
double r159544 = r159540 * r159543;
double r159545 = r159536 + r159544;
double r159546 = r159522 * r159516;
double r159547 = r159511 / r159546;
double r159548 = r159547 * r159547;
double r159549 = r159541 * r159541;
double r159550 = r159548 - r159549;
double r159551 = r159547 + r159541;
double r159552 = r159550 / r159551;
double r159553 = r159545 + r159552;
double r159554 = tan(r159510);
double r159555 = -r159554;
double r159556 = fma(r159555, r159509, r159554);
double r159557 = r159553 + r159556;
return r159557;
}




Bits error versus x




Bits error versus eps
| Original | 37.5 |
|---|---|
| Target | 15.0 |
| Herbie | 0.5 |
Initial program 37.5
rmApplied tan-sum22.4
rmApplied add-cube-cbrt22.9
Applied flip3--22.9
Applied associate-/r/22.9
Applied prod-diff23.0
Simplified22.8
Simplified22.4
Taylor expanded around inf 22.5
Simplified0.4
rmApplied flip--0.5
Final simplification0.5
herbie shell --seed 2019353 +o rules:numerics
(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)))