\tan \left(x + \varepsilon\right) - \tan x
\frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\frac{\sin x}{\cos x}}{\frac{\cos \varepsilon}{\sin \varepsilon}}} - \left(\frac{\sin x}{\cos x} - \frac{\frac{\sin x}{\cos x}}{1 - \frac{\frac{\sin x}{\cos x}}{\frac{\cos \varepsilon}{\sin \varepsilon}}}\right)double f(double x, double eps) {
double r5488628 = x;
double r5488629 = eps;
double r5488630 = r5488628 + r5488629;
double r5488631 = tan(r5488630);
double r5488632 = tan(r5488628);
double r5488633 = r5488631 - r5488632;
return r5488633;
}
double f(double x, double eps) {
double r5488634 = eps;
double r5488635 = sin(r5488634);
double r5488636 = cos(r5488634);
double r5488637 = r5488635 / r5488636;
double r5488638 = 1.0;
double r5488639 = x;
double r5488640 = sin(r5488639);
double r5488641 = cos(r5488639);
double r5488642 = r5488640 / r5488641;
double r5488643 = r5488636 / r5488635;
double r5488644 = r5488642 / r5488643;
double r5488645 = r5488638 - r5488644;
double r5488646 = r5488637 / r5488645;
double r5488647 = r5488642 / r5488645;
double r5488648 = r5488642 - r5488647;
double r5488649 = r5488646 - r5488648;
return r5488649;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.0 |
|---|---|
| Target | 14.6 |
| Herbie | 13.4 |
Initial program 37.0
rmApplied tan-sum22.5
rmApplied add-cube-cbrt22.6
Applied associate-*l*22.6
Taylor expanded around inf 22.6
Simplified22.6
Taylor expanded around inf 22.6
Simplified13.4
Final simplification13.4
herbie shell --seed 2019164
(FPCore (x eps)
:name "2tan (problem 3.3.2)"
:herbie-target
(/ (sin eps) (* (cos x) (cos (+ x eps))))
(- (tan (+ x eps)) (tan x)))