\left(x - \frac{y}{z \cdot 3.0}\right) + \frac{t}{\left(z \cdot 3.0\right) \cdot y}\frac{\frac{t}{z}}{y \cdot 3.0} + \left(x - \frac{\frac{y}{z}}{3.0}\right)double f(double x, double y, double z, double t) {
double r13410040 = x;
double r13410041 = y;
double r13410042 = z;
double r13410043 = 3.0;
double r13410044 = r13410042 * r13410043;
double r13410045 = r13410041 / r13410044;
double r13410046 = r13410040 - r13410045;
double r13410047 = t;
double r13410048 = r13410044 * r13410041;
double r13410049 = r13410047 / r13410048;
double r13410050 = r13410046 + r13410049;
return r13410050;
}
double f(double x, double y, double z, double t) {
double r13410051 = t;
double r13410052 = z;
double r13410053 = r13410051 / r13410052;
double r13410054 = y;
double r13410055 = 3.0;
double r13410056 = r13410054 * r13410055;
double r13410057 = r13410053 / r13410056;
double r13410058 = x;
double r13410059 = r13410054 / r13410052;
double r13410060 = r13410059 / r13410055;
double r13410061 = r13410058 - r13410060;
double r13410062 = r13410057 + r13410061;
return r13410062;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.4 |
|---|---|
| Target | 1.6 |
| Herbie | 1.6 |
Initial program 3.4
rmApplied associate-/r*1.6
rmApplied associate-/r*1.6
rmApplied associate-/r*1.6
rmApplied associate-/l/1.6
Final simplification1.6
herbie shell --seed 2019156 +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))))