x + \frac{y \cdot y}{z}\mathsf{fma}\left(\frac{y}{z}, y, x\right)double f(double x, double y, double z) {
double r38884872 = x;
double r38884873 = y;
double r38884874 = r38884873 * r38884873;
double r38884875 = z;
double r38884876 = r38884874 / r38884875;
double r38884877 = r38884872 + r38884876;
return r38884877;
}
double f(double x, double y, double z) {
double r38884878 = y;
double r38884879 = z;
double r38884880 = r38884878 / r38884879;
double r38884881 = x;
double r38884882 = fma(r38884880, r38884878, r38884881);
return r38884882;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 5.7 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 5.7
Simplified0.1
Final simplification0.1
herbie shell --seed 2019163 +o rules:numerics
(FPCore (x y z)
:name "Crypto.Random.Test:calculate from crypto-random-0.0.9"
:herbie-target
(+ x (* y (/ y z)))
(+ x (/ (* y y) z)))