\left(x - \frac{y}{z \cdot 3.0}\right) + \frac{t}{\left(z \cdot 3.0\right) \cdot y}\frac{\frac{\frac{1}{z}}{\frac{y}{t}}}{3.0} + \left(x - \frac{y}{z \cdot 3.0}\right)double f(double x, double y, double z, double t) {
double r31874984 = x;
double r31874985 = y;
double r31874986 = z;
double r31874987 = 3.0;
double r31874988 = r31874986 * r31874987;
double r31874989 = r31874985 / r31874988;
double r31874990 = r31874984 - r31874989;
double r31874991 = t;
double r31874992 = r31874988 * r31874985;
double r31874993 = r31874991 / r31874992;
double r31874994 = r31874990 + r31874993;
return r31874994;
}
double f(double x, double y, double z, double t) {
double r31874995 = 1.0;
double r31874996 = z;
double r31874997 = r31874995 / r31874996;
double r31874998 = y;
double r31874999 = t;
double r31875000 = r31874998 / r31874999;
double r31875001 = r31874997 / r31875000;
double r31875002 = 3.0;
double r31875003 = r31875001 / r31875002;
double r31875004 = x;
double r31875005 = r31874996 * r31875002;
double r31875006 = r31874998 / r31875005;
double r31875007 = r31875004 - r31875006;
double r31875008 = r31875003 + r31875007;
return r31875008;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.6 |
|---|---|
| Target | 1.6 |
| Herbie | 3.4 |
Initial program 3.6
rmApplied associate-/r*1.6
rmApplied *-un-lft-identity1.6
Applied times-frac1.6
Applied associate-/l*3.4
rmApplied associate-/r/3.4
Applied associate-/r*3.4
Final simplification3.4
herbie shell --seed 2019162 +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))))