\tan \left(x + \varepsilon\right) - \tan x
\left(\frac{\frac{\sin x}{\cos x}}{1 - \frac{\sin x \cdot \sin x}{\cos \varepsilon \cdot \cos \varepsilon} \cdot \frac{\sin \varepsilon \cdot \sin \varepsilon}{\cos x \cdot \cos x}} - \frac{\sin x}{\cos x}\right) + \left(\frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\sin x \cdot \sin x}{\cos \varepsilon \cdot \cos \varepsilon} \cdot \frac{\sin \varepsilon \cdot \sin \varepsilon}{\cos x \cdot \cos x}} \cdot \left(\frac{\sin x \cdot \sin x}{\cos x \cdot \cos x} + 1\right) + \frac{\frac{\frac{\sin x \cdot \left(\sin \varepsilon \cdot \sin \varepsilon\right)}{\cos x}}{\cos \varepsilon \cdot \cos \varepsilon}}{1 - \frac{\sin x \cdot \sin x}{\cos \varepsilon \cdot \cos \varepsilon} \cdot \frac{\sin \varepsilon \cdot \sin \varepsilon}{\cos x \cdot \cos x}}\right)double f(double x, double eps) {
double r4179710 = x;
double r4179711 = eps;
double r4179712 = r4179710 + r4179711;
double r4179713 = tan(r4179712);
double r4179714 = tan(r4179710);
double r4179715 = r4179713 - r4179714;
return r4179715;
}
double f(double x, double eps) {
double r4179716 = x;
double r4179717 = sin(r4179716);
double r4179718 = cos(r4179716);
double r4179719 = r4179717 / r4179718;
double r4179720 = 1.0;
double r4179721 = r4179717 * r4179717;
double r4179722 = eps;
double r4179723 = cos(r4179722);
double r4179724 = r4179723 * r4179723;
double r4179725 = r4179721 / r4179724;
double r4179726 = sin(r4179722);
double r4179727 = r4179726 * r4179726;
double r4179728 = r4179718 * r4179718;
double r4179729 = r4179727 / r4179728;
double r4179730 = r4179725 * r4179729;
double r4179731 = r4179720 - r4179730;
double r4179732 = r4179719 / r4179731;
double r4179733 = r4179732 - r4179719;
double r4179734 = r4179726 / r4179723;
double r4179735 = r4179734 / r4179731;
double r4179736 = r4179721 / r4179728;
double r4179737 = r4179736 + r4179720;
double r4179738 = r4179735 * r4179737;
double r4179739 = r4179717 * r4179727;
double r4179740 = r4179739 / r4179718;
double r4179741 = r4179740 / r4179724;
double r4179742 = r4179741 / r4179731;
double r4179743 = r4179738 + r4179742;
double r4179744 = r4179733 + r4179743;
return r4179744;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.9 |
|---|---|
| Target | 15.5 |
| Herbie | 0.6 |
Initial program 36.9
rmApplied tan-sum21.4
rmApplied flip--21.4
Applied associate-/r/21.4
rmApplied distribute-lft-in21.4
Applied associate--l+21.4
Taylor expanded around inf 21.5
Simplified0.6
Final simplification0.6
herbie shell --seed 2019163
(FPCore (x eps)
:name "2tan (problem 3.3.2)"
:herbie-target
(/ (sin eps) (* (cos x) (cos (+ x eps))))
(- (tan (+ x eps)) (tan x)))