\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\frac{\frac{\frac{t}{3}}{z}}{y} + \left(\left(\frac{\frac{y}{3}}{z} + \left(-\frac{\frac{y}{3}}{z}\right)\right) + \left(x - \frac{\frac{y}{3}}{z}\right)\right)double f(double x, double y, double z, double t) {
double r30959908 = x;
double r30959909 = y;
double r30959910 = z;
double r30959911 = 3.0;
double r30959912 = r30959910 * r30959911;
double r30959913 = r30959909 / r30959912;
double r30959914 = r30959908 - r30959913;
double r30959915 = t;
double r30959916 = r30959912 * r30959909;
double r30959917 = r30959915 / r30959916;
double r30959918 = r30959914 + r30959917;
return r30959918;
}
double f(double x, double y, double z, double t) {
double r30959919 = t;
double r30959920 = 3.0;
double r30959921 = r30959919 / r30959920;
double r30959922 = z;
double r30959923 = r30959921 / r30959922;
double r30959924 = y;
double r30959925 = r30959923 / r30959924;
double r30959926 = r30959924 / r30959920;
double r30959927 = r30959926 / r30959922;
double r30959928 = -r30959927;
double r30959929 = r30959927 + r30959928;
double r30959930 = x;
double r30959931 = r30959930 - r30959927;
double r30959932 = r30959929 + r30959931;
double r30959933 = r30959925 + r30959932;
return r30959933;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.7 |
|---|---|
| Target | 1.7 |
| Herbie | 1.7 |
Initial program 3.7
rmApplied associate-/r*1.7
rmApplied associate-/r*1.7
rmApplied *-un-lft-identity1.7
Applied associate-/r*1.7
Simplified1.7
rmApplied *-un-lft-identity1.7
Applied times-frac1.7
Applied add-sqr-sqrt33.2
Applied prod-diff33.2
Simplified1.7
Simplified1.7
Final simplification1.7
herbie shell --seed 2019169 +o rules:numerics
(FPCore (x y z t)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, H"
:herbie-target
(+ (- x (/ y (* z 3.0))) (/ (/ t (* z 3.0)) y))
(+ (- x (/ y (* z 3.0))) (/ t (* (* z 3.0) y))))