x + \frac{y \cdot y}{z}x + \frac{1}{\frac{\frac{z}{y}}{y}}double f(double x, double y, double z) {
double r798213 = x;
double r798214 = y;
double r798215 = r798214 * r798214;
double r798216 = z;
double r798217 = r798215 / r798216;
double r798218 = r798213 + r798217;
return r798218;
}
double f(double x, double y, double z) {
double r798219 = x;
double r798220 = 1.0;
double r798221 = z;
double r798222 = y;
double r798223 = r798221 / r798222;
double r798224 = r798223 / r798222;
double r798225 = r798220 / r798224;
double r798226 = r798219 + r798225;
return r798226;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 6.1
rmApplied associate-/l*0.1
rmApplied clear-num0.1
Final simplification0.1
herbie shell --seed 2020049
(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)))