x + \frac{\left(y - z\right) \cdot t}{a - z}\begin{array}{l}
\mathbf{if}\;t \le -573.259546568546853 \lor \neg \left(t \le 9.77340867370812975 \cdot 10^{-90}\right):\\
\;\;\;\;x + \frac{y - z}{a - z} \cdot t\\
\mathbf{else}:\\
\;\;\;\;x + \frac{\left(y - z\right) \cdot t}{a - z}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r589773 = x;
double r589774 = y;
double r589775 = z;
double r589776 = r589774 - r589775;
double r589777 = t;
double r589778 = r589776 * r589777;
double r589779 = a;
double r589780 = r589779 - r589775;
double r589781 = r589778 / r589780;
double r589782 = r589773 + r589781;
return r589782;
}
double f(double x, double y, double z, double t, double a) {
double r589783 = t;
double r589784 = -573.2595465685469;
bool r589785 = r589783 <= r589784;
double r589786 = 9.77340867370813e-90;
bool r589787 = r589783 <= r589786;
double r589788 = !r589787;
bool r589789 = r589785 || r589788;
double r589790 = x;
double r589791 = y;
double r589792 = z;
double r589793 = r589791 - r589792;
double r589794 = a;
double r589795 = r589794 - r589792;
double r589796 = r589793 / r589795;
double r589797 = r589796 * r589783;
double r589798 = r589790 + r589797;
double r589799 = r589793 * r589783;
double r589800 = r589799 / r589795;
double r589801 = r589790 + r589800;
double r589802 = r589789 ? r589798 : r589801;
return r589802;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 11.1 |
|---|---|
| Target | 0.7 |
| Herbie | 0.6 |
if t < -573.2595465685469 or 9.77340867370813e-90 < t Initial program 20.0
rmApplied associate-/l*1.9
rmApplied associate-/r/0.7
if -573.2595465685469 < t < 9.77340867370813e-90Initial program 0.5
Final simplification0.6
herbie shell --seed 2020081
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTick from plot-0.2.3.4, A"
:precision binary64
: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))))