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 r246348 = x;
double r246349 = y;
double r246350 = z;
double r246351 = r246350 - r246348;
double r246352 = r246349 * r246351;
double r246353 = t;
double r246354 = r246352 / r246353;
double r246355 = r246348 + r246354;
return r246355;
}
double f(double x, double y, double z, double t) {
double r246356 = z;
double r246357 = x;
double r246358 = r246356 - r246357;
double r246359 = y;
double r246360 = cbrt(r246359);
double r246361 = r246360 * r246360;
double r246362 = t;
double r246363 = cbrt(r246362);
double r246364 = r246363 * r246363;
double r246365 = r246361 / r246364;
double r246366 = r246358 * r246365;
double r246367 = r246360 / r246363;
double r246368 = r246366 * r246367;
double r246369 = r246368 + r246357;
return r246369;
}




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)))