\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t
\mathsf{fma}\left(\log t, a - 0.5, \left(\log \left(\sqrt{\sqrt{x + y}}\right) + \left(\log \left(\sqrt{\sqrt{x + y}}\right) + \left(\log \left(\sqrt{x + y}\right) + \log z\right)\right)\right) - t\right)double f(double x, double y, double z, double t, double a) {
double r370445 = x;
double r370446 = y;
double r370447 = r370445 + r370446;
double r370448 = log(r370447);
double r370449 = z;
double r370450 = log(r370449);
double r370451 = r370448 + r370450;
double r370452 = t;
double r370453 = r370451 - r370452;
double r370454 = a;
double r370455 = 0.5;
double r370456 = r370454 - r370455;
double r370457 = log(r370452);
double r370458 = r370456 * r370457;
double r370459 = r370453 + r370458;
return r370459;
}
double f(double x, double y, double z, double t, double a) {
double r370460 = t;
double r370461 = log(r370460);
double r370462 = a;
double r370463 = 0.5;
double r370464 = r370462 - r370463;
double r370465 = x;
double r370466 = y;
double r370467 = r370465 + r370466;
double r370468 = sqrt(r370467);
double r370469 = sqrt(r370468);
double r370470 = log(r370469);
double r370471 = log(r370468);
double r370472 = z;
double r370473 = log(r370472);
double r370474 = r370471 + r370473;
double r370475 = r370470 + r370474;
double r370476 = r370470 + r370475;
double r370477 = r370476 - r370460;
double r370478 = fma(r370461, r370464, r370477);
return r370478;
}




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
Simplified0.3
rmApplied add-sqr-sqrt0.3
Applied log-prod0.3
Applied associate-+l+0.3
rmApplied add-sqr-sqrt0.3
Applied sqrt-prod0.3
Applied log-prod0.3
Applied associate-+l+0.3
Final simplification0.3
herbie shell --seed 2020081 +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))))