x + \frac{y \cdot \left(z - t\right)}{a}x + \left(\left(z - t\right) \cdot \frac{\sqrt[3]{y}}{\sqrt[3]{a}}\right) \cdot \left(\frac{\sqrt[3]{y}}{\sqrt[3]{a}} \cdot \frac{\sqrt[3]{y}}{\sqrt[3]{a}}\right)double f(double x, double y, double z, double t, double a) {
double r13054371 = x;
double r13054372 = y;
double r13054373 = z;
double r13054374 = t;
double r13054375 = r13054373 - r13054374;
double r13054376 = r13054372 * r13054375;
double r13054377 = a;
double r13054378 = r13054376 / r13054377;
double r13054379 = r13054371 + r13054378;
return r13054379;
}
double f(double x, double y, double z, double t, double a) {
double r13054380 = x;
double r13054381 = z;
double r13054382 = t;
double r13054383 = r13054381 - r13054382;
double r13054384 = y;
double r13054385 = cbrt(r13054384);
double r13054386 = a;
double r13054387 = cbrt(r13054386);
double r13054388 = r13054385 / r13054387;
double r13054389 = r13054383 * r13054388;
double r13054390 = r13054388 * r13054388;
double r13054391 = r13054389 * r13054390;
double r13054392 = r13054380 + r13054391;
return r13054392;
}




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 | 1.0 |
Initial program 6.2
rmApplied associate-/l*5.5
rmApplied *-un-lft-identity5.5
Applied add-cube-cbrt5.9
Applied times-frac5.9
Applied add-cube-cbrt6.1
Applied times-frac2.2
Simplified2.2
Simplified1.0
Final simplification1.0
herbie shell --seed 2019169 +o rules:numerics
(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)))