x + \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;y \le -3.0637893463441613 \cdot 10^{62}:\\
\;\;\;\;x + \frac{y}{\frac{a}{z - t}}\\
\mathbf{elif}\;y \le 4.0646321336868101 \cdot 10^{-14}:\\
\;\;\;\;x + \frac{y \cdot z + y \cdot \left(-t\right)}{a}\\
\mathbf{else}:\\
\;\;\;\;x + y \cdot \frac{z - t}{a}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r437876 = x;
double r437877 = y;
double r437878 = z;
double r437879 = t;
double r437880 = r437878 - r437879;
double r437881 = r437877 * r437880;
double r437882 = a;
double r437883 = r437881 / r437882;
double r437884 = r437876 + r437883;
return r437884;
}
double f(double x, double y, double z, double t, double a) {
double r437885 = y;
double r437886 = -3.0637893463441613e+62;
bool r437887 = r437885 <= r437886;
double r437888 = x;
double r437889 = a;
double r437890 = z;
double r437891 = t;
double r437892 = r437890 - r437891;
double r437893 = r437889 / r437892;
double r437894 = r437885 / r437893;
double r437895 = r437888 + r437894;
double r437896 = 4.06463213368681e-14;
bool r437897 = r437885 <= r437896;
double r437898 = r437885 * r437890;
double r437899 = -r437891;
double r437900 = r437885 * r437899;
double r437901 = r437898 + r437900;
double r437902 = r437901 / r437889;
double r437903 = r437888 + r437902;
double r437904 = r437892 / r437889;
double r437905 = r437885 * r437904;
double r437906 = r437888 + r437905;
double r437907 = r437897 ? r437903 : r437906;
double r437908 = r437887 ? r437895 : r437907;
return r437908;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.0 |
|---|---|
| Target | 0.8 |
| Herbie | 0.8 |
if y < -3.0637893463441613e+62Initial program 18.9
rmApplied associate-/l*1.1
if -3.0637893463441613e+62 < y < 4.06463213368681e-14Initial program 0.8
rmApplied sub-neg0.8
Applied distribute-lft-in0.8
if 4.06463213368681e-14 < y Initial program 14.1
rmApplied *-un-lft-identity14.1
Applied times-frac0.7
Simplified0.7
Final simplification0.8
herbie shell --seed 2020034 +o rules:numerics
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, E"
:precision binary64
:herbie-target
(if (< y -1.0761266216389975e-10) (+ x (/ 1 (/ (/ a (- z t)) y))) (if (< y 2.894426862792089e-49) (+ x (/ (* y (- z t)) a)) (+ x (/ y (/ a (- z t))))))
(+ x (/ (* y (- z t)) a)))