\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\left(x - \frac{1}{\frac{z \cdot 3}{y}}\right) + \frac{\frac{t}{z \cdot 3}}{y}double f(double x, double y, double z, double t) {
double r700244 = x;
double r700245 = y;
double r700246 = z;
double r700247 = 3.0;
double r700248 = r700246 * r700247;
double r700249 = r700245 / r700248;
double r700250 = r700244 - r700249;
double r700251 = t;
double r700252 = r700248 * r700245;
double r700253 = r700251 / r700252;
double r700254 = r700250 + r700253;
return r700254;
}
double f(double x, double y, double z, double t) {
double r700255 = x;
double r700256 = 1.0;
double r700257 = z;
double r700258 = 3.0;
double r700259 = r700257 * r700258;
double r700260 = y;
double r700261 = r700259 / r700260;
double r700262 = r700256 / r700261;
double r700263 = r700255 - r700262;
double r700264 = t;
double r700265 = r700264 / r700259;
double r700266 = r700265 / r700260;
double r700267 = r700263 + r700266;
return r700267;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 4.0 |
|---|---|
| Target | 1.7 |
| Herbie | 1.8 |
Initial program 4.0
rmApplied associate-/r*1.7
rmApplied clear-num1.8
Final simplification1.8
herbie shell --seed 2020045 +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))))