x + \frac{y \cdot \left(z - x\right)}{t}x + \left(\left(y \cdot \left(\sqrt[3]{\frac{\sqrt[3]{z - x} \cdot \sqrt[3]{z - x}}{\sqrt[3]{t} \cdot \sqrt[3]{t}}} \cdot \sqrt[3]{\frac{\sqrt[3]{z - x} \cdot \sqrt[3]{z - x}}{\sqrt[3]{t} \cdot \sqrt[3]{t}}}\right)\right) \cdot \sqrt[3]{\frac{\sqrt[3]{z - x} \cdot \sqrt[3]{z - x}}{\sqrt[3]{t} \cdot \sqrt[3]{t}}}\right) \cdot \frac{\sqrt[3]{z - x}}{\sqrt[3]{t}}double f(double x, double y, double z, double t) {
double r170945 = x;
double r170946 = y;
double r170947 = z;
double r170948 = r170947 - r170945;
double r170949 = r170946 * r170948;
double r170950 = t;
double r170951 = r170949 / r170950;
double r170952 = r170945 + r170951;
return r170952;
}
double f(double x, double y, double z, double t) {
double r170953 = x;
double r170954 = y;
double r170955 = z;
double r170956 = r170955 - r170953;
double r170957 = cbrt(r170956);
double r170958 = r170957 * r170957;
double r170959 = t;
double r170960 = cbrt(r170959);
double r170961 = r170960 * r170960;
double r170962 = r170958 / r170961;
double r170963 = cbrt(r170962);
double r170964 = r170963 * r170963;
double r170965 = r170954 * r170964;
double r170966 = r170965 * r170963;
double r170967 = r170957 / r170960;
double r170968 = r170966 * r170967;
double r170969 = r170953 + r170968;
return r170969;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.6 |
|---|---|
| Target | 2.0 |
| Herbie | 1.7 |
Initial program 6.6
rmApplied *-un-lft-identity6.6
Applied times-frac6.9
Simplified6.9
rmApplied add-cube-cbrt7.3
Applied add-cube-cbrt7.5
Applied times-frac7.5
Applied associate-*r*1.6
rmApplied add-cube-cbrt1.7
Applied associate-*r*1.7
Final simplification1.7
herbie shell --seed 2019326
(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)))