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 r401463 = x;
double r401464 = y;
double r401465 = z;
double r401466 = r401465 - r401463;
double r401467 = r401464 * r401466;
double r401468 = t;
double r401469 = r401467 / r401468;
double r401470 = r401463 + r401469;
return r401470;
}
double f(double x, double y, double z, double t) {
double r401471 = x;
double r401472 = z;
double r401473 = r401472 - r401471;
double r401474 = t;
double r401475 = cbrt(r401474);
double r401476 = r401475 * r401475;
double r401477 = y;
double r401478 = cbrt(r401477);
double r401479 = r401478 * r401478;
double r401480 = r401476 / r401479;
double r401481 = r401473 / r401480;
double r401482 = r401475 / r401478;
double r401483 = r401481 / r401482;
double r401484 = r401471 + r401483;
return r401484;
}




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
rmApplied *-un-lft-identity6.7
Applied *-un-lft-identity6.7
Applied distribute-lft-out6.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)))