\tan \left(x + \varepsilon\right) - \tan x
\left(\frac{\frac{\sin x}{\cos x}}{1 - \frac{\frac{\sin x}{\cos x}}{\frac{\cos \varepsilon}{\sin \varepsilon}}} - \frac{\sin x}{\cos x}\right) + \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\frac{\sin x}{\cos x}}{\frac{\cos \varepsilon}{\sin \varepsilon}}}double f(double x, double eps) {
double r3898745 = x;
double r3898746 = eps;
double r3898747 = r3898745 + r3898746;
double r3898748 = tan(r3898747);
double r3898749 = tan(r3898745);
double r3898750 = r3898748 - r3898749;
return r3898750;
}
double f(double x, double eps) {
double r3898751 = x;
double r3898752 = sin(r3898751);
double r3898753 = cos(r3898751);
double r3898754 = r3898752 / r3898753;
double r3898755 = 1.0;
double r3898756 = eps;
double r3898757 = cos(r3898756);
double r3898758 = sin(r3898756);
double r3898759 = r3898757 / r3898758;
double r3898760 = r3898754 / r3898759;
double r3898761 = r3898755 - r3898760;
double r3898762 = r3898754 / r3898761;
double r3898763 = r3898762 - r3898754;
double r3898764 = r3898758 / r3898757;
double r3898765 = r3898764 / r3898761;
double r3898766 = r3898763 + r3898765;
return r3898766;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.1 |
|---|---|
| Target | 15.1 |
| Herbie | 12.8 |
Initial program 37.1
rmApplied tan-sum21.9
Taylor expanded around inf 22.1
Simplified22.0
rmApplied div-inv22.0
Applied div-inv22.1
Applied times-frac22.1
Taylor expanded around -inf 22.1
Simplified12.8
Final simplification12.8
herbie shell --seed 2019137
(FPCore (x eps)
:name "2tan (problem 3.3.2)"
:herbie-target
(/ (sin eps) (* (cos x) (cos (+ x eps))))
(- (tan (+ x eps)) (tan x)))