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 r612106 = x;
double r612107 = y;
double r612108 = z;
double r612109 = r612107 / r612108;
double r612110 = t;
double r612111 = r612109 * r612110;
double r612112 = r612111 / r612110;
double r612113 = r612106 * r612112;
return r612113;
}
double f(double x, double y, double z, double __attribute__((unused)) t) {
double r612114 = x;
double r612115 = y;
double r612116 = cbrt(r612115);
double r612117 = r612116 * r612116;
double r612118 = z;
double r612119 = cbrt(r612118);
double r612120 = r612119 * r612119;
double r612121 = r612117 / r612120;
double r612122 = r612114 * r612121;
double r612123 = cbrt(r612120);
double r612124 = cbrt(r612119);
double r612125 = r612123 * r612124;
double r612126 = r612116 / r612125;
double r612127 = r612122 * r612126;
return r612127;
}




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
(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)))