x - \frac{y \cdot \left(z - t\right)}{a}x - \left(\left(z - t\right) \cdot \frac{\sqrt[3]{y}}{\sqrt[3]{a}}\right) \cdot \frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\sqrt[3]{a} \cdot \sqrt[3]{a}}double f(double x, double y, double z, double t, double a) {
double r15390652 = x;
double r15390653 = y;
double r15390654 = z;
double r15390655 = t;
double r15390656 = r15390654 - r15390655;
double r15390657 = r15390653 * r15390656;
double r15390658 = a;
double r15390659 = r15390657 / r15390658;
double r15390660 = r15390652 - r15390659;
return r15390660;
}
double f(double x, double y, double z, double t, double a) {
double r15390661 = x;
double r15390662 = z;
double r15390663 = t;
double r15390664 = r15390662 - r15390663;
double r15390665 = y;
double r15390666 = cbrt(r15390665);
double r15390667 = a;
double r15390668 = cbrt(r15390667);
double r15390669 = r15390666 / r15390668;
double r15390670 = r15390664 * r15390669;
double r15390671 = r15390666 * r15390666;
double r15390672 = r15390668 * r15390668;
double r15390673 = r15390671 / r15390672;
double r15390674 = r15390670 * r15390673;
double r15390675 = r15390661 - r15390674;
return r15390675;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.3 |
|---|---|
| Target | 0.6 |
| Herbie | 0.9 |
Initial program 6.3
rmApplied associate-/l*5.8
rmApplied associate-/r/2.6
rmApplied add-cube-cbrt3.1
Applied add-cube-cbrt3.3
Applied times-frac3.3
Applied associate-*l*0.9
Final simplification0.9
herbie shell --seed 2019174
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, F"
:herbie-target
(if (< y -1.0761266216389975e-10) (- x (/ 1.0 (/ (/ a (- z t)) y))) (if (< y 2.894426862792089e-49) (- x (/ (* y (- z t)) a)) (- x (/ y (/ a (- z t))))))
(- x (/ (* y (- z t)) a)))