\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 r297426 = x;
double r297427 = y;
double r297428 = r297426 + r297427;
double r297429 = log(r297428);
double r297430 = z;
double r297431 = log(r297430);
double r297432 = r297429 + r297431;
double r297433 = t;
double r297434 = r297432 - r297433;
double r297435 = a;
double r297436 = 0.5;
double r297437 = r297435 - r297436;
double r297438 = log(r297433);
double r297439 = r297437 * r297438;
double r297440 = r297434 + r297439;
return r297440;
}
double f(double x, double y, double z, double t, double a) {
double r297441 = x;
double r297442 = y;
double r297443 = r297441 + r297442;
double r297444 = log(r297443);
double r297445 = z;
double r297446 = log(r297445);
double r297447 = t;
double r297448 = r297446 - r297447;
double r297449 = a;
double r297450 = 0.5;
double r297451 = r297449 - r297450;
double r297452 = log(r297447);
double r297453 = r297451 * r297452;
double r297454 = r297448 + r297453;
double r297455 = r297444 + r297454;
return r297455;
}




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 2020027
(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))))