\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t
\left(\left(\mathsf{fma}\left(2, \log \left(\sqrt[3]{z}\right), \log \left(x + y\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 r234578 = x;
double r234579 = y;
double r234580 = r234578 + r234579;
double r234581 = log(r234580);
double r234582 = z;
double r234583 = log(r234582);
double r234584 = r234581 + r234583;
double r234585 = t;
double r234586 = r234584 - r234585;
double r234587 = a;
double r234588 = 0.5;
double r234589 = r234587 - r234588;
double r234590 = log(r234585);
double r234591 = r234589 * r234590;
double r234592 = r234586 + r234591;
return r234592;
}
double f(double x, double y, double z, double t, double a) {
double r234593 = 2.0;
double r234594 = z;
double r234595 = cbrt(r234594);
double r234596 = log(r234595);
double r234597 = x;
double r234598 = y;
double r234599 = r234597 + r234598;
double r234600 = log(r234599);
double r234601 = fma(r234593, r234596, r234600);
double r234602 = r234601 + r234596;
double r234603 = t;
double r234604 = r234602 - r234603;
double r234605 = a;
double r234606 = 0.5;
double r234607 = r234605 - r234606;
double r234608 = log(r234603);
double r234609 = r234607 * r234608;
double r234610 = r234604 + r234609;
return r234610;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| 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
Simplified0.3
Final simplification0.3
herbie shell --seed 2019325 +o rules:numerics
(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))))