x + \frac{y \cdot y}{z}x + \frac{y}{\frac{z}{y}}double f(double x, double y, double z) {
double r786735 = x;
double r786736 = y;
double r786737 = r786736 * r786736;
double r786738 = z;
double r786739 = r786737 / r786738;
double r786740 = r786735 + r786739;
return r786740;
}
double f(double x, double y, double z) {
double r786741 = x;
double r786742 = y;
double r786743 = z;
double r786744 = r786743 / r786742;
double r786745 = r786742 / r786744;
double r786746 = r786741 + r786745;
return r786746;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 5.7 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 5.7
rmApplied associate-/l*0.1
Final simplification0.1
herbie shell --seed 2020100
(FPCore (x y z)
:name "Crypto.Random.Test:calculate from crypto-random-0.0.9"
:precision binary64
:herbie-target
(+ x (* y (/ y z)))
(+ x (/ (* y y) z)))