x \cdot \frac{\frac{y}{z} \cdot t}{t}\left(x \cdot \frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\sqrt[3]{z} \cdot \sqrt[3]{z}}\right) \cdot \frac{\sqrt[3]{y}}{\sqrt[3]{\sqrt[3]{z} \cdot \sqrt[3]{z}} \cdot \sqrt[3]{\sqrt[3]{z}}}double f(double x, double y, double z, double t) {
double r569624 = x;
double r569625 = y;
double r569626 = z;
double r569627 = r569625 / r569626;
double r569628 = t;
double r569629 = r569627 * r569628;
double r569630 = r569629 / r569628;
double r569631 = r569624 * r569630;
return r569631;
}
double f(double x, double y, double z, double __attribute__((unused)) t) {
double r569632 = x;
double r569633 = y;
double r569634 = cbrt(r569633);
double r569635 = r569634 * r569634;
double r569636 = z;
double r569637 = cbrt(r569636);
double r569638 = r569637 * r569637;
double r569639 = r569635 / r569638;
double r569640 = r569632 * r569639;
double r569641 = cbrt(r569638);
double r569642 = cbrt(r569637);
double r569643 = r569641 * r569642;
double r569644 = r569634 / r569643;
double r569645 = r569640 * r569644;
return r569645;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 15.2 |
|---|---|
| Target | 1.6 |
| Herbie | 2.2 |
Initial program 15.2
Simplified6.4
rmApplied add-cube-cbrt7.1
Applied add-cube-cbrt7.3
Applied times-frac7.3
Applied associate-*r*2.1
rmApplied add-cube-cbrt2.2
Applied cbrt-prod2.2
Final simplification2.2
herbie shell --seed 2020036 +o rules:numerics
(FPCore (x y z t)
:name "Graphics.Rendering.Chart.Backend.Diagrams:calcFontMetrics from Chart-diagrams-1.5.1, B"
:precision binary64
:herbie-target
(if (< (/ (* (/ y z) t) t) -1.20672205123045e+245) (/ y (/ z x)) (if (< (/ (* (/ y z) t) t) -5.907522236933906e-275) (* x (/ y z)) (if (< (/ (* (/ y z) t) t) 5.658954423153415e-65) (/ y (/ z x)) (if (< (/ (* (/ y z) t) t) 2.0087180502407133e+217) (* x (/ y z)) (/ (* y x) z)))))
(* x (/ (* (/ y z) t) t)))