x + \frac{y \cdot \left(z - t\right)}{a}\frac{y}{\frac{\sqrt[3]{a}}{\sqrt[3]{z - t}} \cdot \frac{\sqrt[3]{a}}{\sqrt[3]{z - t}}} \cdot \frac{\sqrt[3]{z - t}}{\sqrt[3]{a}} + xdouble f(double x, double y, double z, double t, double a) {
double r17805598 = x;
double r17805599 = y;
double r17805600 = z;
double r17805601 = t;
double r17805602 = r17805600 - r17805601;
double r17805603 = r17805599 * r17805602;
double r17805604 = a;
double r17805605 = r17805603 / r17805604;
double r17805606 = r17805598 + r17805605;
return r17805606;
}
double f(double x, double y, double z, double t, double a) {
double r17805607 = y;
double r17805608 = a;
double r17805609 = cbrt(r17805608);
double r17805610 = z;
double r17805611 = t;
double r17805612 = r17805610 - r17805611;
double r17805613 = cbrt(r17805612);
double r17805614 = r17805609 / r17805613;
double r17805615 = r17805614 * r17805614;
double r17805616 = r17805607 / r17805615;
double r17805617 = r17805613 / r17805609;
double r17805618 = r17805616 * r17805617;
double r17805619 = x;
double r17805620 = r17805618 + r17805619;
return r17805620;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.3 |
|---|---|
| Target | 0.8 |
| Herbie | 1.3 |
Initial program 6.3
rmApplied add-cube-cbrt6.8
Applied times-frac3.2
rmApplied *-un-lft-identity3.2
Applied cbrt-prod3.2
Applied add-cube-cbrt3.3
Applied times-frac3.3
Applied associate-*r*1.9
Simplified1.3
Final simplification1.3
herbie shell --seed 2019170
(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)))