x - \frac{y \cdot \left(z - t\right)}{a}\mathsf{fma}\left(\frac{1}{\frac{\sqrt[3]{a} \cdot \sqrt[3]{a}}{\sqrt[3]{y} \cdot \sqrt[3]{y}}}, \frac{t - z}{\frac{\sqrt[3]{a}}{\sqrt[3]{y}}}, x\right)double f(double x, double y, double z, double t, double a) {
double r212348 = x;
double r212349 = y;
double r212350 = z;
double r212351 = t;
double r212352 = r212350 - r212351;
double r212353 = r212349 * r212352;
double r212354 = a;
double r212355 = r212353 / r212354;
double r212356 = r212348 - r212355;
return r212356;
}
double f(double x, double y, double z, double t, double a) {
double r212357 = 1.0;
double r212358 = a;
double r212359 = cbrt(r212358);
double r212360 = r212359 * r212359;
double r212361 = y;
double r212362 = cbrt(r212361);
double r212363 = r212362 * r212362;
double r212364 = r212360 / r212363;
double r212365 = r212357 / r212364;
double r212366 = t;
double r212367 = z;
double r212368 = r212366 - r212367;
double r212369 = r212359 / r212362;
double r212370 = r212368 / r212369;
double r212371 = x;
double r212372 = fma(r212365, r212370, r212371);
return r212372;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 6.3 |
|---|---|
| Target | 0.6 |
| Herbie | 1.0 |
Initial program 6.3
Simplified2.6
rmApplied fma-udef2.6
Simplified2.6
rmApplied add-cube-cbrt3.1
Applied add-cube-cbrt3.2
Applied times-frac3.2
Applied *-un-lft-identity3.2
Applied times-frac1.0
Applied fma-def1.0
Final simplification1.0
herbie shell --seed 2019305 +o rules:numerics
(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.07612662163899753e-10) (- x (/ 1 (/ (/ a (- z t)) y))) (if (< y 2.8944268627920891e-49) (- x (/ (* y (- z t)) a)) (- x (/ y (/ a (- z t))))))
(- x (/ (* y (- z t)) a)))