\tan \left(x + \varepsilon\right) - \tan x
\frac{\frac{\sin \varepsilon \cdot \cos x}{\cos \varepsilon} + \frac{{\left(\sin x\right)}^{2} \cdot \sin \varepsilon}{\cos x \cdot \cos \varepsilon}}{\left(1 - \tan x \cdot \tan \varepsilon\right) \cdot \cos x}double f(double x, double eps) {
double r86610 = x;
double r86611 = eps;
double r86612 = r86610 + r86611;
double r86613 = tan(r86612);
double r86614 = tan(r86610);
double r86615 = r86613 - r86614;
return r86615;
}
double f(double x, double eps) {
double r86616 = eps;
double r86617 = sin(r86616);
double r86618 = x;
double r86619 = cos(r86618);
double r86620 = r86617 * r86619;
double r86621 = cos(r86616);
double r86622 = r86620 / r86621;
double r86623 = sin(r86618);
double r86624 = 2.0;
double r86625 = pow(r86623, r86624);
double r86626 = r86625 * r86617;
double r86627 = r86619 * r86621;
double r86628 = r86626 / r86627;
double r86629 = r86622 + r86628;
double r86630 = 1.0;
double r86631 = tan(r86618);
double r86632 = tan(r86616);
double r86633 = r86631 * r86632;
double r86634 = r86630 - r86633;
double r86635 = r86634 * r86619;
double r86636 = r86629 / r86635;
return r86636;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.9 |
|---|---|
| Target | 14.8 |
| Herbie | 0.4 |
Initial program 36.9
rmApplied tan-quot36.9
Applied tan-sum22.1
Applied frac-sub22.1
Taylor expanded around inf 0.4
Final simplification0.4
herbie shell --seed 2019325
(FPCore (x eps)
:name "2tan (problem 3.3.2)"
:precision binary64
:herbie-target
(/ (sin eps) (* (cos x) (cos (+ x eps))))
(- (tan (+ x eps)) (tan x)))