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:\\
\;\;\;\;x + \frac{y}{z - a} \cdot \left(z - t\right)\\
\mathbf{elif}\;\frac{\left(z - t\right) \cdot y}{z - a} \le 2.03069192252577092675394733133123423883 \cdot 10^{294}:\\
\;\;\;\;x + \frac{\left(z - t\right) \cdot y}{z - a}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y}{z - a} \cdot \left(z - t\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r30021745 = x;
double r30021746 = y;
double r30021747 = z;
double r30021748 = t;
double r30021749 = r30021747 - r30021748;
double r30021750 = r30021746 * r30021749;
double r30021751 = a;
double r30021752 = r30021747 - r30021751;
double r30021753 = r30021750 / r30021752;
double r30021754 = r30021745 + r30021753;
return r30021754;
}
double f(double x, double y, double z, double t, double a) {
double r30021755 = z;
double r30021756 = t;
double r30021757 = r30021755 - r30021756;
double r30021758 = y;
double r30021759 = r30021757 * r30021758;
double r30021760 = a;
double r30021761 = r30021755 - r30021760;
double r30021762 = r30021759 / r30021761;
double r30021763 = -inf.0;
bool r30021764 = r30021762 <= r30021763;
double r30021765 = x;
double r30021766 = r30021758 / r30021761;
double r30021767 = r30021766 * r30021757;
double r30021768 = r30021765 + r30021767;
double r30021769 = 2.030691922525771e+294;
bool r30021770 = r30021762 <= r30021769;
double r30021771 = r30021765 + r30021762;
double r30021772 = r30021770 ? r30021771 : r30021768;
double r30021773 = r30021764 ? r30021768 : r30021772;
return r30021773;
}




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.2 |
| Herbie | 0.3 |
if (/ (* y (- z t)) (- z a)) < -inf.0 or 2.030691922525771e+294 < (/ (* y (- z t)) (- z a)) Initial program 63.0
Simplified0.3
rmApplied fma-udef0.3
if -inf.0 < (/ (* y (- z t)) (- z a)) < 2.030691922525771e+294Initial program 0.2
Simplified3.5
rmApplied fma-udef3.5
rmApplied add-cube-cbrt3.9
Applied *-un-lft-identity3.9
Applied times-frac3.9
Applied associate-*r*1.8
Simplified1.8
rmApplied frac-times0.7
Simplified0.2
Final simplification0.3
herbie shell --seed 2019170 +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))))