\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t
\left(\left(\left(\log \left(x + y\right) + \log \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right)\right) + \log \left(\sqrt[3]{z}\right)\right) - t\right) + \left(a - 0.5\right) \cdot \log tdouble f(double x, double y, double z, double t, double a) {
double r877687 = x;
double r877688 = y;
double r877689 = r877687 + r877688;
double r877690 = log(r877689);
double r877691 = z;
double r877692 = log(r877691);
double r877693 = r877690 + r877692;
double r877694 = t;
double r877695 = r877693 - r877694;
double r877696 = a;
double r877697 = 0.5;
double r877698 = r877696 - r877697;
double r877699 = log(r877694);
double r877700 = r877698 * r877699;
double r877701 = r877695 + r877700;
return r877701;
}
double f(double x, double y, double z, double t, double a) {
double r877702 = x;
double r877703 = y;
double r877704 = r877702 + r877703;
double r877705 = log(r877704);
double r877706 = z;
double r877707 = cbrt(r877706);
double r877708 = r877707 * r877707;
double r877709 = log(r877708);
double r877710 = r877705 + r877709;
double r877711 = log(r877707);
double r877712 = r877710 + r877711;
double r877713 = t;
double r877714 = r877712 - r877713;
double r877715 = a;
double r877716 = 0.5;
double r877717 = r877715 - r877716;
double r877718 = log(r877713);
double r877719 = r877717 * r877718;
double r877720 = r877714 + r877719;
return r877720;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 0.3 |
|---|---|
| Target | 0.3 |
| Herbie | 0.3 |
Initial program 0.3
rmApplied add-cube-cbrt0.3
Applied log-prod0.3
Applied associate-+r+0.3
Final simplification0.3
herbie shell --seed 2020065
(FPCore (x y z t a)
:name "Numeric.SpecFunctions:logGammaL from math-functions-0.1.5.2"
:precision binary64
:herbie-target
(+ (log (+ x y)) (+ (- (log z) t) (* (- a 0.5) (log t))))
(+ (- (+ (log (+ x y)) (log z)) t) (* (- a 0.5) (log t))))