\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t
\left(\left(\log \left(\sqrt[3]{x + y} \cdot \sqrt[3]{x + y}\right) + \left(\log \left(\sqrt[3]{x + y}\right) + \log 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 r327041 = x;
double r327042 = y;
double r327043 = r327041 + r327042;
double r327044 = log(r327043);
double r327045 = z;
double r327046 = log(r327045);
double r327047 = r327044 + r327046;
double r327048 = t;
double r327049 = r327047 - r327048;
double r327050 = a;
double r327051 = 0.5;
double r327052 = r327050 - r327051;
double r327053 = log(r327048);
double r327054 = r327052 * r327053;
double r327055 = r327049 + r327054;
return r327055;
}
double f(double x, double y, double z, double t, double a) {
double r327056 = x;
double r327057 = y;
double r327058 = r327056 + r327057;
double r327059 = cbrt(r327058);
double r327060 = r327059 * r327059;
double r327061 = log(r327060);
double r327062 = log(r327059);
double r327063 = z;
double r327064 = log(r327063);
double r327065 = r327062 + r327064;
double r327066 = r327061 + r327065;
double r327067 = t;
double r327068 = r327066 - r327067;
double r327069 = a;
double r327070 = 0.5;
double r327071 = r327069 - r327070;
double r327072 = log(r327067);
double r327073 = r327071 * r327072;
double r327074 = r327068 + r327073;
return r327074;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 0.2 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
Initial program 0.2
rmApplied add-cube-cbrt0.2
Applied log-prod0.3
Applied associate-+l+0.3
Final simplification0.3
herbie shell --seed 2020024
(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))))