\tan \left(x + \varepsilon\right) - \tan x
\left(\frac{\frac{\sin x}{\cos x}}{1 - \frac{\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \sin x}{\cos x}} - \frac{\sin x}{\cos x}\right) + \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\sqrt[3]{\left(\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \sin x\right) \cdot e^{\log \left(\left(\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \sin x\right) \cdot \left(\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \sin x\right)\right)}}}{\cos x}}double f(double x, double eps) {
double r4248975 = x;
double r4248976 = eps;
double r4248977 = r4248975 + r4248976;
double r4248978 = tan(r4248977);
double r4248979 = tan(r4248975);
double r4248980 = r4248978 - r4248979;
return r4248980;
}
double f(double x, double eps) {
double r4248981 = x;
double r4248982 = sin(r4248981);
double r4248983 = cos(r4248981);
double r4248984 = r4248982 / r4248983;
double r4248985 = 1.0;
double r4248986 = eps;
double r4248987 = sin(r4248986);
double r4248988 = cos(r4248986);
double r4248989 = r4248987 / r4248988;
double r4248990 = r4248989 * r4248982;
double r4248991 = r4248990 / r4248983;
double r4248992 = r4248985 - r4248991;
double r4248993 = r4248984 / r4248992;
double r4248994 = r4248993 - r4248984;
double r4248995 = r4248990 * r4248990;
double r4248996 = log(r4248995);
double r4248997 = exp(r4248996);
double r4248998 = r4248990 * r4248997;
double r4248999 = cbrt(r4248998);
double r4249000 = r4248999 / r4248983;
double r4249001 = r4248985 - r4249000;
double r4249002 = r4248989 / r4249001;
double r4249003 = r4248994 + r4249002;
return r4249003;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.4 |
|---|---|
| Target | 15.9 |
| Herbie | 12.6 |
Initial program 37.4
rmApplied tan-sum21.4
Taylor expanded around inf 21.5
Simplified12.6
rmApplied add-cbrt-cube12.6
rmApplied add-exp-log12.6
Final simplification12.6
herbie shell --seed 2019143 +o rules:numerics
(FPCore (x eps)
:name "2tan (problem 3.3.2)"
:herbie-target
(/ (sin eps) (* (cos x) (cos (+ x eps))))
(- (tan (+ x eps)) (tan x)))