\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, \frac{\log \left(\sqrt{x + y}\right) \cdot \log \left(x + y\right) + \mathsf{fma}\left(\log \left(\sqrt{x + y}\right), \log \left(x + y\right), -{\left(\log z\right)}^{2}\right)}{\log \left(x + y\right) - \log z} - t\right)double f(double x, double y, double z, double t, double a) {
double r303442 = x;
double r303443 = y;
double r303444 = r303442 + r303443;
double r303445 = log(r303444);
double r303446 = z;
double r303447 = log(r303446);
double r303448 = r303445 + r303447;
double r303449 = t;
double r303450 = r303448 - r303449;
double r303451 = a;
double r303452 = 0.5;
double r303453 = r303451 - r303452;
double r303454 = log(r303449);
double r303455 = r303453 * r303454;
double r303456 = r303450 + r303455;
return r303456;
}
double f(double x, double y, double z, double t, double a) {
double r303457 = t;
double r303458 = log(r303457);
double r303459 = a;
double r303460 = 0.5;
double r303461 = r303459 - r303460;
double r303462 = x;
double r303463 = y;
double r303464 = r303462 + r303463;
double r303465 = sqrt(r303464);
double r303466 = log(r303465);
double r303467 = log(r303464);
double r303468 = r303466 * r303467;
double r303469 = z;
double r303470 = log(r303469);
double r303471 = 2.0;
double r303472 = pow(r303470, r303471);
double r303473 = -r303472;
double r303474 = fma(r303466, r303467, r303473);
double r303475 = r303468 + r303474;
double r303476 = r303467 - r303470;
double r303477 = r303475 / r303476;
double r303478 = r303477 - r303457;
double r303479 = fma(r303458, r303461, r303478);
return r303479;
}




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