\left(\left(\left(x + y\right) + z\right) - z \cdot \log t\right) + \left(a - 0.5\right) \cdot b
\left(\left(x + y\right) + \left(z - \left(\left(2 \cdot \log \left(\sqrt[3]{t}\right)\right) \cdot z + \log \left(\sqrt[3]{t}\right) \cdot z\right)\right)\right) + \left(a - 0.5\right) \cdot bdouble f(double x, double y, double z, double t, double a, double b) {
double r325674 = x;
double r325675 = y;
double r325676 = r325674 + r325675;
double r325677 = z;
double r325678 = r325676 + r325677;
double r325679 = t;
double r325680 = log(r325679);
double r325681 = r325677 * r325680;
double r325682 = r325678 - r325681;
double r325683 = a;
double r325684 = 0.5;
double r325685 = r325683 - r325684;
double r325686 = b;
double r325687 = r325685 * r325686;
double r325688 = r325682 + r325687;
return r325688;
}
double f(double x, double y, double z, double t, double a, double b) {
double r325689 = x;
double r325690 = y;
double r325691 = r325689 + r325690;
double r325692 = z;
double r325693 = 2.0;
double r325694 = t;
double r325695 = cbrt(r325694);
double r325696 = log(r325695);
double r325697 = r325693 * r325696;
double r325698 = r325697 * r325692;
double r325699 = r325696 * r325692;
double r325700 = r325698 + r325699;
double r325701 = r325692 - r325700;
double r325702 = r325691 + r325701;
double r325703 = a;
double r325704 = 0.5;
double r325705 = r325703 - r325704;
double r325706 = b;
double r325707 = r325705 * r325706;
double r325708 = r325702 + r325707;
return r325708;
}




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.4 |
| Herbie | 0.1 |
Initial program 0.1
rmApplied associate--l+0.1
rmApplied add-cube-cbrt0.1
Applied log-prod0.1
Applied distribute-lft-in0.1
Simplified0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019303
(FPCore (x y z t a b)
:name "Numeric.SpecFunctions:logBeta from math-functions-0.1.5.2, A"
:precision binary64
: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)))