\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\left(x - \frac{\frac{y}{z}}{3}\right) + \frac{1}{\frac{y}{\frac{t}{z \cdot 3}}}double f(double x, double y, double z, double t) {
double r852245 = x;
double r852246 = y;
double r852247 = z;
double r852248 = 3.0;
double r852249 = r852247 * r852248;
double r852250 = r852246 / r852249;
double r852251 = r852245 - r852250;
double r852252 = t;
double r852253 = r852249 * r852246;
double r852254 = r852252 / r852253;
double r852255 = r852251 + r852254;
return r852255;
}
double f(double x, double y, double z, double t) {
double r852256 = x;
double r852257 = y;
double r852258 = z;
double r852259 = r852257 / r852258;
double r852260 = 3.0;
double r852261 = r852259 / r852260;
double r852262 = r852256 - r852261;
double r852263 = 1.0;
double r852264 = t;
double r852265 = r852258 * r852260;
double r852266 = r852264 / r852265;
double r852267 = r852257 / r852266;
double r852268 = r852263 / r852267;
double r852269 = r852262 + r852268;
return r852269;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.7 |
|---|---|
| Target | 1.8 |
| Herbie | 1.8 |
Initial program 3.7
rmApplied associate-/r*1.8
rmApplied associate-/r*1.8
rmApplied clear-num1.8
Final simplification1.8
herbie shell --seed 2020060 +o rules:numerics
(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))))