x - \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;\frac{y \cdot \left(z - t\right)}{a} \le -8.981442880940557861413613942616636285951 \cdot 10^{292} \lor \neg \left(\frac{y \cdot \left(z - t\right)}{a} \le 8.973171892835292774846855805866219421622 \cdot 10^{305}\right):\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{a}, t - z, x\right)\\
\mathbf{else}:\\
\;\;\;\;x - \frac{y \cdot \left(z - t\right)}{a}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r310271 = x;
double r310272 = y;
double r310273 = z;
double r310274 = t;
double r310275 = r310273 - r310274;
double r310276 = r310272 * r310275;
double r310277 = a;
double r310278 = r310276 / r310277;
double r310279 = r310271 - r310278;
return r310279;
}
double f(double x, double y, double z, double t, double a) {
double r310280 = y;
double r310281 = z;
double r310282 = t;
double r310283 = r310281 - r310282;
double r310284 = r310280 * r310283;
double r310285 = a;
double r310286 = r310284 / r310285;
double r310287 = -8.981442880940558e+292;
bool r310288 = r310286 <= r310287;
double r310289 = 8.973171892835293e+305;
bool r310290 = r310286 <= r310289;
double r310291 = !r310290;
bool r310292 = r310288 || r310291;
double r310293 = r310280 / r310285;
double r310294 = r310282 - r310281;
double r310295 = x;
double r310296 = fma(r310293, r310294, r310295);
double r310297 = r310295 - r310286;
double r310298 = r310292 ? r310296 : r310297;
return r310298;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 6.5 |
|---|---|
| Target | 0.7 |
| Herbie | 0.4 |
if (/ (* y (- z t)) a) < -8.981442880940558e+292 or 8.973171892835293e+305 < (/ (* y (- z t)) a) Initial program 57.8
Simplified1.0
if -8.981442880940558e+292 < (/ (* y (- z t)) a) < 8.973171892835293e+305Initial program 0.4
Final simplification0.4
herbie shell --seed 2019353 +o rules:numerics
(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.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)))