x + \frac{y \cdot \left(z - t\right)}{a}x + \frac{1}{\frac{\frac{\sqrt[3]{a} \cdot \sqrt[3]{a}}{\sqrt[3]{y} \cdot \sqrt[3]{y}}}{\frac{z - t}{\frac{\sqrt[3]{a}}{\sqrt[3]{y}}}}}double f(double x, double y, double z, double t, double a) {
double r315397 = x;
double r315398 = y;
double r315399 = z;
double r315400 = t;
double r315401 = r315399 - r315400;
double r315402 = r315398 * r315401;
double r315403 = a;
double r315404 = r315402 / r315403;
double r315405 = r315397 + r315404;
return r315405;
}
double f(double x, double y, double z, double t, double a) {
double r315406 = x;
double r315407 = 1.0;
double r315408 = a;
double r315409 = cbrt(r315408);
double r315410 = r315409 * r315409;
double r315411 = y;
double r315412 = cbrt(r315411);
double r315413 = r315412 * r315412;
double r315414 = r315410 / r315413;
double r315415 = z;
double r315416 = t;
double r315417 = r315415 - r315416;
double r315418 = r315409 / r315412;
double r315419 = r315417 / r315418;
double r315420 = r315414 / r315419;
double r315421 = r315407 / r315420;
double r315422 = r315406 + r315421;
return r315422;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.0 |
|---|---|
| Target | 0.6 |
| Herbie | 0.9 |
Initial program 6.0
rmApplied sub-neg6.0
Applied distribute-lft-in6.0
rmApplied clear-num6.1
Simplified2.6
rmApplied add-cube-cbrt3.0
Applied add-cube-cbrt3.2
Applied times-frac3.2
Applied associate-/l*0.9
Final simplification0.9
herbie shell --seed 2020049
(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)))