x + \frac{y \cdot \left(z - t\right)}{a}x + \left(\sqrt[3]{\frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\sqrt[3]{a}} \cdot \left(\frac{\sqrt[3]{y}}{\sqrt[3]{a}} \cdot \frac{z - t}{\sqrt[3]{a}}\right)} \cdot \sqrt[3]{\frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\sqrt[3]{a}} \cdot \left(\frac{\sqrt[3]{y}}{\sqrt[3]{a}} \cdot \frac{z - t}{\sqrt[3]{a}}\right)}\right) \cdot \sqrt[3]{\frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\sqrt[3]{a}} \cdot \left(\frac{\sqrt[3]{y}}{\sqrt[3]{a}} \cdot \frac{z - t}{\sqrt[3]{a}}\right)}double f(double x, double y, double z, double t, double a) {
double r409297 = x;
double r409298 = y;
double r409299 = z;
double r409300 = t;
double r409301 = r409299 - r409300;
double r409302 = r409298 * r409301;
double r409303 = a;
double r409304 = r409302 / r409303;
double r409305 = r409297 + r409304;
return r409305;
}
double f(double x, double y, double z, double t, double a) {
double r409306 = x;
double r409307 = y;
double r409308 = cbrt(r409307);
double r409309 = r409308 * r409308;
double r409310 = a;
double r409311 = cbrt(r409310);
double r409312 = r409309 / r409311;
double r409313 = r409308 / r409311;
double r409314 = z;
double r409315 = t;
double r409316 = r409314 - r409315;
double r409317 = r409316 / r409311;
double r409318 = r409313 * r409317;
double r409319 = r409312 * r409318;
double r409320 = cbrt(r409319);
double r409321 = r409320 * r409320;
double r409322 = r409321 * r409320;
double r409323 = r409306 + r409322;
return r409323;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.2 |
|---|---|
| Target | 0.7 |
| Herbie | 2.3 |
Initial program 6.2
rmApplied add-cube-cbrt6.6
Applied times-frac3.1
rmApplied add-cube-cbrt3.2
Applied times-frac3.2
Applied associate-*l*2.2
rmApplied add-cube-cbrt2.3
Final simplification2.3
herbie shell --seed 2020047
(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)))