x - \frac{y \cdot \left(z - t\right)}{a}x - \left(\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \left(\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}\right)\right) \cdot \left(\frac{\sqrt[3]{y}}{a} \cdot \sqrt[3]{z - t}\right)double f(double x, double y, double z, double t, double a) {
double r184208 = x;
double r184209 = y;
double r184210 = z;
double r184211 = t;
double r184212 = r184210 - r184211;
double r184213 = r184209 * r184212;
double r184214 = a;
double r184215 = r184213 / r184214;
double r184216 = r184208 - r184215;
return r184216;
}
double f(double x, double y, double z, double t, double a) {
double r184217 = x;
double r184218 = y;
double r184219 = cbrt(r184218);
double r184220 = r184219 * r184219;
double r184221 = z;
double r184222 = t;
double r184223 = r184221 - r184222;
double r184224 = cbrt(r184223);
double r184225 = r184224 * r184224;
double r184226 = r184220 * r184225;
double r184227 = a;
double r184228 = r184219 / r184227;
double r184229 = r184228 * r184224;
double r184230 = r184226 * r184229;
double r184231 = r184217 - r184230;
return r184231;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 6.4 |
|---|---|
| Target | 0.7 |
| Herbie | 1.9 |
Initial program 6.4
rmApplied associate-/l*5.6
rmApplied div-inv5.6
Applied associate-/r*2.5
rmApplied add-cube-cbrt3.0
Applied add-cube-cbrt3.0
Applied times-frac3.0
Applied *-un-lft-identity3.0
Applied add-cube-cbrt3.1
Applied times-frac3.1
Applied times-frac1.9
Simplified1.9
Simplified1.9
Final simplification1.9
herbie shell --seed 2019323
(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 (/ (/ a (- z t)) y))) (if (< y 2.894426862792089e-49) (- x (/ (* y (- z t)) a)) (- x (/ y (/ a (- z t))))))
(- x (/ (* y (- z t)) a)))