x - \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;y \le -3.0637893463441613 \cdot 10^{62} \lor \neg \left(y \le 8.1614470454838748 \cdot 10^{-13}\right):\\
\;\;\;\;x - \frac{y}{\frac{a}{z - t}}\\
\mathbf{else}:\\
\;\;\;\;x - \frac{y \cdot z + y \cdot \left(-t\right)}{a}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r264590 = x;
double r264591 = y;
double r264592 = z;
double r264593 = t;
double r264594 = r264592 - r264593;
double r264595 = r264591 * r264594;
double r264596 = a;
double r264597 = r264595 / r264596;
double r264598 = r264590 - r264597;
return r264598;
}
double f(double x, double y, double z, double t, double a) {
double r264599 = y;
double r264600 = -3.0637893463441613e+62;
bool r264601 = r264599 <= r264600;
double r264602 = 8.161447045483875e-13;
bool r264603 = r264599 <= r264602;
double r264604 = !r264603;
bool r264605 = r264601 || r264604;
double r264606 = x;
double r264607 = a;
double r264608 = z;
double r264609 = t;
double r264610 = r264608 - r264609;
double r264611 = r264607 / r264610;
double r264612 = r264599 / r264611;
double r264613 = r264606 - r264612;
double r264614 = r264599 * r264608;
double r264615 = -r264609;
double r264616 = r264599 * r264615;
double r264617 = r264614 + r264616;
double r264618 = r264617 / r264607;
double r264619 = r264606 - r264618;
double r264620 = r264605 ? r264613 : r264619;
return r264620;
}




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+62 or 8.161447045483875e-13 < y Initial program 16.1
rmApplied associate-/l*0.9
if -3.0637893463441613e+62 < y < 8.161447045483875e-13Initial program 0.8
rmApplied sub-neg0.8
Applied distribute-lft-in0.8
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, 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)))