x + \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;\left(z - t\right) \cdot y \le -1.345098563272592420354002044193157608063 \cdot 10^{164}:\\
\;\;\;\;x + \frac{z - t}{a} \cdot y\\
\mathbf{elif}\;\left(z - t\right) \cdot y \le 9.417385554814111584786435793986354092013 \cdot 10^{65}:\\
\;\;\;\;x + \frac{1}{a} \cdot \left(\left(z - t\right) \cdot y\right)\\
\mathbf{else}:\\
\;\;\;\;x + \left(z - t\right) \cdot \frac{y}{a}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r18106287 = x;
double r18106288 = y;
double r18106289 = z;
double r18106290 = t;
double r18106291 = r18106289 - r18106290;
double r18106292 = r18106288 * r18106291;
double r18106293 = a;
double r18106294 = r18106292 / r18106293;
double r18106295 = r18106287 + r18106294;
return r18106295;
}
double f(double x, double y, double z, double t, double a) {
double r18106296 = z;
double r18106297 = t;
double r18106298 = r18106296 - r18106297;
double r18106299 = y;
double r18106300 = r18106298 * r18106299;
double r18106301 = -1.3450985632725924e+164;
bool r18106302 = r18106300 <= r18106301;
double r18106303 = x;
double r18106304 = a;
double r18106305 = r18106298 / r18106304;
double r18106306 = r18106305 * r18106299;
double r18106307 = r18106303 + r18106306;
double r18106308 = 9.417385554814112e+65;
bool r18106309 = r18106300 <= r18106308;
double r18106310 = 1.0;
double r18106311 = r18106310 / r18106304;
double r18106312 = r18106311 * r18106300;
double r18106313 = r18106303 + r18106312;
double r18106314 = r18106299 / r18106304;
double r18106315 = r18106298 * r18106314;
double r18106316 = r18106303 + r18106315;
double r18106317 = r18106309 ? r18106313 : r18106316;
double r18106318 = r18106302 ? r18106307 : r18106317;
return r18106318;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 5.9 |
|---|---|
| Target | 0.8 |
| Herbie | 1.0 |
if (* y (- z t)) < -1.3450985632725924e+164Initial program 21.6
Taylor expanded around 0 21.6
Simplified1.3
Taylor expanded around inf 21.6
Simplified1.8
if -1.3450985632725924e+164 < (* y (- z t)) < 9.417385554814112e+65Initial program 0.5
rmApplied div-inv0.6
if 9.417385554814112e+65 < (* y (- z t)) Initial program 13.6
Taylor expanded around 0 13.6
Simplified2.0
rmApplied div-inv2.3
Simplified2.0
Final simplification1.0
herbie shell --seed 2019200
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, E"
:herbie-target
(if (< y -1.0761266216389975e-10) (+ x (/ 1.0 (/ (/ a (- z t)) y))) (if (< y 2.894426862792089e-49) (+ x (/ (* y (- z t)) a)) (+ x (/ y (/ a (- z t))))))
(+ x (/ (* y (- z t)) a)))