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 -5.7605669624172336 \cdot 10^{285} \lor \neg \left(\frac{y \cdot \left(z - t\right)}{z - a} \le 2.013977722943551 \cdot 10^{307}\right):\\
\;\;\;\;x + \frac{y}{\frac{1}{\frac{z - t}{z - a}}}\\
\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 r553321 = x;
double r553322 = y;
double r553323 = z;
double r553324 = t;
double r553325 = r553323 - r553324;
double r553326 = r553322 * r553325;
double r553327 = a;
double r553328 = r553323 - r553327;
double r553329 = r553326 / r553328;
double r553330 = r553321 + r553329;
return r553330;
}
double f(double x, double y, double z, double t, double a) {
double r553331 = y;
double r553332 = z;
double r553333 = t;
double r553334 = r553332 - r553333;
double r553335 = r553331 * r553334;
double r553336 = a;
double r553337 = r553332 - r553336;
double r553338 = r553335 / r553337;
double r553339 = -5.760566962417234e+285;
bool r553340 = r553338 <= r553339;
double r553341 = 2.013977722943551e+307;
bool r553342 = r553338 <= r553341;
double r553343 = !r553342;
bool r553344 = r553340 || r553343;
double r553345 = x;
double r553346 = 1.0;
double r553347 = r553334 / r553337;
double r553348 = r553346 / r553347;
double r553349 = r553331 / r553348;
double r553350 = r553345 + r553349;
double r553351 = r553345 + r553338;
double r553352 = r553344 ? r553350 : r553351;
return r553352;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 11.0 |
|---|---|
| Target | 1.1 |
| Herbie | 0.3 |
if (/ (* y (- z t)) (- z a)) < -5.760566962417234e+285 or 2.013977722943551e+307 < (/ (* y (- z t)) (- z a)) Initial program 61.9
rmApplied associate-/l*0.5
rmApplied clear-num0.5
if -5.760566962417234e+285 < (/ (* y (- z t)) (- z a)) < 2.013977722943551e+307Initial program 0.3
Final simplification0.3
herbie shell --seed 2020081
(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))))