x + \frac{y \cdot \left(z - x\right)}{t}x + \frac{\sqrt[3]{\frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}}} \cdot \sqrt[3]{\frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}}}}{\frac{\sqrt[3]{\sqrt[3]{t} \cdot \sqrt[3]{t}}}{\sqrt[3]{z - x} \cdot \sqrt[3]{z - x}}} \cdot \frac{\sqrt[3]{\frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}}}}{\frac{\sqrt[3]{\sqrt[3]{t}}}{\sqrt[3]{z - x}}}double f(double x, double y, double z, double t) {
double r391575 = x;
double r391576 = y;
double r391577 = z;
double r391578 = r391577 - r391575;
double r391579 = r391576 * r391578;
double r391580 = t;
double r391581 = r391579 / r391580;
double r391582 = r391575 + r391581;
return r391582;
}
double f(double x, double y, double z, double t) {
double r391583 = x;
double r391584 = y;
double r391585 = t;
double r391586 = cbrt(r391585);
double r391587 = r391586 * r391586;
double r391588 = r391584 / r391587;
double r391589 = cbrt(r391588);
double r391590 = r391589 * r391589;
double r391591 = cbrt(r391587);
double r391592 = z;
double r391593 = r391592 - r391583;
double r391594 = cbrt(r391593);
double r391595 = r391594 * r391594;
double r391596 = r391591 / r391595;
double r391597 = r391590 / r391596;
double r391598 = cbrt(r391586);
double r391599 = r391598 / r391594;
double r391600 = r391589 / r391599;
double r391601 = r391597 * r391600;
double r391602 = r391583 + r391601;
return r391602;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.7 |
|---|---|
| Target | 2.0 |
| Herbie | 1.7 |
Initial program 6.7
rmApplied associate-/l*5.6
rmApplied *-un-lft-identity5.6
Applied add-cube-cbrt6.1
Applied times-frac6.1
Applied associate-/r*2.4
Simplified2.4
rmApplied add-cube-cbrt2.5
Applied add-cube-cbrt2.6
Applied cbrt-prod2.6
Applied times-frac2.6
Applied add-cube-cbrt2.7
Applied times-frac1.7
Final simplification1.7
herbie shell --seed 2020056
(FPCore (x y z t)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, D"
:precision binary64
:herbie-target
(- x (+ (* x (/ y t)) (* (- z) (/ y t))))
(+ x (/ (* y (- z x)) t)))