x \cdot 0.5 + y \cdot \left(\left(1 - z\right) + \log z\right)
x \cdot 0.5 + y \cdot \left(\left(\log z + 1\right) - z\right)
double f(double x, double y, double z) {
double r209941 = x;
double r209942 = 0.5;
double r209943 = r209941 * r209942;
double r209944 = y;
double r209945 = 1.0;
double r209946 = z;
double r209947 = r209945 - r209946;
double r209948 = log(r209946);
double r209949 = r209947 + r209948;
double r209950 = r209944 * r209949;
double r209951 = r209943 + r209950;
return r209951;
}
double f(double x, double y, double z) {
double r209952 = x;
double r209953 = 0.5;
double r209954 = r209952 * r209953;
double r209955 = y;
double r209956 = z;
double r209957 = log(r209956);
double r209958 = 1.0;
double r209959 = r209957 + r209958;
double r209960 = r209959 - r209956;
double r209961 = r209955 * r209960;
double r209962 = r209954 + r209961;
return r209962;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 0.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 0.1
Taylor expanded around 0 0.1
rmApplied pow10.1
Final simplification0.1
herbie shell --seed 2019297
(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)))))