\tan \left(x + \varepsilon\right) - \tan x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.3912258087269967 \cdot 10^{-24}:\\
\;\;\;\;\frac{\frac{\left(\tan \varepsilon + \tan x\right) \cdot \left(\tan x - \tan \varepsilon\right)}{\tan x - \tan \varepsilon}}{1 - \tan x \cdot \tan \varepsilon} - \tan x\\
\mathbf{elif}\;\varepsilon \le 6.057698547984444 \cdot 10^{-19}:\\
\;\;\;\;\varepsilon + \left(x + \varepsilon\right) \cdot \left(x \cdot \varepsilon\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\cos x \cdot \left(\left(1 - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)\right) \cdot \frac{\tan \varepsilon + \tan x}{1 - \left(\sqrt[3]{\left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)} \cdot \sqrt[3]{\left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)}\right) \cdot \sqrt[3]{\left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)}}\right) - \sin x \cdot \left(1 - \tan x \cdot \tan \varepsilon\right)}{\cos x \cdot \left(1 - \tan x \cdot \tan \varepsilon\right)}\\
\end{array}double f(double x, double eps) {
double r1569272 = x;
double r1569273 = eps;
double r1569274 = r1569272 + r1569273;
double r1569275 = tan(r1569274);
double r1569276 = tan(r1569272);
double r1569277 = r1569275 - r1569276;
return r1569277;
}
double f(double x, double eps) {
double r1569278 = eps;
double r1569279 = -1.3912258087269967e-24;
bool r1569280 = r1569278 <= r1569279;
double r1569281 = tan(r1569278);
double r1569282 = x;
double r1569283 = tan(r1569282);
double r1569284 = r1569281 + r1569283;
double r1569285 = r1569283 - r1569281;
double r1569286 = r1569284 * r1569285;
double r1569287 = r1569286 / r1569285;
double r1569288 = 1.0;
double r1569289 = r1569283 * r1569281;
double r1569290 = r1569288 - r1569289;
double r1569291 = r1569287 / r1569290;
double r1569292 = r1569291 - r1569283;
double r1569293 = 6.057698547984444e-19;
bool r1569294 = r1569278 <= r1569293;
double r1569295 = r1569282 + r1569278;
double r1569296 = r1569282 * r1569278;
double r1569297 = r1569295 * r1569296;
double r1569298 = r1569278 + r1569297;
double r1569299 = cos(r1569282);
double r1569300 = r1569289 * r1569289;
double r1569301 = r1569288 - r1569300;
double r1569302 = cbrt(r1569300);
double r1569303 = r1569302 * r1569302;
double r1569304 = r1569303 * r1569302;
double r1569305 = r1569288 - r1569304;
double r1569306 = r1569284 / r1569305;
double r1569307 = r1569301 * r1569306;
double r1569308 = r1569299 * r1569307;
double r1569309 = sin(r1569282);
double r1569310 = r1569309 * r1569290;
double r1569311 = r1569308 - r1569310;
double r1569312 = r1569299 * r1569290;
double r1569313 = r1569311 / r1569312;
double r1569314 = r1569294 ? r1569298 : r1569313;
double r1569315 = r1569280 ? r1569292 : r1569314;
return r1569315;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.0 |
|---|---|
| Target | 14.8 |
| Herbie | 15.5 |
if eps < -1.3912258087269967e-24Initial program 28.7
rmApplied tan-sum2.0
rmApplied flip-+2.1
Simplified2.1
if -1.3912258087269967e-24 < eps < 6.057698547984444e-19Initial program 45.4
Taylor expanded around 0 31.0
Simplified31.0
if 6.057698547984444e-19 < eps Initial program 30.5
rmApplied tan-sum1.3
rmApplied flip--1.3
Applied associate-/r/1.3
Simplified1.3
rmApplied add-cube-cbrt1.5
rmApplied tan-quot1.5
Applied flip-+1.5
Applied associate-*r/1.5
Applied frac-sub1.5
Final simplification15.5
herbie shell --seed 2019154
(FPCore (x eps)
:name "2tan (problem 3.3.2)"
:herbie-target
(/ (sin eps) (* (cos x) (cos (+ x eps))))
(- (tan (+ x eps)) (tan x)))