x + \frac{y \cdot \left(z - t\right)}{z - a}\begin{array}{l}
\mathbf{if}\;\frac{\left(z - t\right) \cdot y}{z - a} = -\infty:\\
\;\;\;\;\left(z + a\right) \cdot \left(\frac{z - t}{z + a} \cdot \frac{y}{z - a}\right) + x\\
\mathbf{elif}\;\frac{\left(z - t\right) \cdot y}{z - a} \le 1.032427938808143638099175168164648641698 \cdot 10^{193}:\\
\;\;\;\;x + \frac{\left(z - t\right) \cdot y}{z - a}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(z - t, \frac{1}{z - a} \cdot y, x\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r29375968 = x;
double r29375969 = y;
double r29375970 = z;
double r29375971 = t;
double r29375972 = r29375970 - r29375971;
double r29375973 = r29375969 * r29375972;
double r29375974 = a;
double r29375975 = r29375970 - r29375974;
double r29375976 = r29375973 / r29375975;
double r29375977 = r29375968 + r29375976;
return r29375977;
}
double f(double x, double y, double z, double t, double a) {
double r29375978 = z;
double r29375979 = t;
double r29375980 = r29375978 - r29375979;
double r29375981 = y;
double r29375982 = r29375980 * r29375981;
double r29375983 = a;
double r29375984 = r29375978 - r29375983;
double r29375985 = r29375982 / r29375984;
double r29375986 = -inf.0;
bool r29375987 = r29375985 <= r29375986;
double r29375988 = r29375978 + r29375983;
double r29375989 = r29375980 / r29375988;
double r29375990 = r29375981 / r29375984;
double r29375991 = r29375989 * r29375990;
double r29375992 = r29375988 * r29375991;
double r29375993 = x;
double r29375994 = r29375992 + r29375993;
double r29375995 = 1.0324279388081436e+193;
bool r29375996 = r29375985 <= r29375995;
double r29375997 = r29375993 + r29375985;
double r29375998 = 1.0;
double r29375999 = r29375998 / r29375984;
double r29376000 = r29375999 * r29375981;
double r29376001 = fma(r29375980, r29376000, r29375993);
double r29376002 = r29375996 ? r29375997 : r29376001;
double r29376003 = r29375987 ? r29375994 : r29376002;
return r29376003;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 10.9 |
|---|---|
| Target | 1.3 |
| Herbie | 0.6 |
if (/ (* y (- z t)) (- z a)) < -inf.0Initial program 64.0
Simplified0.1
rmApplied fma-udef0.1
rmApplied flip--42.2
Applied associate-/r/42.2
Applied associate-*r*42.3
Simplified0.2
if -inf.0 < (/ (* y (- z t)) (- z a)) < 1.0324279388081436e+193Initial program 0.2
Simplified3.3
rmApplied fma-udef3.3
rmApplied add-cube-cbrt3.7
Applied associate-*l*3.7
rmApplied associate-*r/2.1
Applied associate-*r/0.7
Simplified0.2
if 1.0324279388081436e+193 < (/ (* y (- z t)) (- z a)) Initial program 48.2
Simplified3.0
rmApplied div-inv3.1
Final simplification0.6
herbie shell --seed 2019169 +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))))