x + \frac{y \cdot \left(z - t\right)}{a}\left(\left(\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}\right) \cdot \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right)\right) \cdot \frac{\sqrt[3]{z - t}}{\frac{a}{\sqrt[3]{y}}} + xdouble f(double x, double y, double z, double t, double a) {
double r188384 = x;
double r188385 = y;
double r188386 = z;
double r188387 = t;
double r188388 = r188386 - r188387;
double r188389 = r188385 * r188388;
double r188390 = a;
double r188391 = r188389 / r188390;
double r188392 = r188384 + r188391;
return r188392;
}
double f(double x, double y, double z, double t, double a) {
double r188393 = z;
double r188394 = t;
double r188395 = r188393 - r188394;
double r188396 = cbrt(r188395);
double r188397 = r188396 * r188396;
double r188398 = y;
double r188399 = cbrt(r188398);
double r188400 = r188399 * r188399;
double r188401 = r188397 * r188400;
double r188402 = a;
double r188403 = r188402 / r188399;
double r188404 = r188396 / r188403;
double r188405 = r188401 * r188404;
double r188406 = x;
double r188407 = r188405 + r188406;
return r188407;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.4 |
|---|---|
| Target | 0.7 |
| Herbie | 1.9 |
Initial program 6.4
Simplified2.5
rmApplied fma-udef2.5
Simplified2.4
rmApplied add-cube-cbrt2.9
Applied *-un-lft-identity2.9
Applied times-frac2.9
Applied add-cube-cbrt3.0
Applied times-frac1.9
Simplified1.9
Final simplification1.9
herbie shell --seed 2019323 +o rules:numerics
(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)))