x + \frac{y \cdot \left(z - x\right)}{t}x + \frac{\frac{z - x}{\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{\sqrt[3]{y} \cdot \sqrt[3]{y}}}}{\frac{\sqrt[3]{t}}{\sqrt[3]{y}}}double f(double x, double y, double z, double t) {
double r396516 = x;
double r396517 = y;
double r396518 = z;
double r396519 = r396518 - r396516;
double r396520 = r396517 * r396519;
double r396521 = t;
double r396522 = r396520 / r396521;
double r396523 = r396516 + r396522;
return r396523;
}
double f(double x, double y, double z, double t) {
double r396524 = x;
double r396525 = z;
double r396526 = r396525 - r396524;
double r396527 = t;
double r396528 = cbrt(r396527);
double r396529 = r396528 * r396528;
double r396530 = y;
double r396531 = cbrt(r396530);
double r396532 = r396531 * r396531;
double r396533 = r396529 / r396532;
double r396534 = r396526 / r396533;
double r396535 = r396528 / r396531;
double r396536 = r396534 / r396535;
double r396537 = r396524 + r396536;
return r396537;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.7 |
|---|---|
| Target | 2.0 |
| Herbie | 0.9 |
Initial program 6.7
Taylor expanded around 0 6.7
Simplified1.9
rmApplied add-cube-cbrt2.4
Applied add-cube-cbrt2.6
Applied times-frac2.6
Applied associate-/r*0.9
Final simplification0.9
herbie shell --seed 2020047
(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)))