x - \frac{y \cdot \left(z - t\right)}{a}\begin{array}{l}
\mathbf{if}\;a \le -2.717101417616620114043785351731635839082 \cdot 10^{48} \lor \neg \left(a \le 261096693021459858565601987977292223086600\right):\\
\;\;\;\;x + \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \left(\frac{\sqrt[3]{y}}{a} \cdot \left(t - z\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(t - z\right) \cdot y\right) \cdot \frac{1}{a} + x\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r283235 = x;
double r283236 = y;
double r283237 = z;
double r283238 = t;
double r283239 = r283237 - r283238;
double r283240 = r283236 * r283239;
double r283241 = a;
double r283242 = r283240 / r283241;
double r283243 = r283235 - r283242;
return r283243;
}
double f(double x, double y, double z, double t, double a) {
double r283244 = a;
double r283245 = -2.71710141761662e+48;
bool r283246 = r283244 <= r283245;
double r283247 = 2.6109669302145986e+41;
bool r283248 = r283244 <= r283247;
double r283249 = !r283248;
bool r283250 = r283246 || r283249;
double r283251 = x;
double r283252 = y;
double r283253 = cbrt(r283252);
double r283254 = r283253 * r283253;
double r283255 = r283253 / r283244;
double r283256 = t;
double r283257 = z;
double r283258 = r283256 - r283257;
double r283259 = r283255 * r283258;
double r283260 = r283254 * r283259;
double r283261 = r283251 + r283260;
double r283262 = r283258 * r283252;
double r283263 = 1.0;
double r283264 = r283263 / r283244;
double r283265 = r283262 * r283264;
double r283266 = r283265 + r283251;
double r283267 = r283250 ? r283261 : r283266;
return r283267;
}




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.7 |
| Herbie | 1.0 |
if a < -2.71710141761662e+48 or 2.6109669302145986e+41 < a Initial program 10.1
Simplified1.9
rmApplied fma-udef1.9
Simplified0.5
rmApplied *-un-lft-identity0.5
Applied *-un-lft-identity0.5
Applied times-frac0.5
Applied add-cube-cbrt0.9
Applied times-frac0.9
Simplified0.9
Simplified0.8
if -2.71710141761662e+48 < a < 2.6109669302145986e+41Initial program 1.2
Simplified3.5
rmApplied fma-udef3.5
Simplified10.8
rmApplied div-inv10.8
Applied *-un-lft-identity10.8
Applied times-frac1.4
Simplified1.3
Final simplification1.0
herbie shell --seed 2019194 +o rules:numerics
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, F"
: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)))