\tan \left(x + \varepsilon\right) - \tan x
\left(\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \frac{\sin \varepsilon}{\cos \varepsilon}\right) \cdot \frac{\frac{\sin x}{\cos x}}{1 - \left(\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \frac{\sin x}{\cos x}\right) \cdot \left(\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \frac{\sin x}{\cos x}\right)} + \left(\frac{\left(\frac{\sin x \cdot \sin x}{\cos x \cdot \cos x} + 1\right) \cdot \frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \left(\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \frac{\sin x}{\cos x}\right) \cdot \left(\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \frac{\sin x}{\cos x}\right)} + \left(\frac{\frac{\sin x}{\cos x}}{1 - \left(\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \frac{\sin x}{\cos x}\right) \cdot \left(\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \frac{\sin x}{\cos x}\right)} - \frac{\sin x}{\cos x}\right)\right)double f(double x, double eps) {
double r21808681 = x;
double r21808682 = eps;
double r21808683 = r21808681 + r21808682;
double r21808684 = tan(r21808683);
double r21808685 = tan(r21808681);
double r21808686 = r21808684 - r21808685;
return r21808686;
}
double f(double x, double eps) {
double r21808687 = eps;
double r21808688 = sin(r21808687);
double r21808689 = cos(r21808687);
double r21808690 = r21808688 / r21808689;
double r21808691 = r21808690 * r21808690;
double r21808692 = x;
double r21808693 = sin(r21808692);
double r21808694 = cos(r21808692);
double r21808695 = r21808693 / r21808694;
double r21808696 = 1.0;
double r21808697 = r21808690 * r21808695;
double r21808698 = r21808697 * r21808697;
double r21808699 = r21808696 - r21808698;
double r21808700 = r21808695 / r21808699;
double r21808701 = r21808691 * r21808700;
double r21808702 = r21808693 * r21808693;
double r21808703 = r21808694 * r21808694;
double r21808704 = r21808702 / r21808703;
double r21808705 = r21808704 + r21808696;
double r21808706 = r21808705 * r21808690;
double r21808707 = r21808706 / r21808699;
double r21808708 = r21808700 - r21808695;
double r21808709 = r21808707 + r21808708;
double r21808710 = r21808701 + r21808709;
return r21808710;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.6 |
|---|---|
| Target | 15.3 |
| Herbie | 0.6 |
Initial program 37.6
rmApplied tan-sum22.2
rmApplied flip--22.2
Applied associate-/r/22.2
Taylor expanded around -inf 22.3
Simplified0.6
rmApplied frac-times0.6
Final simplification0.6
herbie shell --seed 2019128
(FPCore (x eps)
:name "2tan (problem 3.3.2)"
:herbie-target
(/ (sin eps) (* (cos x) (cos (+ x eps))))
(- (tan (+ x eps)) (tan x)))