x + \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;y \cdot \left(z - t\right) \le -2.689959535719968 \cdot 10^{288}:\\
\;\;\;\;x + y \cdot \frac{z - t}{a}\\
\mathbf{elif}\;y \cdot \left(z - t\right) \le 3.12395947034459992 \cdot 10^{186}:\\
\;\;\;\;x + \frac{y \cdot \left(z - t\right)}{a}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y}{\frac{a}{z - t}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r290263 = x;
double r290264 = y;
double r290265 = z;
double r290266 = t;
double r290267 = r290265 - r290266;
double r290268 = r290264 * r290267;
double r290269 = a;
double r290270 = r290268 / r290269;
double r290271 = r290263 + r290270;
return r290271;
}
double f(double x, double y, double z, double t, double a) {
double r290272 = y;
double r290273 = z;
double r290274 = t;
double r290275 = r290273 - r290274;
double r290276 = r290272 * r290275;
double r290277 = -2.689959535719968e+288;
bool r290278 = r290276 <= r290277;
double r290279 = x;
double r290280 = a;
double r290281 = r290275 / r290280;
double r290282 = r290272 * r290281;
double r290283 = r290279 + r290282;
double r290284 = 3.1239594703446e+186;
bool r290285 = r290276 <= r290284;
double r290286 = r290276 / r290280;
double r290287 = r290279 + r290286;
double r290288 = r290280 / r290275;
double r290289 = r290272 / r290288;
double r290290 = r290279 + r290289;
double r290291 = r290285 ? r290287 : r290290;
double r290292 = r290278 ? r290283 : r290291;
return r290292;
}




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.8 |
| Herbie | 0.5 |
if (* y (- z t)) < -2.689959535719968e+288Initial program 54.0
rmApplied *-un-lft-identity54.0
Applied times-frac0.2
Simplified0.2
if -2.689959535719968e+288 < (* y (- z t)) < 3.1239594703446e+186Initial program 0.5
if 3.1239594703446e+186 < (* y (- z t)) Initial program 26.6
rmApplied associate-/l*1.1
Final simplification0.5
herbie shell --seed 2020081 +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)))