\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({\left(x + y\right)}^{\frac{1}{3}}\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 r343344 = x;
double r343345 = y;
double r343346 = r343344 + r343345;
double r343347 = log(r343346);
double r343348 = z;
double r343349 = log(r343348);
double r343350 = r343347 + r343349;
double r343351 = t;
double r343352 = r343350 - r343351;
double r343353 = a;
double r343354 = 0.5;
double r343355 = r343353 - r343354;
double r343356 = log(r343351);
double r343357 = r343355 * r343356;
double r343358 = r343352 + r343357;
return r343358;
}
double f(double x, double y, double z, double t, double a) {
double r343359 = x;
double r343360 = y;
double r343361 = r343359 + r343360;
double r343362 = cbrt(r343361);
double r343363 = r343362 * r343362;
double r343364 = log(r343363);
double r343365 = 0.3333333333333333;
double r343366 = pow(r343361, r343365);
double r343367 = log(r343366);
double r343368 = z;
double r343369 = log(r343368);
double r343370 = r343367 + r343369;
double r343371 = r343364 + r343370;
double r343372 = t;
double r343373 = r343371 - r343372;
double r343374 = a;
double r343375 = 0.5;
double r343376 = r343374 - r343375;
double r343377 = log(r343372);
double r343378 = r343376 * r343377;
double r343379 = r343373 + r343378;
return r343379;
}




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-+l+0.3
rmApplied pow1/30.3
Final simplification0.3
herbie shell --seed 2020062
(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))))