\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}}{z \cdot 3} \cdot \frac{\sqrt[3]{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \sqrt[3]{\sqrt[3]{t}}}{y}double f(double x, double y, double z, double t) {
double r907929 = x;
double r907930 = y;
double r907931 = z;
double r907932 = 3.0;
double r907933 = r907931 * r907932;
double r907934 = r907930 / r907933;
double r907935 = r907929 - r907934;
double r907936 = t;
double r907937 = r907933 * r907930;
double r907938 = r907936 / r907937;
double r907939 = r907935 + r907938;
return r907939;
}
double f(double x, double y, double z, double t) {
double r907940 = x;
double r907941 = y;
double r907942 = z;
double r907943 = 3.0;
double r907944 = r907942 * r907943;
double r907945 = r907941 / r907944;
double r907946 = r907940 - r907945;
double r907947 = t;
double r907948 = cbrt(r907947);
double r907949 = r907948 * r907948;
double r907950 = r907949 / r907944;
double r907951 = cbrt(r907949);
double r907952 = cbrt(r907948);
double r907953 = r907951 * r907952;
double r907954 = r907953 / r907941;
double r907955 = r907950 * r907954;
double r907956 = r907946 + r907955;
return r907956;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.6 |
|---|---|
| Target | 1.7 |
| Herbie | 1.8 |
Initial program 3.6
rmApplied add-cube-cbrt3.8
Applied times-frac1.7
rmApplied add-cube-cbrt1.8
Applied cbrt-prod1.8
Final simplification1.8
herbie shell --seed 2020046
(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))))