x + \frac{y \cdot y}{z}x + \frac{\frac{y}{z}}{\frac{1}{y}}double f(double x, double y, double z) {
double r613438 = x;
double r613439 = y;
double r613440 = r613439 * r613439;
double r613441 = z;
double r613442 = r613440 / r613441;
double r613443 = r613438 + r613442;
return r613443;
}
double f(double x, double y, double z) {
double r613444 = x;
double r613445 = y;
double r613446 = z;
double r613447 = r613445 / r613446;
double r613448 = 1.0;
double r613449 = r613448 / r613445;
double r613450 = r613447 / r613449;
double r613451 = r613444 + r613450;
return r613451;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.0 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 6.0
rmApplied associate-/l*0.1
rmApplied div-inv0.1
Applied associate-/r*0.1
Final simplification0.1
herbie shell --seed 2019323
(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)))