x \cdot 0.5 + y \cdot \left(\left(1.0 - z\right) + \log z\right)
\mathsf{fma}\left(x, 0.5, y \cdot \left(1.0 - \left(z - \log z\right)\right)\right)double f(double x, double y, double z) {
double r18495706 = x;
double r18495707 = 0.5;
double r18495708 = r18495706 * r18495707;
double r18495709 = y;
double r18495710 = 1.0;
double r18495711 = z;
double r18495712 = r18495710 - r18495711;
double r18495713 = log(r18495711);
double r18495714 = r18495712 + r18495713;
double r18495715 = r18495709 * r18495714;
double r18495716 = r18495708 + r18495715;
return r18495716;
}
double f(double x, double y, double z) {
double r18495717 = x;
double r18495718 = 0.5;
double r18495719 = y;
double r18495720 = 1.0;
double r18495721 = z;
double r18495722 = log(r18495721);
double r18495723 = r18495721 - r18495722;
double r18495724 = r18495720 - r18495723;
double r18495725 = r18495719 * r18495724;
double r18495726 = fma(r18495717, r18495718, r18495725);
return r18495726;
}




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 2019163 +o rules:numerics
(FPCore (x y z)
:name "System.Random.MWC.Distributions:gamma from mwc-random-0.13.3.2"
:herbie-target
(- (+ y (* 0.5 x)) (* y (- z (log z))))
(+ (* x 0.5) (* y (+ (- 1.0 z) (log z)))))