x \cdot 0.5 + y \cdot \left(\left(1 - z\right) + \log z\right)
x \cdot 0.5 + y \cdot \left(\left(1 - z\right) + \log z\right)
double f(double x, double y, double z) {
double r310876 = x;
double r310877 = 0.5;
double r310878 = r310876 * r310877;
double r310879 = y;
double r310880 = 1.0;
double r310881 = z;
double r310882 = r310880 - r310881;
double r310883 = log(r310881);
double r310884 = r310882 + r310883;
double r310885 = r310879 * r310884;
double r310886 = r310878 + r310885;
return r310886;
}
double f(double x, double y, double z) {
double r310887 = x;
double r310888 = 0.5;
double r310889 = r310887 * r310888;
double r310890 = y;
double r310891 = 1.0;
double r310892 = z;
double r310893 = r310891 - r310892;
double r310894 = log(r310892);
double r310895 = r310893 + r310894;
double r310896 = r310890 * r310895;
double r310897 = r310889 + r310896;
return r310897;
}




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
Final simplification0.1
herbie shell --seed 2020049
(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)))))