\tan \left(x + \varepsilon\right) - \tan x
\frac{\frac{\sin \varepsilon \cdot \cos x}{\cos \varepsilon} + \frac{\sin x}{\frac{\frac{\cos x}{\frac{\sin \varepsilon}{\cos \varepsilon}}}{\sin x}}}{\left(1 - \tan \varepsilon \cdot \tan x\right) \cdot \cos x}double f(double x, double eps) {
double r3562792 = x;
double r3562793 = eps;
double r3562794 = r3562792 + r3562793;
double r3562795 = tan(r3562794);
double r3562796 = tan(r3562792);
double r3562797 = r3562795 - r3562796;
return r3562797;
}
double f(double x, double eps) {
double r3562798 = eps;
double r3562799 = sin(r3562798);
double r3562800 = x;
double r3562801 = cos(r3562800);
double r3562802 = r3562799 * r3562801;
double r3562803 = cos(r3562798);
double r3562804 = r3562802 / r3562803;
double r3562805 = sin(r3562800);
double r3562806 = r3562799 / r3562803;
double r3562807 = r3562801 / r3562806;
double r3562808 = r3562807 / r3562805;
double r3562809 = r3562805 / r3562808;
double r3562810 = r3562804 + r3562809;
double r3562811 = 1.0;
double r3562812 = tan(r3562798);
double r3562813 = tan(r3562800);
double r3562814 = r3562812 * r3562813;
double r3562815 = r3562811 - r3562814;
double r3562816 = r3562815 * r3562801;
double r3562817 = r3562810 / r3562816;
return r3562817;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.2 |
|---|---|
| Target | 14.9 |
| Herbie | 0.4 |
Initial program 37.2
rmApplied tan-quot37.2
Applied tan-sum22.3
Applied frac-sub22.3
Taylor expanded around inf 0.4
Simplified0.5
Taylor expanded around -inf 0.4
Final simplification0.4
herbie shell --seed 2019130
(FPCore (x eps)
:name "2tan (problem 3.3.2)"
:herbie-target
(/ (sin eps) (* (cos x) (cos (+ x eps))))
(- (tan (+ x eps)) (tan x)))