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{1}{\frac{\frac{\sqrt[3]{a}}{\sqrt[3]{y}}}{z - t}}, x\right)double f(double x, double y, double z, double t, double a) {
double r255156 = x;
double r255157 = y;
double r255158 = z;
double r255159 = t;
double r255160 = r255158 - r255159;
double r255161 = r255157 * r255160;
double r255162 = a;
double r255163 = r255161 / r255162;
double r255164 = r255156 + r255163;
return r255164;
}
double f(double x, double y, double z, double t, double a) {
double r255165 = 1.0;
double r255166 = a;
double r255167 = cbrt(r255166);
double r255168 = r255167 * r255167;
double r255169 = y;
double r255170 = cbrt(r255169);
double r255171 = r255170 * r255170;
double r255172 = r255168 / r255171;
double r255173 = r255165 / r255172;
double r255174 = r255167 / r255170;
double r255175 = z;
double r255176 = t;
double r255177 = r255175 - r255176;
double r255178 = r255174 / r255177;
double r255179 = r255165 / r255178;
double r255180 = x;
double r255181 = fma(r255173, r255179, r255180);
return r255181;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 6.4 |
|---|---|
| Target | 0.7 |
| Herbie | 1.0 |
Initial program 6.4
Simplified6.0
rmApplied fma-udef6.0
Simplified5.7
rmApplied clear-num5.7
Simplified2.7
rmApplied *-un-lft-identity2.7
Applied add-cube-cbrt3.1
Applied add-cube-cbrt3.2
Applied times-frac3.2
Applied times-frac1.0
Applied *-un-lft-identity1.0
Applied times-frac1.0
Applied fma-def1.0
Final simplification1.0
herbie shell --seed 2019196 +o rules:numerics
(FPCore (x y z t a)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, E"
: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)))