\tan \left(x + \varepsilon\right) - \tan x
\frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\left(\sin x \cdot \frac{\sqrt[3]{\sin \varepsilon}}{\sqrt[3]{\cos x}}\right) \cdot \frac{\sqrt[3]{\sin \varepsilon} \cdot \sqrt[3]{\sin \varepsilon}}{\sqrt[3]{\cos x} \cdot \sqrt[3]{\cos x}}}{\cos \varepsilon}} + \left(\frac{\frac{\sin x}{\cos x}}{1 - \frac{\sin x \cdot \frac{\sin \varepsilon}{\cos x}}{\cos \varepsilon}} - \frac{\sin x}{\cos x}\right)double f(double x, double eps) {
double r3278334 = x;
double r3278335 = eps;
double r3278336 = r3278334 + r3278335;
double r3278337 = tan(r3278336);
double r3278338 = tan(r3278334);
double r3278339 = r3278337 - r3278338;
return r3278339;
}
double f(double x, double eps) {
double r3278340 = eps;
double r3278341 = sin(r3278340);
double r3278342 = cos(r3278340);
double r3278343 = r3278341 / r3278342;
double r3278344 = 1.0;
double r3278345 = x;
double r3278346 = sin(r3278345);
double r3278347 = cbrt(r3278341);
double r3278348 = cos(r3278345);
double r3278349 = cbrt(r3278348);
double r3278350 = r3278347 / r3278349;
double r3278351 = r3278346 * r3278350;
double r3278352 = r3278347 * r3278347;
double r3278353 = r3278349 * r3278349;
double r3278354 = r3278352 / r3278353;
double r3278355 = r3278351 * r3278354;
double r3278356 = r3278355 / r3278342;
double r3278357 = r3278344 - r3278356;
double r3278358 = r3278343 / r3278357;
double r3278359 = r3278346 / r3278348;
double r3278360 = r3278341 / r3278348;
double r3278361 = r3278346 * r3278360;
double r3278362 = r3278361 / r3278342;
double r3278363 = r3278344 - r3278362;
double r3278364 = r3278359 / r3278363;
double r3278365 = r3278364 - r3278359;
double r3278366 = r3278358 + r3278365;
return r3278366;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.8 |
|---|---|
| Target | 14.7 |
| Herbie | 12.9 |
Initial program 36.8
rmApplied tan-sum22.1
Taylor expanded around inf 22.2
Simplified22.2
rmApplied associate--r-12.9
rmApplied add-cube-cbrt12.9
Applied add-cube-cbrt12.9
Applied times-frac12.9
Applied associate-*l*12.9
Final simplification12.9
herbie shell --seed 2019146
(FPCore (x eps)
:name "2tan (problem 3.3.2)"
:herbie-target
(/ (sin eps) (* (cos x) (cos (+ x eps))))
(- (tan (+ x eps)) (tan x)))