\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\left(x - \frac{y}{z \cdot 3}\right) + \frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{3} \cdot \frac{{\left(\frac{\sqrt[3]{\sqrt[3]{t}}}{\sqrt[3]{y}}\right)}^{3}}{z}double f(double x, double y, double z, double t) {
double r557905 = x;
double r557906 = y;
double r557907 = z;
double r557908 = 3.0;
double r557909 = r557907 * r557908;
double r557910 = r557906 / r557909;
double r557911 = r557905 - r557910;
double r557912 = t;
double r557913 = r557909 * r557906;
double r557914 = r557912 / r557913;
double r557915 = r557911 + r557914;
return r557915;
}
double f(double x, double y, double z, double t) {
double r557916 = x;
double r557917 = y;
double r557918 = z;
double r557919 = 3.0;
double r557920 = r557918 * r557919;
double r557921 = r557917 / r557920;
double r557922 = r557916 - r557921;
double r557923 = t;
double r557924 = cbrt(r557923);
double r557925 = r557924 * r557924;
double r557926 = r557925 / r557919;
double r557927 = cbrt(r557924);
double r557928 = cbrt(r557917);
double r557929 = r557927 / r557928;
double r557930 = 3.0;
double r557931 = pow(r557929, r557930);
double r557932 = r557931 / r557918;
double r557933 = r557926 * r557932;
double r557934 = r557922 + r557933;
return r557934;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.5 |
|---|---|
| Target | 1.6 |
| Herbie | 3.4 |
Initial program 3.5
rmApplied add-cube-cbrt3.7
Applied times-frac1.7
rmApplied add-cube-cbrt1.8
Applied add-cube-cbrt1.9
Applied times-frac1.9
Applied associate-*r*1.0
Final simplification3.4
herbie shell --seed 2019291
(FPCore (x y z t)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, H"
:precision binary64
:herbie-target
(+ (- x (/ y (* z 3))) (/ (/ t (* z 3)) y))
(+ (- x (/ y (* z 3))) (/ t (* (* z 3) y))))