\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -7.132241680778371439277305115805168064789 \cdot 10^{-88}:\\
\;\;\;\;\left(x + y\right) - \frac{\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}}{\sqrt[3]{\sqrt[3]{a - t}} \cdot \sqrt[3]{\sqrt[3]{a - t}}} \cdot \left(\frac{y}{\sqrt[3]{\sqrt[3]{a - t}}} \cdot \frac{\sqrt[3]{z - t}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right)\\
\mathbf{elif}\;a \le 1.027335171522283942303792214737225884323 \cdot 10^{-108}:\\
\;\;\;\;x + \frac{z \cdot y}{t}\\
\mathbf{else}:\\
\;\;\;\;\left(x + y\right) - \frac{\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}}{\sqrt[3]{\sqrt[3]{a - t}} \cdot \sqrt[3]{\sqrt[3]{a - t}}} \cdot \left(\frac{y}{\sqrt[3]{\sqrt[3]{a - t}}} \cdot \frac{\sqrt[3]{z - t}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r38243434 = x;
double r38243435 = y;
double r38243436 = r38243434 + r38243435;
double r38243437 = z;
double r38243438 = t;
double r38243439 = r38243437 - r38243438;
double r38243440 = r38243439 * r38243435;
double r38243441 = a;
double r38243442 = r38243441 - r38243438;
double r38243443 = r38243440 / r38243442;
double r38243444 = r38243436 - r38243443;
return r38243444;
}
double f(double x, double y, double z, double t, double a) {
double r38243445 = a;
double r38243446 = -7.132241680778371e-88;
bool r38243447 = r38243445 <= r38243446;
double r38243448 = x;
double r38243449 = y;
double r38243450 = r38243448 + r38243449;
double r38243451 = z;
double r38243452 = t;
double r38243453 = r38243451 - r38243452;
double r38243454 = cbrt(r38243453);
double r38243455 = r38243454 * r38243454;
double r38243456 = r38243445 - r38243452;
double r38243457 = cbrt(r38243456);
double r38243458 = cbrt(r38243457);
double r38243459 = r38243458 * r38243458;
double r38243460 = r38243455 / r38243459;
double r38243461 = r38243449 / r38243458;
double r38243462 = r38243457 * r38243457;
double r38243463 = r38243454 / r38243462;
double r38243464 = r38243461 * r38243463;
double r38243465 = r38243460 * r38243464;
double r38243466 = r38243450 - r38243465;
double r38243467 = 1.027335171522284e-108;
bool r38243468 = r38243445 <= r38243467;
double r38243469 = r38243451 * r38243449;
double r38243470 = r38243469 / r38243452;
double r38243471 = r38243448 + r38243470;
double r38243472 = r38243468 ? r38243471 : r38243466;
double r38243473 = r38243447 ? r38243466 : r38243472;
return r38243473;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 16.4 |
|---|---|
| Target | 8.6 |
| Herbie | 9.5 |
if a < -7.132241680778371e-88 or 1.027335171522284e-108 < a Initial program 14.7
rmApplied add-cube-cbrt14.8
Applied times-frac8.3
rmApplied add-cube-cbrt8.3
Applied *-un-lft-identity8.3
Applied times-frac8.3
Applied associate-*r*8.2
Simplified8.2
rmApplied add-cube-cbrt8.3
Applied times-frac8.3
Applied associate-*l*8.2
if -7.132241680778371e-88 < a < 1.027335171522284e-108Initial program 20.3
Taylor expanded around inf 12.3
Final simplification9.5
herbie shell --seed 2019171
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTick from plot-0.2.3.4, B"
:herbie-target
(if (< (- (+ x y) (/ (* (- z t) y) (- a t))) -1.3664970889390727e-07) (- (+ y x) (* (* (- z t) (/ 1.0 (- a t))) y)) (if (< (- (+ x y) (/ (* (- z t) y) (- a t))) 1.4754293444577233e-239) (/ (- (* y (- a z)) (* x t)) (- a t)) (- (+ y x) (* (* (- z t) (/ 1.0 (- a t))) y))))
(- (+ x y) (/ (* (- z t) y) (- a t))))