\tan \left(x + \varepsilon\right) - \tan x
\frac{\frac{\cos x \cdot \sin \varepsilon}{\cos \varepsilon} + \frac{\sin \varepsilon}{\cos x} \cdot \frac{\sin x \cdot \sin x}{\cos \varepsilon}}{\cos x \cdot \left(1 - \tan \varepsilon \cdot \tan x\right)}double f(double x, double eps) {
double r1306748 = x;
double r1306749 = eps;
double r1306750 = r1306748 + r1306749;
double r1306751 = tan(r1306750);
double r1306752 = tan(r1306748);
double r1306753 = r1306751 - r1306752;
return r1306753;
}
double f(double x, double eps) {
double r1306754 = x;
double r1306755 = cos(r1306754);
double r1306756 = eps;
double r1306757 = sin(r1306756);
double r1306758 = r1306755 * r1306757;
double r1306759 = cos(r1306756);
double r1306760 = r1306758 / r1306759;
double r1306761 = r1306757 / r1306755;
double r1306762 = sin(r1306754);
double r1306763 = r1306762 * r1306762;
double r1306764 = r1306763 / r1306759;
double r1306765 = r1306761 * r1306764;
double r1306766 = r1306760 + r1306765;
double r1306767 = 1.0;
double r1306768 = tan(r1306756);
double r1306769 = tan(r1306754);
double r1306770 = r1306768 * r1306769;
double r1306771 = r1306767 - r1306770;
double r1306772 = r1306755 * r1306771;
double r1306773 = r1306766 / r1306772;
return r1306773;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.6 |
|---|---|
| Target | 14.6 |
| Herbie | 0.4 |
Initial program 36.6
rmApplied tan-quot36.7
Applied tan-sum22.1
Applied frac-sub22.1
Taylor expanded around inf 0.4
Simplified0.4
rmApplied associate-*l/0.4
Final simplification0.4
herbie shell --seed 2019156
(FPCore (x eps)
:name "2tan (problem 3.3.2)"
:herbie-target
(/ (sin eps) (* (cos x) (cos (+ x eps))))
(- (tan (+ x eps)) (tan x)))