x - \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;x - \frac{y \cdot \left(z - t\right)}{a} = -\infty:\\
\;\;\;\;x - \frac{y}{a} \cdot \left(z - t\right)\\
\mathbf{elif}\;x - \frac{y \cdot \left(z - t\right)}{a} \le 9.136892539129485 \cdot 10^{-243}:\\
\;\;\;\;x - \frac{y \cdot \left(z - t\right)}{a}\\
\mathbf{else}:\\
\;\;\;\;x - \frac{y}{a} \cdot \left(z - t\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r15895440 = x;
double r15895441 = y;
double r15895442 = z;
double r15895443 = t;
double r15895444 = r15895442 - r15895443;
double r15895445 = r15895441 * r15895444;
double r15895446 = a;
double r15895447 = r15895445 / r15895446;
double r15895448 = r15895440 - r15895447;
return r15895448;
}
double f(double x, double y, double z, double t, double a) {
double r15895449 = x;
double r15895450 = y;
double r15895451 = z;
double r15895452 = t;
double r15895453 = r15895451 - r15895452;
double r15895454 = r15895450 * r15895453;
double r15895455 = a;
double r15895456 = r15895454 / r15895455;
double r15895457 = r15895449 - r15895456;
double r15895458 = -inf.0;
bool r15895459 = r15895457 <= r15895458;
double r15895460 = r15895450 / r15895455;
double r15895461 = r15895460 * r15895453;
double r15895462 = r15895449 - r15895461;
double r15895463 = 9.136892539129485e-243;
bool r15895464 = r15895457 <= r15895463;
double r15895465 = r15895464 ? r15895457 : r15895462;
double r15895466 = r15895459 ? r15895462 : r15895465;
return r15895466;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 5.6 |
|---|---|
| Target | 0.7 |
| Herbie | 1.5 |
if (- x (/ (* y (- z t)) a)) < -inf.0 or 9.136892539129485e-243 < (- x (/ (* y (- z t)) a)) Initial program 10.1
Taylor expanded around 0 10.2
Simplified2.5
if -inf.0 < (- x (/ (* y (- z t)) a)) < 9.136892539129485e-243Initial program 0.5
Final simplification1.5
herbie shell --seed 2019164
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, F"
: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)))