x \cdot 0.5 + y \cdot \left(\left(1 - z\right) + \log z\right)
\mathsf{fma}\left(x, 0.5, y \cdot \left(\left(1 - z\right) + \log z\right)\right)double f(double x, double y, double z) {
double r296948 = x;
double r296949 = 0.5;
double r296950 = r296948 * r296949;
double r296951 = y;
double r296952 = 1.0;
double r296953 = z;
double r296954 = r296952 - r296953;
double r296955 = log(r296953);
double r296956 = r296954 + r296955;
double r296957 = r296951 * r296956;
double r296958 = r296950 + r296957;
return r296958;
}
double f(double x, double y, double z) {
double r296959 = x;
double r296960 = 0.5;
double r296961 = y;
double r296962 = 1.0;
double r296963 = z;
double r296964 = r296962 - r296963;
double r296965 = log(r296963);
double r296966 = r296964 + r296965;
double r296967 = r296961 * r296966;
double r296968 = fma(r296959, r296960, r296967);
return r296968;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 0.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019353 +o rules:numerics
(FPCore (x y z)
:name "System.Random.MWC.Distributions:gamma from mwc-random-0.13.3.2"
:precision binary64
:herbie-target
(- (+ y (* 0.5 x)) (* y (- z (log z))))
(+ (* x 0.5) (* y (+ (- 1 z) (log z)))))