x + \frac{y \cdot \left(z - t\right)}{z - a}\begin{array}{l}
\mathbf{if}\;\frac{y \cdot \left(z - t\right)}{z - a} \le -8.7537559398872107 \cdot 10^{-143} \lor \neg \left(\frac{y \cdot \left(z - t\right)}{z - a} \le 3.1147786030260667 \cdot 10^{225}\right):\\
\;\;\;\;x + \frac{y}{\frac{z - a}{z - t}}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y \cdot \left(z - t\right)}{z - a}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r802474 = x;
double r802475 = y;
double r802476 = z;
double r802477 = t;
double r802478 = r802476 - r802477;
double r802479 = r802475 * r802478;
double r802480 = a;
double r802481 = r802476 - r802480;
double r802482 = r802479 / r802481;
double r802483 = r802474 + r802482;
return r802483;
}
double f(double x, double y, double z, double t, double a) {
double r802484 = y;
double r802485 = z;
double r802486 = t;
double r802487 = r802485 - r802486;
double r802488 = r802484 * r802487;
double r802489 = a;
double r802490 = r802485 - r802489;
double r802491 = r802488 / r802490;
double r802492 = -8.75375593988721e-143;
bool r802493 = r802491 <= r802492;
double r802494 = 3.114778603026067e+225;
bool r802495 = r802491 <= r802494;
double r802496 = !r802495;
bool r802497 = r802493 || r802496;
double r802498 = x;
double r802499 = r802490 / r802487;
double r802500 = r802484 / r802499;
double r802501 = r802498 + r802500;
double r802502 = r802498 + r802491;
double r802503 = r802497 ? r802501 : r802502;
return r802503;
}




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 | 1.1 |
if (/ (* y (- z t)) (- z a)) < -8.75375593988721e-143 or 3.114778603026067e+225 < (/ (* y (- z t)) (- z a)) Initial program 23.6
rmApplied associate-/l*2.0
if -8.75375593988721e-143 < (/ (* y (- z t)) (- z a)) < 3.114778603026067e+225Initial program 0.3
Final simplification1.1
herbie shell --seed 2020057
(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))))