\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t
\log \left(x + y\right) + \left(\left(\log z - t\right) + \left(a - 0.5\right) \cdot \log t\right)
double f(double x, double y, double z, double t, double a) {
double r267499 = x;
double r267500 = y;
double r267501 = r267499 + r267500;
double r267502 = log(r267501);
double r267503 = z;
double r267504 = log(r267503);
double r267505 = r267502 + r267504;
double r267506 = t;
double r267507 = r267505 - r267506;
double r267508 = a;
double r267509 = 0.5;
double r267510 = r267508 - r267509;
double r267511 = log(r267506);
double r267512 = r267510 * r267511;
double r267513 = r267507 + r267512;
return r267513;
}
double f(double x, double y, double z, double t, double a) {
double r267514 = x;
double r267515 = y;
double r267516 = r267514 + r267515;
double r267517 = log(r267516);
double r267518 = z;
double r267519 = log(r267518);
double r267520 = t;
double r267521 = r267519 - r267520;
double r267522 = a;
double r267523 = 0.5;
double r267524 = r267522 - r267523;
double r267525 = log(r267520);
double r267526 = r267524 * r267525;
double r267527 = r267521 + r267526;
double r267528 = r267517 + r267527;
return r267528;
}




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 associate--l+0.3
Applied associate-+l+0.3
Final simplification0.3
herbie shell --seed 2019304
(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))))