\tan \left(x + \varepsilon\right) - \tan x
\frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \left(\frac{\sin x}{\cos x} \cdot \left(\sqrt[3]{\frac{\sin \varepsilon}{\cos \varepsilon}} \cdot \sqrt[3]{\frac{\sin \varepsilon}{\cos \varepsilon}}\right)\right) \cdot \left(\sqrt[3]{\frac{1}{\sqrt[3]{\cos \varepsilon} \cdot \sqrt[3]{\cos \varepsilon}}} \cdot \sqrt[3]{\frac{\sin \varepsilon}{\sqrt[3]{\cos \varepsilon}}}\right)} + \left(\frac{\frac{\sin x}{\cos x}}{1 - \frac{\sin x}{\cos x} \cdot \frac{\sin \varepsilon}{\cos \varepsilon}} - \frac{\sin x}{\cos x}\right)double f(double x, double eps) {
double r6918473 = x;
double r6918474 = eps;
double r6918475 = r6918473 + r6918474;
double r6918476 = tan(r6918475);
double r6918477 = tan(r6918473);
double r6918478 = r6918476 - r6918477;
return r6918478;
}
double f(double x, double eps) {
double r6918479 = eps;
double r6918480 = sin(r6918479);
double r6918481 = cos(r6918479);
double r6918482 = r6918480 / r6918481;
double r6918483 = 1.0;
double r6918484 = x;
double r6918485 = sin(r6918484);
double r6918486 = cos(r6918484);
double r6918487 = r6918485 / r6918486;
double r6918488 = cbrt(r6918482);
double r6918489 = r6918488 * r6918488;
double r6918490 = r6918487 * r6918489;
double r6918491 = cbrt(r6918481);
double r6918492 = r6918491 * r6918491;
double r6918493 = r6918483 / r6918492;
double r6918494 = cbrt(r6918493);
double r6918495 = r6918480 / r6918491;
double r6918496 = cbrt(r6918495);
double r6918497 = r6918494 * r6918496;
double r6918498 = r6918490 * r6918497;
double r6918499 = r6918483 - r6918498;
double r6918500 = r6918482 / r6918499;
double r6918501 = r6918487 * r6918482;
double r6918502 = r6918483 - r6918501;
double r6918503 = r6918487 / r6918502;
double r6918504 = r6918503 - r6918487;
double r6918505 = r6918500 + r6918504;
return r6918505;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.7 |
|---|---|
| Target | 14.9 |
| Herbie | 13.0 |
Initial program 36.7
rmApplied tan-sum21.7
Taylor expanded around inf 21.8
Simplified13.0
rmApplied add-cube-cbrt13.1
Applied associate-*r*13.1
rmApplied add-cube-cbrt13.1
Applied *-un-lft-identity13.1
Applied times-frac13.0
Applied cbrt-prod13.0
Final simplification13.0
herbie shell --seed 2019168 +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)))