\tan \left(x + \varepsilon\right) - \tan x
\left(\frac{{\left(\sin x\right)}^{2} \cdot \sin \varepsilon}{\cos \varepsilon \cdot \left(\left(1 - \frac{{\left(\sin x\right)}^{3} \cdot {\left(\sin \varepsilon\right)}^{3}}{{\left(\cos x\right)}^{3} \cdot {\left(\cos \varepsilon\right)}^{3}}\right) \cdot {\left(\cos x\right)}^{2}\right)} + \frac{\sin \varepsilon}{\left(1 - \frac{{\left(\sin x\right)}^{3} \cdot {\left(\sin \varepsilon\right)}^{3}}{{\left(\cos x\right)}^{3} \cdot {\left(\cos \varepsilon\right)}^{3}}\right) \cdot \cos \varepsilon}\right) + \left(\left(\left(\frac{{\left(\sin x\right)}^{2} \cdot {\left(\sin \varepsilon\right)}^{3}}{{\left(\cos x\right)}^{2} \cdot \left(\left(1 - \frac{{\left(\sin x\right)}^{3} \cdot {\left(\sin \varepsilon\right)}^{3}}{{\left(\cos x\right)}^{3} \cdot {\left(\cos \varepsilon\right)}^{3}}\right) \cdot {\left(\cos \varepsilon\right)}^{3}\right)} + \frac{{\left(\sin \varepsilon\right)}^{2}}{\left(1 - \frac{{\left(\sin x\right)}^{3} \cdot {\left(\sin \varepsilon\right)}^{3}}{{\left(\cos x\right)}^{3} \cdot {\left(\cos \varepsilon\right)}^{3}}\right) \cdot {\left(\cos \varepsilon\right)}^{2}} \cdot \left(\frac{\sin x}{\cos x} + \frac{{\left(\sin x\right)}^{3}}{{\left(\cos x\right)}^{3}}\right)\right) + \frac{\sin x}{\left(1 - \frac{{\left(\sin x\right)}^{3} \cdot {\left(\sin \varepsilon\right)}^{3}}{{\left(\cos x\right)}^{3} \cdot {\left(\cos \varepsilon\right)}^{3}}\right) \cdot \cos x}\right) - \frac{\sin x}{\cos x}\right)double f(double x, double eps) {
double r91363 = x;
double r91364 = eps;
double r91365 = r91363 + r91364;
double r91366 = tan(r91365);
double r91367 = tan(r91363);
double r91368 = r91366 - r91367;
return r91368;
}
double f(double x, double eps) {
double r91369 = x;
double r91370 = sin(r91369);
double r91371 = 2.0;
double r91372 = pow(r91370, r91371);
double r91373 = eps;
double r91374 = sin(r91373);
double r91375 = r91372 * r91374;
double r91376 = cos(r91373);
double r91377 = 1.0;
double r91378 = 3.0;
double r91379 = pow(r91370, r91378);
double r91380 = pow(r91374, r91378);
double r91381 = r91379 * r91380;
double r91382 = cos(r91369);
double r91383 = pow(r91382, r91378);
double r91384 = pow(r91376, r91378);
double r91385 = r91383 * r91384;
double r91386 = r91381 / r91385;
double r91387 = r91377 - r91386;
double r91388 = pow(r91382, r91371);
double r91389 = r91387 * r91388;
double r91390 = r91376 * r91389;
double r91391 = r91375 / r91390;
double r91392 = r91387 * r91376;
double r91393 = r91374 / r91392;
double r91394 = r91391 + r91393;
double r91395 = r91372 * r91380;
double r91396 = r91387 * r91384;
double r91397 = r91388 * r91396;
double r91398 = r91395 / r91397;
double r91399 = pow(r91374, r91371);
double r91400 = pow(r91376, r91371);
double r91401 = r91387 * r91400;
double r91402 = r91399 / r91401;
double r91403 = r91370 / r91382;
double r91404 = r91379 / r91383;
double r91405 = r91403 + r91404;
double r91406 = r91402 * r91405;
double r91407 = r91398 + r91406;
double r91408 = r91387 * r91382;
double r91409 = r91370 / r91408;
double r91410 = r91407 + r91409;
double r91411 = r91410 - r91403;
double r91412 = r91394 + r91411;
return r91412;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.1 |
|---|---|
| Target | 15.1 |
| Herbie | 0.5 |
Initial program 37.1
rmApplied tan-sum21.8
rmApplied clear-num21.9
rmApplied flip3--21.9
Applied associate-/l/21.9
Simplified21.9
Taylor expanded around inf 21.9
Simplified0.5
Final simplification0.5
herbie shell --seed 2020046
(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)))