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 r551995 = x;
double r551996 = y;
double r551997 = z;
double r551998 = r551996 / r551997;
double r551999 = t;
double r552000 = r551998 * r551999;
double r552001 = r552000 / r551999;
double r552002 = r551995 * r552001;
return r552002;
}
double f(double x, double y, double z, double __attribute__((unused)) t) {
double r552003 = x;
double r552004 = y;
double r552005 = cbrt(r552004);
double r552006 = r552005 * r552005;
double r552007 = z;
double r552008 = cbrt(r552007);
double r552009 = r552008 * r552008;
double r552010 = r552006 / r552009;
double r552011 = r552003 * r552010;
double r552012 = cbrt(r552009);
double r552013 = cbrt(r552008);
double r552014 = r552012 * r552013;
double r552015 = r552005 / r552014;
double r552016 = r552011 * r552015;
return r552016;
}




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