x + \frac{y \cdot \left(z - x\right)}{t}x + \frac{\frac{y}{\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{\sqrt[3]{z - x} \cdot \sqrt[3]{z - x}}}}{\frac{\sqrt[3]{t}}{\sqrt[3]{z - x}}}double f(double x, double y, double z, double t) {
double r353163 = x;
double r353164 = y;
double r353165 = z;
double r353166 = r353165 - r353163;
double r353167 = r353164 * r353166;
double r353168 = t;
double r353169 = r353167 / r353168;
double r353170 = r353163 + r353169;
return r353170;
}
double f(double x, double y, double z, double t) {
double r353171 = x;
double r353172 = y;
double r353173 = t;
double r353174 = cbrt(r353173);
double r353175 = r353174 * r353174;
double r353176 = z;
double r353177 = r353176 - r353171;
double r353178 = cbrt(r353177);
double r353179 = r353178 * r353178;
double r353180 = r353175 / r353179;
double r353181 = r353172 / r353180;
double r353182 = r353174 / r353178;
double r353183 = r353181 / r353182;
double r353184 = r353171 + r353183;
return r353184;
}




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.3 |
Initial program 6.4
rmApplied associate-/l*5.6
rmApplied add-cube-cbrt6.1
Applied add-cube-cbrt6.2
Applied times-frac6.2
Applied associate-/r*1.3
Final simplification1.3
herbie shell --seed 2020020
(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)))