\left(\left(\left(x + y\right) + z\right) - z \cdot \log t\right) + \left(a - 0.5\right) \cdot b
\left(y + x\right) + \left(\frac{1 - \log t \cdot \log t}{1 + \log t} \cdot z + \left(a - 0.5\right) \cdot b\right)double f(double x, double y, double z, double t, double a, double b) {
double r21036998 = x;
double r21036999 = y;
double r21037000 = r21036998 + r21036999;
double r21037001 = z;
double r21037002 = r21037000 + r21037001;
double r21037003 = t;
double r21037004 = log(r21037003);
double r21037005 = r21037001 * r21037004;
double r21037006 = r21037002 - r21037005;
double r21037007 = a;
double r21037008 = 0.5;
double r21037009 = r21037007 - r21037008;
double r21037010 = b;
double r21037011 = r21037009 * r21037010;
double r21037012 = r21037006 + r21037011;
return r21037012;
}
double f(double x, double y, double z, double t, double a, double b) {
double r21037013 = y;
double r21037014 = x;
double r21037015 = r21037013 + r21037014;
double r21037016 = 1.0;
double r21037017 = t;
double r21037018 = log(r21037017);
double r21037019 = r21037018 * r21037018;
double r21037020 = r21037016 - r21037019;
double r21037021 = r21037016 + r21037018;
double r21037022 = r21037020 / r21037021;
double r21037023 = z;
double r21037024 = r21037022 * r21037023;
double r21037025 = a;
double r21037026 = 0.5;
double r21037027 = r21037025 - r21037026;
double r21037028 = b;
double r21037029 = r21037027 * r21037028;
double r21037030 = r21037024 + r21037029;
double r21037031 = r21037015 + r21037030;
return r21037031;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 0.1 |
|---|---|
| Target | 0.3 |
| Herbie | 0.1 |
Initial program 0.1
rmApplied associate--l+0.1
Applied associate-+l+0.1
Taylor expanded around inf 0.1
Simplified0.1
rmApplied flip--0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019165
(FPCore (x y z t a b)
:name "Numeric.SpecFunctions:logBeta from math-functions-0.1.5.2, A"
:herbie-target
(+ (+ (+ x y) (/ (* (- 1 (pow (log t) 2)) z) (+ 1 (log t)))) (* (- a 0.5) b))
(+ (- (+ (+ x y) z) (* z (log t))) (* (- a 0.5) b)))