x + \frac{\left(y - z\right) \cdot t}{a - z}\begin{array}{l}
\mathbf{if}\;\frac{\left(y - z\right) \cdot t}{a - z} = -\infty:\\
\;\;\;\;x + \frac{y - z}{a - z} \cdot t\\
\mathbf{elif}\;\frac{\left(y - z\right) \cdot t}{a - z} \le 8.192139118797283256652162858391000098475 \cdot 10^{276}:\\
\;\;\;\;\frac{\left(y - z\right) \cdot t}{a - z} + x\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y - z}{a - z} \cdot t\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r22528431 = x;
double r22528432 = y;
double r22528433 = z;
double r22528434 = r22528432 - r22528433;
double r22528435 = t;
double r22528436 = r22528434 * r22528435;
double r22528437 = a;
double r22528438 = r22528437 - r22528433;
double r22528439 = r22528436 / r22528438;
double r22528440 = r22528431 + r22528439;
return r22528440;
}
double f(double x, double y, double z, double t, double a) {
double r22528441 = y;
double r22528442 = z;
double r22528443 = r22528441 - r22528442;
double r22528444 = t;
double r22528445 = r22528443 * r22528444;
double r22528446 = a;
double r22528447 = r22528446 - r22528442;
double r22528448 = r22528445 / r22528447;
double r22528449 = -inf.0;
bool r22528450 = r22528448 <= r22528449;
double r22528451 = x;
double r22528452 = r22528443 / r22528447;
double r22528453 = r22528452 * r22528444;
double r22528454 = r22528451 + r22528453;
double r22528455 = 8.192139118797283e+276;
bool r22528456 = r22528448 <= r22528455;
double r22528457 = r22528448 + r22528451;
double r22528458 = r22528456 ? r22528457 : r22528454;
double r22528459 = r22528450 ? r22528454 : r22528458;
return r22528459;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 11.2 |
|---|---|
| Target | 0.6 |
| Herbie | 0.4 |
if (/ (* (- y z) t) (- a z)) < -inf.0 or 8.192139118797283e+276 < (/ (* (- y z) t) (- a z)) Initial program 61.4
Simplified0.6
rmApplied fma-udef0.6
if -inf.0 < (/ (* (- y z) t) (- a z)) < 8.192139118797283e+276Initial program 0.3
Final simplification0.4
herbie shell --seed 2019168 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTick from plot-0.2.3.4, A"
:herbie-target
(if (< t -1.0682974490174067e-39) (+ x (* (/ (- y z) (- a z)) t)) (if (< t 3.9110949887586375e-141) (+ x (/ (* (- y z) t) (- a z))) (+ x (* (/ (- y z) (- a z)) t))))
(+ x (/ (* (- y z) t) (- a z))))