\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(\left(\frac{\frac{y}{3}}{z} + y \cdot \frac{\frac{-1}{3}}{z}\right) + \left(x + \frac{\frac{-y}{3}}{z}\right)\right)double f(double x, double y, double z, double t) {
double r20898565 = x;
double r20898566 = y;
double r20898567 = z;
double r20898568 = 3.0;
double r20898569 = r20898567 * r20898568;
double r20898570 = r20898566 / r20898569;
double r20898571 = r20898565 - r20898570;
double r20898572 = t;
double r20898573 = r20898569 * r20898566;
double r20898574 = r20898572 / r20898573;
double r20898575 = r20898571 + r20898574;
return r20898575;
}
double f(double x, double y, double z, double t) {
double r20898576 = t;
double r20898577 = z;
double r20898578 = r20898576 / r20898577;
double r20898579 = 3.0;
double r20898580 = r20898578 / r20898579;
double r20898581 = y;
double r20898582 = r20898580 / r20898581;
double r20898583 = r20898581 / r20898579;
double r20898584 = r20898583 / r20898577;
double r20898585 = -1.0;
double r20898586 = r20898585 / r20898579;
double r20898587 = r20898586 / r20898577;
double r20898588 = r20898581 * r20898587;
double r20898589 = r20898584 + r20898588;
double r20898590 = x;
double r20898591 = -r20898581;
double r20898592 = r20898591 / r20898579;
double r20898593 = r20898592 / r20898577;
double r20898594 = r20898590 + r20898593;
double r20898595 = r20898589 + r20898594;
double r20898596 = r20898582 + r20898595;
return r20898596;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.9 |
|---|---|
| Target | 1.7 |
| Herbie | 1.8 |
Initial program 3.9
rmApplied associate-/r*1.7
rmApplied associate-/r*1.7
rmApplied *-un-lft-identity1.7
Applied times-frac1.7
Applied add-sqr-sqrt32.5
Applied prod-diff32.5
Simplified1.7
Simplified1.7
rmApplied *-un-lft-identity1.7
Applied div-inv1.7
Applied times-frac1.8
Simplified1.8
Final simplification1.8
herbie shell --seed 2019192 +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))))