\tan \left(x + \varepsilon\right) - \tan x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -6.157168877465971 \cdot 10^{-289}:\\
\;\;\;\;\left(\frac{\frac{\sin \varepsilon \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos \varepsilon}}{1 - \left(\left(\frac{\sin x}{\cos x} \cdot \frac{\sin x}{\cos x}\right) \cdot \frac{\sin x}{\cos x}\right) \cdot \left(\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \frac{\sin \varepsilon \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos \varepsilon}\right)} \cdot \left(\left(\frac{\sin x}{\cos x} \cdot \frac{\sin x}{\cos x}\right) \cdot \frac{\sin x}{\cos x} + \frac{\sin x}{\cos x}\right) + \left(\left(\left(\frac{\frac{\sin x}{\cos x}}{1 - \left(\left(\frac{\sin x}{\cos x} \cdot \frac{\sin x}{\cos x}\right) \cdot \frac{\sin x}{\cos x}\right) \cdot \left(\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \frac{\sin \varepsilon \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos \varepsilon}\right)} + \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \left(\left(\frac{\sin x}{\cos x} \cdot \frac{\sin x}{\cos x}\right) \cdot \frac{\sin x}{\cos x}\right) \cdot \left(\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \frac{\sin \varepsilon \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos \varepsilon}\right)}\right) + \frac{\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \frac{\sin \varepsilon \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos \varepsilon}}{1 - \left(\left(\frac{\sin x}{\cos x} \cdot \frac{\sin x}{\cos x}\right) \cdot \frac{\sin x}{\cos x}\right) \cdot \left(\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \frac{\sin \varepsilon \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos \varepsilon}\right)} \cdot \left(\frac{\sin x}{\cos x} \cdot \frac{\sin x}{\cos x}\right)\right) - \frac{\sin x}{\cos x}\right)\right) + \left(\frac{\sin x}{\cos x} \cdot \frac{\sin x}{\cos x}\right) \cdot \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \left(\left(\frac{\sin x}{\cos x} \cdot \frac{\sin x}{\cos x}\right) \cdot \frac{\sin x}{\cos x}\right) \cdot \left(\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \frac{\sin \varepsilon \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos \varepsilon}\right)}\\
\mathbf{elif}\;\varepsilon \le 1.4726209133031981 \cdot 10^{-53}:\\
\;\;\;\;x \cdot \left(\varepsilon \cdot \left(\varepsilon + x\right)\right) + \varepsilon\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{\frac{\sin \varepsilon \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos \varepsilon}}{1 - \left(\left(\frac{\sin x}{\cos x} \cdot \frac{\sin x}{\cos x}\right) \cdot \frac{\sin x}{\cos x}\right) \cdot \left(\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \frac{\sin \varepsilon \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos \varepsilon}\right)} \cdot \left(\left(\frac{\sin x}{\cos x} \cdot \frac{\sin x}{\cos x}\right) \cdot \frac{\sin x}{\cos x} + \frac{\sin x}{\cos x}\right) + \left(\left(\left(\frac{\frac{\sin x}{\cos x}}{1 - \left(\left(\frac{\sin x}{\cos x} \cdot \frac{\sin x}{\cos x}\right) \cdot \frac{\sin x}{\cos x}\right) \cdot \left(\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \frac{\sin \varepsilon \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos \varepsilon}\right)} + \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \left(\left(\frac{\sin x}{\cos x} \cdot \frac{\sin x}{\cos x}\right) \cdot \frac{\sin x}{\cos x}\right) \cdot \left(\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \frac{\sin \varepsilon \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos \varepsilon}\right)}\right) + \frac{\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \frac{\sin \varepsilon \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos \varepsilon}}{1 - \left(\left(\frac{\sin x}{\cos x} \cdot \frac{\sin x}{\cos x}\right) \cdot \frac{\sin x}{\cos x}\right) \cdot \left(\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \frac{\sin \varepsilon \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos \varepsilon}\right)} \cdot \left(\frac{\sin x}{\cos x} \cdot \frac{\sin x}{\cos x}\right)\right) - \frac{\sin x}{\cos x}\right)\right) + \left(\frac{\sin x}{\cos x} \cdot \frac{\sin x}{\cos x}\right) \cdot \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \left(\left(\frac{\sin x}{\cos x} \cdot \frac{\sin x}{\cos x}\right) \cdot \frac{\sin x}{\cos x}\right) \cdot \left(\frac{\sin \varepsilon}{\cos \varepsilon} \cdot \frac{\sin \varepsilon \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos \varepsilon}\right)}\\
\end{array}double f(double x, double eps) {
double r9651299 = x;
double r9651300 = eps;
double r9651301 = r9651299 + r9651300;
double r9651302 = tan(r9651301);
double r9651303 = tan(r9651299);
double r9651304 = r9651302 - r9651303;
return r9651304;
}
double f(double x, double eps) {
double r9651305 = eps;
double r9651306 = -6.157168877465971e-289;
bool r9651307 = r9651305 <= r9651306;
double r9651308 = sin(r9651305);
double r9651309 = r9651308 * r9651308;
double r9651310 = cos(r9651305);
double r9651311 = r9651310 * r9651310;
double r9651312 = r9651309 / r9651311;
double r9651313 = 1.0;
double r9651314 = x;
double r9651315 = sin(r9651314);
double r9651316 = cos(r9651314);
double r9651317 = r9651315 / r9651316;
double r9651318 = r9651317 * r9651317;
double r9651319 = r9651318 * r9651317;
double r9651320 = r9651308 / r9651310;
double r9651321 = r9651320 * r9651312;
double r9651322 = r9651319 * r9651321;
double r9651323 = r9651313 - r9651322;
double r9651324 = r9651312 / r9651323;
double r9651325 = r9651319 + r9651317;
double r9651326 = r9651324 * r9651325;
double r9651327 = r9651317 / r9651323;
double r9651328 = r9651320 / r9651323;
double r9651329 = r9651327 + r9651328;
double r9651330 = r9651321 / r9651323;
double r9651331 = r9651330 * r9651318;
double r9651332 = r9651329 + r9651331;
double r9651333 = r9651332 - r9651317;
double r9651334 = r9651326 + r9651333;
double r9651335 = r9651318 * r9651328;
double r9651336 = r9651334 + r9651335;
double r9651337 = 1.4726209133031981e-53;
bool r9651338 = r9651305 <= r9651337;
double r9651339 = r9651305 + r9651314;
double r9651340 = r9651305 * r9651339;
double r9651341 = r9651314 * r9651340;
double r9651342 = r9651341 + r9651305;
double r9651343 = r9651338 ? r9651342 : r9651336;
double r9651344 = r9651307 ? r9651336 : r9651343;
return r9651344;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.6 |
|---|---|
| Target | 15.4 |
| Herbie | 16.5 |
if eps < -6.157168877465971e-289 or 1.4726209133031981e-53 < eps Initial program 33.9
rmApplied tan-sum14.2
rmApplied flip3--14.3
Applied associate-/r/14.3
Simplified14.3
Taylor expanded around -inf 14.4
Simplified12.8
if -6.157168877465971e-289 < eps < 1.4726209133031981e-53Initial program 46.3
Taylor expanded around 0 30.0
Simplified29.9
Final simplification16.5
herbie shell --seed 2019119
(FPCore (x eps)
:name "2tan (problem 3.3.2)"
:herbie-target
(/ (sin eps) (* (cos x) (cos (+ x eps))))
(- (tan (+ x eps)) (tan x)))