x + \frac{y \cdot \left(z - x\right)}{t}\begin{array}{l}
\mathbf{if}\;x + \frac{\left(z - x\right) \cdot y}{t} = -\infty:\\
\;\;\;\;x + \frac{y}{\frac{t}{z - x}}\\
\mathbf{elif}\;x + \frac{\left(z - x\right) \cdot y}{t} \le -8.469201958944395 \cdot 10^{-176}:\\
\;\;\;\;x + \frac{\left(z - x\right) \cdot y}{t}\\
\mathbf{else}:\\
\;\;\;\;\frac{y}{t} \cdot \left(z - x\right) + x\\
\end{array}double f(double x, double y, double z, double t) {
double r6815897 = x;
double r6815898 = y;
double r6815899 = z;
double r6815900 = r6815899 - r6815897;
double r6815901 = r6815898 * r6815900;
double r6815902 = t;
double r6815903 = r6815901 / r6815902;
double r6815904 = r6815897 + r6815903;
return r6815904;
}
double f(double x, double y, double z, double t) {
double r6815905 = x;
double r6815906 = z;
double r6815907 = r6815906 - r6815905;
double r6815908 = y;
double r6815909 = r6815907 * r6815908;
double r6815910 = t;
double r6815911 = r6815909 / r6815910;
double r6815912 = r6815905 + r6815911;
double r6815913 = -inf.0;
bool r6815914 = r6815912 <= r6815913;
double r6815915 = r6815910 / r6815907;
double r6815916 = r6815908 / r6815915;
double r6815917 = r6815905 + r6815916;
double r6815918 = -8.469201958944395e-176;
bool r6815919 = r6815912 <= r6815918;
double r6815920 = r6815908 / r6815910;
double r6815921 = r6815920 * r6815907;
double r6815922 = r6815921 + r6815905;
double r6815923 = r6815919 ? r6815912 : r6815922;
double r6815924 = r6815914 ? r6815917 : r6815923;
return r6815924;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.2 |
|---|---|
| Target | 1.9 |
| Herbie | 1.3 |
if (+ x (/ (* y (- z x)) t)) < -inf.0Initial program 60.2
rmApplied associate-/l*0.2
if -inf.0 < (+ x (/ (* y (- z x)) t)) < -8.469201958944395e-176Initial program 0.4
if -8.469201958944395e-176 < (+ x (/ (* y (- z x)) t)) Initial program 5.9
Taylor expanded around 0 5.9
Simplified2.0
Final simplification1.3
herbie shell --seed 2019156
(FPCore (x y z t)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, D"
:herbie-target
(- x (+ (* x (/ y t)) (* (- z) (/ y t))))
(+ x (/ (* y (- z x)) t)))