x - \frac{y \cdot \left(z - t\right)}{a}x - \frac{\frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\sqrt[3]{a}}}{\sqrt[3]{\sqrt[3]{a}} \cdot \sqrt[3]{\sqrt[3]{a}}} \cdot \frac{\left(z - t\right) \cdot \frac{\sqrt[3]{y}}{\sqrt[3]{a}}}{\sqrt[3]{\sqrt[3]{a}}}(FPCore (x y z t a) :precision binary64 (- x (/ (* y (- z t)) a)))
(FPCore (x y z t a) :precision binary64 (- x (* (/ (/ (* (cbrt y) (cbrt y)) (cbrt a)) (* (cbrt (cbrt a)) (cbrt (cbrt a)))) (/ (* (- z t) (/ (cbrt y) (cbrt a))) (cbrt (cbrt a))))))
double code(double x, double y, double z, double t, double a) {
return x - ((y * (z - t)) / a);
}
double code(double x, double y, double z, double t, double a) {
return x - ((((cbrt(y) * cbrt(y)) / cbrt(a)) / (cbrt(cbrt(a)) * cbrt(cbrt(a)))) * (((z - t) * (cbrt(y) / cbrt(a))) / cbrt(cbrt(a))));
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.1 |
|---|---|
| Target | 0.7 |
| Herbie | 1.1 |
Initial program 6.1
rmApplied add-cube-cbrt_binary64_86386.6
Applied associate-/r*_binary64_85476.6
Simplified3.1
rmApplied add-cube-cbrt_binary64_86383.3
Applied times-frac_binary64_86093.3
Applied associate-*l*_binary64_85442.2
Simplified2.2
rmApplied add-cube-cbrt_binary64_86382.3
Applied times-frac_binary64_86091.1
Final simplification1.1
herbie shell --seed 2021098
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, F"
:precision binary64
: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)))