x + \frac{y \cdot \left(z - t\right)}{z - a}\begin{array}{l}
\mathbf{if}\;\frac{y \cdot \left(z - t\right)}{z - a} = -\infty:\\
\;\;\;\;x + \frac{y}{\frac{z - a}{z - t}}\\
\mathbf{elif}\;\frac{y \cdot \left(z - t\right)}{z - a} \le 2.886184098505586518165870377542885099677 \cdot 10^{246}:\\
\;\;\;\;x + \frac{y \cdot \left(z - t\right)}{z - a}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y}{\frac{z - a}{z - t}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r111559400 = x;
double r111559401 = y;
double r111559402 = z;
double r111559403 = t;
double r111559404 = r111559402 - r111559403;
double r111559405 = r111559401 * r111559404;
double r111559406 = a;
double r111559407 = r111559402 - r111559406;
double r111559408 = r111559405 / r111559407;
double r111559409 = r111559400 + r111559408;
return r111559409;
}
double f(double x, double y, double z, double t, double a) {
double r111559410 = y;
double r111559411 = z;
double r111559412 = t;
double r111559413 = r111559411 - r111559412;
double r111559414 = r111559410 * r111559413;
double r111559415 = a;
double r111559416 = r111559411 - r111559415;
double r111559417 = r111559414 / r111559416;
double r111559418 = -inf.0;
bool r111559419 = r111559417 <= r111559418;
double r111559420 = x;
double r111559421 = r111559416 / r111559413;
double r111559422 = r111559410 / r111559421;
double r111559423 = r111559420 + r111559422;
double r111559424 = 2.8861840985055865e+246;
bool r111559425 = r111559417 <= r111559424;
double r111559426 = r111559420 + r111559417;
double r111559427 = r111559425 ? r111559426 : r111559423;
double r111559428 = r111559419 ? r111559423 : r111559427;
return r111559428;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.7 |
|---|---|
| Target | 1.4 |
| Herbie | 0.4 |
if (/ (* y (- z t)) (- z a)) < -inf.0 or 2.8861840985055865e+246 < (/ (* y (- z t)) (- z a)) Initial program 59.0
rmApplied associate-/l*1.2
if -inf.0 < (/ (* y (- z t)) (- z a)) < 2.8861840985055865e+246Initial program 0.2
Final simplification0.4
herbie shell --seed 2019173 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, A"
:herbie-target
(+ x (/ y (/ (- z a) (- z t))))
(+ x (/ (* y (- z t)) (- z a))))