x + \frac{y \cdot \left(z - x\right)}{t}x + \left(\left(y \cdot \left(\sqrt[3]{\frac{\sqrt[3]{z - x} \cdot \sqrt[3]{z - x}}{\sqrt[3]{t} \cdot \sqrt[3]{t}}} \cdot \sqrt[3]{\frac{\sqrt[3]{z - x} \cdot \sqrt[3]{z - x}}{\sqrt[3]{t} \cdot \sqrt[3]{t}}}\right)\right) \cdot \sqrt[3]{\frac{\sqrt[3]{z - x} \cdot \sqrt[3]{z - x}}{\sqrt[3]{t} \cdot \sqrt[3]{t}}}\right) \cdot \frac{\sqrt[3]{z - x}}{\sqrt[3]{t}}double f(double x, double y, double z, double t) {
double r375698 = x;
double r375699 = y;
double r375700 = z;
double r375701 = r375700 - r375698;
double r375702 = r375699 * r375701;
double r375703 = t;
double r375704 = r375702 / r375703;
double r375705 = r375698 + r375704;
return r375705;
}
double f(double x, double y, double z, double t) {
double r375706 = x;
double r375707 = y;
double r375708 = z;
double r375709 = r375708 - r375706;
double r375710 = cbrt(r375709);
double r375711 = r375710 * r375710;
double r375712 = t;
double r375713 = cbrt(r375712);
double r375714 = r375713 * r375713;
double r375715 = r375711 / r375714;
double r375716 = cbrt(r375715);
double r375717 = r375716 * r375716;
double r375718 = r375707 * r375717;
double r375719 = r375718 * r375716;
double r375720 = r375710 / r375713;
double r375721 = r375719 * r375720;
double r375722 = r375706 + r375721;
return r375722;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.6 |
|---|---|
| Target | 2.0 |
| Herbie | 1.7 |
Initial program 6.6
rmApplied *-un-lft-identity6.6
Applied times-frac6.9
Simplified6.9
rmApplied add-cube-cbrt7.3
Applied add-cube-cbrt7.5
Applied times-frac7.5
Applied associate-*r*1.6
rmApplied add-cube-cbrt1.7
Applied associate-*r*1.7
Final simplification1.7
herbie shell --seed 2019326
(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)))