x + \frac{y \cdot \left(z - x\right)}{t}\left(\left(z - x\right) \cdot \frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\sqrt[3]{t} \cdot \sqrt[3]{t}}\right) \cdot \frac{\sqrt[3]{y}}{\sqrt[3]{t}} + xdouble f(double x, double y, double z, double t) {
double r295804 = x;
double r295805 = y;
double r295806 = z;
double r295807 = r295806 - r295804;
double r295808 = r295805 * r295807;
double r295809 = t;
double r295810 = r295808 / r295809;
double r295811 = r295804 + r295810;
return r295811;
}
double f(double x, double y, double z, double t) {
double r295812 = z;
double r295813 = x;
double r295814 = r295812 - r295813;
double r295815 = y;
double r295816 = cbrt(r295815);
double r295817 = r295816 * r295816;
double r295818 = t;
double r295819 = cbrt(r295818);
double r295820 = r295819 * r295819;
double r295821 = r295817 / r295820;
double r295822 = r295814 * r295821;
double r295823 = r295816 / r295819;
double r295824 = r295822 * r295823;
double r295825 = r295824 + r295813;
return r295825;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.4 |
|---|---|
| Target | 2.2 |
| Herbie | 1.0 |
Initial program 6.4
Simplified2.2
rmApplied fma-udef2.2
Simplified2.2
rmApplied add-cube-cbrt2.7
Applied add-cube-cbrt2.8
Applied times-frac2.8
Applied associate-*r*1.0
Final simplification1.0
herbie shell --seed 2019323 +o rules:numerics
(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)))