\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -9.69352787633815922929071472670459335417 \cdot 10^{-114}:\\
\;\;\;\;\left(x + y\right) - \left(\sqrt[3]{\left(\frac{\frac{\sqrt[3]{z - t}}{\sqrt[3]{a - t}}}{\sqrt[3]{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}} \cdot \frac{y}{\sqrt[3]{\sqrt[3]{a - t}}}\right) \cdot \frac{\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}}{\sqrt[3]{a - t}}} \cdot \sqrt[3]{\left(\frac{\frac{\sqrt[3]{z - t}}{\sqrt[3]{a - t}}}{\sqrt[3]{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}} \cdot \frac{y}{\sqrt[3]{\sqrt[3]{a - t}}}\right) \cdot \frac{\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}}{\sqrt[3]{a - t}}}\right) \cdot \sqrt[3]{\left(\frac{\frac{\sqrt[3]{z - t}}{\sqrt[3]{a - t}}}{\sqrt[3]{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}} \cdot \frac{y}{\sqrt[3]{\sqrt[3]{a - t}}}\right) \cdot \frac{\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}}{\sqrt[3]{a - t}}}\\
\mathbf{elif}\;a \le 1.889084039169875659727922857236046312161 \cdot 10^{-110}:\\
\;\;\;\;\frac{z \cdot y}{t} + x\\
\mathbf{elif}\;a \le 5.919178498880237805604501360892005847147 \cdot 10^{-44}:\\
\;\;\;\;\left(x + y\right) - \left(\sqrt[3]{\frac{z - t}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}} \cdot \sqrt[3]{\frac{z - t}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}}\right) \cdot \left(\sqrt[3]{\frac{z - t}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}} \cdot \frac{y}{\sqrt[3]{a - t}}\right)\\
\mathbf{elif}\;a \le 9.934875400147095918607310666158699856074 \cdot 10^{-12}:\\
\;\;\;\;\frac{z \cdot y}{t} + x\\
\mathbf{else}:\\
\;\;\;\;\left(x + y\right) - \frac{z - t}{\frac{a - t}{y}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r444467 = x;
double r444468 = y;
double r444469 = r444467 + r444468;
double r444470 = z;
double r444471 = t;
double r444472 = r444470 - r444471;
double r444473 = r444472 * r444468;
double r444474 = a;
double r444475 = r444474 - r444471;
double r444476 = r444473 / r444475;
double r444477 = r444469 - r444476;
return r444477;
}
double f(double x, double y, double z, double t, double a) {
double r444478 = a;
double r444479 = -9.693527876338159e-114;
bool r444480 = r444478 <= r444479;
double r444481 = x;
double r444482 = y;
double r444483 = r444481 + r444482;
double r444484 = z;
double r444485 = t;
double r444486 = r444484 - r444485;
double r444487 = cbrt(r444486);
double r444488 = r444478 - r444485;
double r444489 = cbrt(r444488);
double r444490 = r444487 / r444489;
double r444491 = r444489 * r444489;
double r444492 = cbrt(r444491);
double r444493 = r444490 / r444492;
double r444494 = cbrt(r444489);
double r444495 = r444482 / r444494;
double r444496 = r444493 * r444495;
double r444497 = r444487 * r444487;
double r444498 = r444497 / r444489;
double r444499 = r444496 * r444498;
double r444500 = cbrt(r444499);
double r444501 = r444500 * r444500;
double r444502 = r444501 * r444500;
double r444503 = r444483 - r444502;
double r444504 = 1.8890840391698757e-110;
bool r444505 = r444478 <= r444504;
double r444506 = r444484 * r444482;
double r444507 = r444506 / r444485;
double r444508 = r444507 + r444481;
double r444509 = 5.919178498880238e-44;
bool r444510 = r444478 <= r444509;
double r444511 = r444486 / r444491;
double r444512 = cbrt(r444511);
double r444513 = r444512 * r444512;
double r444514 = r444482 / r444489;
double r444515 = r444512 * r444514;
double r444516 = r444513 * r444515;
double r444517 = r444483 - r444516;
double r444518 = 9.934875400147096e-12;
bool r444519 = r444478 <= r444518;
double r444520 = r444488 / r444482;
double r444521 = r444486 / r444520;
double r444522 = r444483 - r444521;
double r444523 = r444519 ? r444508 : r444522;
double r444524 = r444510 ? r444517 : r444523;
double r444525 = r444505 ? r444508 : r444524;
double r444526 = r444480 ? r444503 : r444525;
return r444526;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 16.6 |
|---|---|
| Target | 8.4 |
| Herbie | 9.7 |
if a < -9.693527876338159e-114Initial program 15.2
rmApplied add-cube-cbrt15.3
Applied times-frac8.4
rmApplied add-cube-cbrt8.4
Applied cbrt-prod8.5
Applied *-un-lft-identity8.5
Applied times-frac8.5
Applied associate-*r*8.5
Simplified8.4
rmApplied *-un-lft-identity8.4
Applied add-cube-cbrt8.5
Applied times-frac8.5
Applied times-frac8.5
Applied associate-*l*8.3
rmApplied add-cube-cbrt8.3
Simplified8.3
Simplified8.3
if -9.693527876338159e-114 < a < 1.8890840391698757e-110 or 5.919178498880238e-44 < a < 9.934875400147096e-12Initial program 20.0
Taylor expanded around inf 12.5
if 1.8890840391698757e-110 < a < 5.919178498880238e-44Initial program 15.6
rmApplied add-cube-cbrt15.9
Applied times-frac14.9
rmApplied add-cube-cbrt14.9
Applied associate-*l*14.9
if 9.934875400147096e-12 < a Initial program 14.3
rmApplied associate-/l*6.8
Final simplification9.7
herbie shell --seed 2019303
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTick from plot-0.2.3.4, B"
:precision binary64
:herbie-target
(if (< (- (+ x y) (/ (* (- z t) y) (- a t))) -1.3664970889390727e-7) (- (+ y x) (* (* (- z t) (/ 1 (- a t))) y)) (if (< (- (+ x y) (/ (* (- z t) y) (- a t))) 1.47542934445772333e-239) (/ (- (* y (- a z)) (* x t)) (- a t)) (- (+ y x) (* (* (- z t) (/ 1 (- a t))) y))))
(- (+ x y) (/ (* (- z t) y) (- a t))))