x - \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;\frac{y \cdot \left(z - t\right)}{a} \le -8.963886535039347471937028690168546917254 \cdot 10^{299} \lor \neg \left(\frac{y \cdot \left(z - t\right)}{a} \le 1.947585218067920906632704854880810808419 \cdot 10^{229}\right):\\
\;\;\;\;x - \frac{y}{a} \cdot \left(z - t\right)\\
\mathbf{else}:\\
\;\;\;\;x - \frac{y \cdot \left(z - t\right)}{a}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r219834 = x;
double r219835 = y;
double r219836 = z;
double r219837 = t;
double r219838 = r219836 - r219837;
double r219839 = r219835 * r219838;
double r219840 = a;
double r219841 = r219839 / r219840;
double r219842 = r219834 - r219841;
return r219842;
}
double f(double x, double y, double z, double t, double a) {
double r219843 = y;
double r219844 = z;
double r219845 = t;
double r219846 = r219844 - r219845;
double r219847 = r219843 * r219846;
double r219848 = a;
double r219849 = r219847 / r219848;
double r219850 = -8.963886535039347e+299;
bool r219851 = r219849 <= r219850;
double r219852 = 1.947585218067921e+229;
bool r219853 = r219849 <= r219852;
double r219854 = !r219853;
bool r219855 = r219851 || r219854;
double r219856 = x;
double r219857 = r219843 / r219848;
double r219858 = r219857 * r219846;
double r219859 = r219856 - r219858;
double r219860 = r219856 - r219849;
double r219861 = r219855 ? r219859 : r219860;
return r219861;
}




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.7 |
| Herbie | 0.8 |
if (/ (* y (- z t)) a) < -8.963886535039347e+299 or 1.947585218067921e+229 < (/ (* y (- z t)) a) Initial program 41.8
rmApplied associate-/l*9.0
rmApplied associate-/r/3.6
if -8.963886535039347e+299 < (/ (* y (- z t)) a) < 1.947585218067921e+229Initial program 0.4
Final simplification0.8
herbie shell --seed 2019325
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, F"
: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)))