x + \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;y \cdot \left(z - t\right) = -\infty:\\
\;\;\;\;x + \frac{1}{\frac{\frac{a}{y}}{z - t}}\\
\mathbf{elif}\;y \cdot \left(z - t\right) \le 8.39997312975099039 \cdot 10^{198}:\\
\;\;\;\;x + \frac{1}{a} \cdot \left(y \cdot \left(z - t\right)\right)\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y}{\frac{a}{z - t}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r326452 = x;
double r326453 = y;
double r326454 = z;
double r326455 = t;
double r326456 = r326454 - r326455;
double r326457 = r326453 * r326456;
double r326458 = a;
double r326459 = r326457 / r326458;
double r326460 = r326452 + r326459;
return r326460;
}
double f(double x, double y, double z, double t, double a) {
double r326461 = y;
double r326462 = z;
double r326463 = t;
double r326464 = r326462 - r326463;
double r326465 = r326461 * r326464;
double r326466 = -inf.0;
bool r326467 = r326465 <= r326466;
double r326468 = x;
double r326469 = 1.0;
double r326470 = a;
double r326471 = r326470 / r326461;
double r326472 = r326471 / r326464;
double r326473 = r326469 / r326472;
double r326474 = r326468 + r326473;
double r326475 = 8.39997312975099e+198;
bool r326476 = r326465 <= r326475;
double r326477 = r326469 / r326470;
double r326478 = r326477 * r326465;
double r326479 = r326468 + r326478;
double r326480 = r326470 / r326464;
double r326481 = r326461 / r326480;
double r326482 = r326468 + r326481;
double r326483 = r326476 ? r326479 : r326482;
double r326484 = r326467 ? r326474 : r326483;
return r326484;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.4 |
|---|---|
| Target | 0.7 |
| Herbie | 0.5 |
if (* y (- z t)) < -inf.0Initial program 64.0
rmApplied clear-num64.0
rmApplied associate-/r*0.3
if -inf.0 < (* y (- z t)) < 8.39997312975099e+198Initial program 0.4
rmApplied clear-num0.5
rmApplied div-inv0.6
Applied add-cube-cbrt0.6
Applied times-frac0.5
Simplified0.5
Simplified0.5
if 8.39997312975099e+198 < (* y (- z t)) Initial program 29.4
rmApplied associate-/l*1.0
Final simplification0.5
herbie shell --seed 2020060
(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)))