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 r16829230 = x;
double r16829231 = 0.5;
double r16829232 = r16829230 * r16829231;
double r16829233 = y;
double r16829234 = 1.0;
double r16829235 = z;
double r16829236 = r16829234 - r16829235;
double r16829237 = log(r16829235);
double r16829238 = r16829236 + r16829237;
double r16829239 = r16829233 * r16829238;
double r16829240 = r16829232 + r16829239;
return r16829240;
}
double f(double x, double y, double z) {
double r16829241 = x;
double r16829242 = 0.5;
double r16829243 = y;
double r16829244 = 1.0;
double r16829245 = z;
double r16829246 = log(r16829245);
double r16829247 = r16829245 - r16829246;
double r16829248 = r16829244 - r16829247;
double r16829249 = r16829243 * r16829248;
double r16829250 = fma(r16829241, r16829242, r16829249);
return r16829250;
}




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)))))