\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\frac{\frac{\frac{t}{z}}{3}}{y} + \left(x - \frac{\frac{y}{3}}{z}\right)double f(double x, double y, double z, double t) {
double r578539 = x;
double r578540 = y;
double r578541 = z;
double r578542 = 3.0;
double r578543 = r578541 * r578542;
double r578544 = r578540 / r578543;
double r578545 = r578539 - r578544;
double r578546 = t;
double r578547 = r578543 * r578540;
double r578548 = r578546 / r578547;
double r578549 = r578545 + r578548;
return r578549;
}
double f(double x, double y, double z, double t) {
double r578550 = t;
double r578551 = z;
double r578552 = r578550 / r578551;
double r578553 = 3.0;
double r578554 = r578552 / r578553;
double r578555 = y;
double r578556 = r578554 / r578555;
double r578557 = x;
double r578558 = r578555 / r578553;
double r578559 = r578558 / r578551;
double r578560 = r578557 - r578559;
double r578561 = r578556 + r578560;
return r578561;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.5 |
|---|---|
| Target | 1.7 |
| Herbie | 1.6 |
Initial program 3.5
rmApplied associate-/r*1.7
Simplified1.6
rmApplied *-un-lft-identity1.6
Applied times-frac1.7
rmApplied *-un-lft-identity1.7
Applied associate-*l*1.7
Simplified1.6
Final simplification1.6
herbie shell --seed 2019194
(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))))