x - \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;\frac{y \cdot \left(z - t\right)}{a} = -\infty:\\
\;\;\;\;x - \frac{1}{\frac{1}{\frac{z - t}{\frac{a}{y}}}}\\
\mathbf{elif}\;\frac{y \cdot \left(z - t\right)}{a} \le 1.532969307568607748245310550315122934408 \cdot 10^{298}:\\
\;\;\;\;x - \frac{y \cdot \left(z - 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 r249269 = x;
double r249270 = y;
double r249271 = z;
double r249272 = t;
double r249273 = r249271 - r249272;
double r249274 = r249270 * r249273;
double r249275 = a;
double r249276 = r249274 / r249275;
double r249277 = r249269 - r249276;
return r249277;
}
double f(double x, double y, double z, double t, double a) {
double r249278 = y;
double r249279 = z;
double r249280 = t;
double r249281 = r249279 - r249280;
double r249282 = r249278 * r249281;
double r249283 = a;
double r249284 = r249282 / r249283;
double r249285 = -inf.0;
bool r249286 = r249284 <= r249285;
double r249287 = x;
double r249288 = 1.0;
double r249289 = r249283 / r249278;
double r249290 = r249281 / r249289;
double r249291 = r249288 / r249290;
double r249292 = r249288 / r249291;
double r249293 = r249287 - r249292;
double r249294 = 1.5329693075686077e+298;
bool r249295 = r249284 <= r249294;
double r249296 = r249287 - r249284;
double r249297 = r249281 / r249283;
double r249298 = r249278 * r249297;
double r249299 = r249287 - r249298;
double r249300 = r249295 ? r249296 : r249299;
double r249301 = r249286 ? r249293 : r249300;
return r249301;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.3 |
|---|---|
| Target | 0.7 |
| Herbie | 0.5 |
if (/ (* y (- z t)) a) < -inf.0Initial program 64.0
rmApplied clear-num64.0
rmApplied associate-/r*0.3
rmApplied *-un-lft-identity0.3
Applied *-un-lft-identity0.3
Applied times-frac0.3
Applied associate-/l*0.3
if -inf.0 < (/ (* y (- z t)) a) < 1.5329693075686077e+298Initial program 0.4
if 1.5329693075686077e+298 < (/ (* y (- z t)) a) Initial program 58.5
rmApplied *-un-lft-identity58.5
Applied times-frac3.1
Simplified3.1
Final simplification0.5
herbie shell --seed 2019212
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, F"
:precision binary64
:herbie-target
(if (< y -1.07612662163899753e-10) (- x (/ 1 (/ (/ a (- z t)) y))) (if (< y 2.8944268627920891e-49) (- x (/ (* y (- z t)) a)) (- x (/ y (/ a (- z t))))))
(- x (/ (* y (- z t)) a)))