x + \frac{y \cdot \left(z - t\right)}{z - a}\begin{array}{l}
\mathbf{if}\;z \le -6.964036638581209574726043986735525528163 \cdot 10^{-102} \lor \neg \left(z \le 9.403031276241487005540332044897243661846 \cdot 10^{-164}\right):\\
\;\;\;\;x + y \cdot \frac{z - t}{z - a}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y}{\sqrt[3]{z - a} \cdot \sqrt[3]{z - a}} \cdot \frac{z - t}{\sqrt[3]{z - a}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r363609 = x;
double r363610 = y;
double r363611 = z;
double r363612 = t;
double r363613 = r363611 - r363612;
double r363614 = r363610 * r363613;
double r363615 = a;
double r363616 = r363611 - r363615;
double r363617 = r363614 / r363616;
double r363618 = r363609 + r363617;
return r363618;
}
double f(double x, double y, double z, double t, double a) {
double r363619 = z;
double r363620 = -6.9640366385812096e-102;
bool r363621 = r363619 <= r363620;
double r363622 = 9.403031276241487e-164;
bool r363623 = r363619 <= r363622;
double r363624 = !r363623;
bool r363625 = r363621 || r363624;
double r363626 = x;
double r363627 = y;
double r363628 = t;
double r363629 = r363619 - r363628;
double r363630 = a;
double r363631 = r363619 - r363630;
double r363632 = r363629 / r363631;
double r363633 = r363627 * r363632;
double r363634 = r363626 + r363633;
double r363635 = cbrt(r363631);
double r363636 = r363635 * r363635;
double r363637 = r363627 / r363636;
double r363638 = r363629 / r363635;
double r363639 = r363637 * r363638;
double r363640 = r363626 + r363639;
double r363641 = r363625 ? r363634 : r363640;
return r363641;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.9 |
|---|---|
| Target | 1.4 |
| Herbie | 1.3 |
if z < -6.9640366385812096e-102 or 9.403031276241487e-164 < z Initial program 13.5
rmApplied *-un-lft-identity13.5
Applied times-frac0.5
Simplified0.5
if -6.9640366385812096e-102 < z < 9.403031276241487e-164Initial program 3.3
rmApplied add-cube-cbrt3.8
Applied times-frac3.4
Final simplification1.3
herbie shell --seed 2019306
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, A"
:precision binary64
:herbie-target
(+ x (/ y (/ (- z a) (- z t))))
(+ x (/ (* y (- z t)) (- z a))))