\tan \left(x + \varepsilon\right) - \tan x
\frac{\frac{\cos x}{\frac{\cos \varepsilon}{\sin \varepsilon}} + \frac{\sin x \cdot \sin x}{\frac{\cos x \cdot \cos \varepsilon}{\sin \varepsilon}}}{\cos x \cdot \left(1 - \tan \varepsilon \cdot \tan x\right)}double f(double x, double eps) {
double r4068750 = x;
double r4068751 = eps;
double r4068752 = r4068750 + r4068751;
double r4068753 = tan(r4068752);
double r4068754 = tan(r4068750);
double r4068755 = r4068753 - r4068754;
return r4068755;
}
double f(double x, double eps) {
double r4068756 = x;
double r4068757 = cos(r4068756);
double r4068758 = eps;
double r4068759 = cos(r4068758);
double r4068760 = sin(r4068758);
double r4068761 = r4068759 / r4068760;
double r4068762 = r4068757 / r4068761;
double r4068763 = sin(r4068756);
double r4068764 = r4068763 * r4068763;
double r4068765 = r4068757 * r4068759;
double r4068766 = r4068765 / r4068760;
double r4068767 = r4068764 / r4068766;
double r4068768 = r4068762 + r4068767;
double r4068769 = 1.0;
double r4068770 = tan(r4068758);
double r4068771 = tan(r4068756);
double r4068772 = r4068770 * r4068771;
double r4068773 = r4068769 - r4068772;
double r4068774 = r4068757 * r4068773;
double r4068775 = r4068768 / r4068774;
return r4068775;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.3 |
|---|---|
| Target | 15.2 |
| Herbie | 0.5 |
Initial program 37.3
rmApplied tan-sum21.9
rmApplied div-inv21.9
rmApplied tan-quot22.0
Applied un-div-inv22.0
Applied frac-sub22.1
Taylor expanded around -inf 0.4
Simplified0.5
Final simplification0.5
herbie shell --seed 2019151
(FPCore (x eps)
:name "2tan (problem 3.3.2)"
:herbie-target
(/ (sin eps) (* (cos x) (cos (+ x eps))))
(- (tan (+ x eps)) (tan x)))