x + \frac{y \cdot \left(z - x\right)}{t}\frac{\sqrt[3]{y}}{\frac{t}{\sqrt[3]{z - x}}} \cdot \left(\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \left(\sqrt[3]{z - x} \cdot \sqrt[3]{z - x}\right)\right) + xdouble f(double x, double y, double z, double t) {
double r15977402 = x;
double r15977403 = y;
double r15977404 = z;
double r15977405 = r15977404 - r15977402;
double r15977406 = r15977403 * r15977405;
double r15977407 = t;
double r15977408 = r15977406 / r15977407;
double r15977409 = r15977402 + r15977408;
return r15977409;
}
double f(double x, double y, double z, double t) {
double r15977410 = y;
double r15977411 = cbrt(r15977410);
double r15977412 = t;
double r15977413 = z;
double r15977414 = x;
double r15977415 = r15977413 - r15977414;
double r15977416 = cbrt(r15977415);
double r15977417 = r15977412 / r15977416;
double r15977418 = r15977411 / r15977417;
double r15977419 = r15977411 * r15977411;
double r15977420 = r15977416 * r15977416;
double r15977421 = r15977419 * r15977420;
double r15977422 = r15977418 * r15977421;
double r15977423 = r15977422 + r15977414;
return r15977423;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.2 |
|---|---|
| Target | 2.0 |
| Herbie | 2.4 |
Initial program 6.2
rmApplied associate-/l*5.7
rmApplied add-cube-cbrt6.2
Applied *-un-lft-identity6.2
Applied times-frac6.2
Applied add-cube-cbrt6.3
Applied times-frac2.4
Simplified2.4
Final simplification2.4
herbie shell --seed 2019162 +o rules:numerics
(FPCore (x y z t)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, D"
:herbie-target
(- x (+ (* x (/ y t)) (* (- z) (/ y t))))
(+ x (/ (* y (- z x)) t)))