x + \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;y \cdot \left(z - t\right) \le -1.8448302221257819 \cdot 10^{209}:\\
\;\;\;\;x + \frac{y}{a} \cdot \left(z - t\right)\\
\mathbf{elif}\;y \cdot \left(z - t\right) \le 8.27775655163983859 \cdot 10^{192}:\\
\;\;\;\;x + \frac{y \cdot z + y \cdot \left(-t\right)}{a}\\
\mathbf{else}:\\
\;\;\;\;x + y \cdot \frac{z - t}{a}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r281373 = x;
double r281374 = y;
double r281375 = z;
double r281376 = t;
double r281377 = r281375 - r281376;
double r281378 = r281374 * r281377;
double r281379 = a;
double r281380 = r281378 / r281379;
double r281381 = r281373 + r281380;
return r281381;
}
double f(double x, double y, double z, double t, double a) {
double r281382 = y;
double r281383 = z;
double r281384 = t;
double r281385 = r281383 - r281384;
double r281386 = r281382 * r281385;
double r281387 = -1.844830222125782e+209;
bool r281388 = r281386 <= r281387;
double r281389 = x;
double r281390 = a;
double r281391 = r281382 / r281390;
double r281392 = r281391 * r281385;
double r281393 = r281389 + r281392;
double r281394 = 8.277756551639839e+192;
bool r281395 = r281386 <= r281394;
double r281396 = r281382 * r281383;
double r281397 = -r281384;
double r281398 = r281382 * r281397;
double r281399 = r281396 + r281398;
double r281400 = r281399 / r281390;
double r281401 = r281389 + r281400;
double r281402 = r281385 / r281390;
double r281403 = r281382 * r281402;
double r281404 = r281389 + r281403;
double r281405 = r281395 ? r281401 : r281404;
double r281406 = r281388 ? r281393 : r281405;
return r281406;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.2 |
|---|---|
| Target | 0.7 |
| Herbie | 0.4 |
if (* y (- z t)) < -1.844830222125782e+209Initial program 30.2
rmApplied associate-/l*0.7
rmApplied associate-/r/0.5
if -1.844830222125782e+209 < (* y (- z t)) < 8.277756551639839e+192Initial program 0.3
rmApplied sub-neg0.3
Applied distribute-lft-in0.3
if 8.277756551639839e+192 < (* y (- z t)) Initial program 27.1
rmApplied *-un-lft-identity27.1
Applied times-frac1.0
Simplified1.0
Final simplification0.4
herbie shell --seed 2020036
(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)))