x + \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;y \cdot \left(z - t\right) \le -1.04741031975931943017991088976937445358 \cdot 10^{207}:\\
\;\;\;\;\frac{\frac{z - t}{a}}{\frac{1}{y}} + x\\
\mathbf{elif}\;y \cdot \left(z - t\right) \le 1.091273540682466379682658620694282505865 \cdot 10^{263}:\\
\;\;\;\;x + \frac{y \cdot \left(z - t\right)}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{z - t}{\frac{a}{y}} + x\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r368333 = x;
double r368334 = y;
double r368335 = z;
double r368336 = t;
double r368337 = r368335 - r368336;
double r368338 = r368334 * r368337;
double r368339 = a;
double r368340 = r368338 / r368339;
double r368341 = r368333 + r368340;
return r368341;
}
double f(double x, double y, double z, double t, double a) {
double r368342 = y;
double r368343 = z;
double r368344 = t;
double r368345 = r368343 - r368344;
double r368346 = r368342 * r368345;
double r368347 = -1.0474103197593194e+207;
bool r368348 = r368346 <= r368347;
double r368349 = a;
double r368350 = r368345 / r368349;
double r368351 = 1.0;
double r368352 = r368351 / r368342;
double r368353 = r368350 / r368352;
double r368354 = x;
double r368355 = r368353 + r368354;
double r368356 = 1.0912735406824664e+263;
bool r368357 = r368346 <= r368356;
double r368358 = r368346 / r368349;
double r368359 = r368354 + r368358;
double r368360 = r368349 / r368342;
double r368361 = r368345 / r368360;
double r368362 = r368361 + r368354;
double r368363 = r368357 ? r368359 : r368362;
double r368364 = r368348 ? r368355 : r368363;
return r368364;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.5 |
|---|---|
| Target | 0.7 |
| Herbie | 0.4 |
if (* y (- z t)) < -1.0474103197593194e+207Initial program 31.0
Simplified0.4
rmApplied fma-udef0.4
Simplified0.5
rmApplied div-inv0.5
Applied associate-/r*0.8
if -1.0474103197593194e+207 < (* y (- z t)) < 1.0912735406824664e+263Initial program 0.4
if 1.0912735406824664e+263 < (* y (- z t)) Initial program 44.3
Simplified0.2
rmApplied fma-udef0.2
Simplified0.2
Final simplification0.4
herbie shell --seed 2019351 +o rules:numerics
(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)))