x + \frac{y \cdot \left(z - x\right)}{t}\left(\frac{\sqrt[3]{z - x}}{\sqrt[3]{t}} \cdot y\right) \cdot \frac{\sqrt[3]{z - x} \cdot \sqrt[3]{z - x}}{\sqrt[3]{t} \cdot \sqrt[3]{t}} + xdouble f(double x, double y, double z, double t) {
double r13623822 = x;
double r13623823 = y;
double r13623824 = z;
double r13623825 = r13623824 - r13623822;
double r13623826 = r13623823 * r13623825;
double r13623827 = t;
double r13623828 = r13623826 / r13623827;
double r13623829 = r13623822 + r13623828;
return r13623829;
}
double f(double x, double y, double z, double t) {
double r13623830 = z;
double r13623831 = x;
double r13623832 = r13623830 - r13623831;
double r13623833 = cbrt(r13623832);
double r13623834 = t;
double r13623835 = cbrt(r13623834);
double r13623836 = r13623833 / r13623835;
double r13623837 = y;
double r13623838 = r13623836 * r13623837;
double r13623839 = r13623833 * r13623833;
double r13623840 = r13623835 * r13623835;
double r13623841 = r13623839 / r13623840;
double r13623842 = r13623838 * r13623841;
double r13623843 = r13623842 + r13623831;
return r13623843;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 5.6 |
|---|---|
| Target | 2.1 |
| Herbie | 1.6 |
Initial program 5.6
Simplified6.4
rmApplied fma-udef6.4
rmApplied add-cube-cbrt6.9
Applied add-cube-cbrt7.0
Applied times-frac7.0
Applied associate-*l*1.6
Final simplification1.6
herbie shell --seed 2019164 +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)))