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 1.3995432143967562 \cdot 10^{+297}:\\
\;\;\;\;x + \frac{\left(z - x\right) \cdot y}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \left(\left(-\frac{y}{t} \cdot x\right) + \frac{y}{t} \cdot z\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r20650393 = x;
double r20650394 = y;
double r20650395 = z;
double r20650396 = r20650395 - r20650393;
double r20650397 = r20650394 * r20650396;
double r20650398 = t;
double r20650399 = r20650397 / r20650398;
double r20650400 = r20650393 + r20650399;
return r20650400;
}
double f(double x, double y, double z, double t) {
double r20650401 = x;
double r20650402 = z;
double r20650403 = r20650402 - r20650401;
double r20650404 = y;
double r20650405 = r20650403 * r20650404;
double r20650406 = t;
double r20650407 = r20650405 / r20650406;
double r20650408 = r20650401 + r20650407;
double r20650409 = -inf.0;
bool r20650410 = r20650408 <= r20650409;
double r20650411 = r20650406 / r20650403;
double r20650412 = r20650404 / r20650411;
double r20650413 = r20650401 + r20650412;
double r20650414 = 1.3995432143967562e+297;
bool r20650415 = r20650408 <= r20650414;
double r20650416 = r20650404 / r20650406;
double r20650417 = r20650416 * r20650401;
double r20650418 = -r20650417;
double r20650419 = r20650416 * r20650402;
double r20650420 = r20650418 + r20650419;
double r20650421 = r20650401 + r20650420;
double r20650422 = r20650415 ? r20650408 : r20650421;
double r20650423 = r20650410 ? r20650413 : r20650422;
return r20650423;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 5.9 |
|---|---|
| Target | 2.0 |
| Herbie | 0.8 |
if (+ x (/ (* y (- z x)) t)) < -inf.0Initial program 60.2
rmApplied associate-/l*0.2
if -inf.0 < (+ x (/ (* y (- z x)) t)) < 1.3995432143967562e+297Initial program 0.8
if 1.3995432143967562e+297 < (+ x (/ (* y (- z x)) t)) Initial program 49.0
Taylor expanded around 0 49.0
Simplified1.5
rmApplied sub-neg1.5
Applied distribute-rgt-in1.5
Final simplification0.8
herbie shell --seed 2019158
(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)))