x + \frac{y \cdot y}{z}y \cdot \frac{y}{z} + xdouble f(double x, double y, double z) {
double r581230 = x;
double r581231 = y;
double r581232 = r581231 * r581231;
double r581233 = z;
double r581234 = r581232 / r581233;
double r581235 = r581230 + r581234;
return r581235;
}
double f(double x, double y, double z) {
double r581236 = y;
double r581237 = z;
double r581238 = r581236 / r581237;
double r581239 = r581236 * r581238;
double r581240 = x;
double r581241 = r581239 + r581240;
return r581241;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.2 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 6.2
Simplified0.1
rmApplied fma-udef0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019305 +o rules:numerics
(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)))