\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 r611273 = x;
double r611274 = y;
double r611275 = r611273 + r611274;
double r611276 = log(r611275);
double r611277 = z;
double r611278 = log(r611277);
double r611279 = r611276 + r611278;
double r611280 = t;
double r611281 = r611279 - r611280;
double r611282 = a;
double r611283 = 0.5;
double r611284 = r611282 - r611283;
double r611285 = log(r611280);
double r611286 = r611284 * r611285;
double r611287 = r611281 + r611286;
return r611287;
}
double f(double x, double y, double z, double t, double a) {
double r611288 = x;
double r611289 = y;
double r611290 = r611288 + r611289;
double r611291 = log(r611290);
double r611292 = z;
double r611293 = log(r611292);
double r611294 = t;
double r611295 = r611293 - r611294;
double r611296 = a;
double r611297 = 0.5;
double r611298 = r611296 - r611297;
double r611299 = log(r611294);
double r611300 = r611298 * r611299;
double r611301 = r611295 + r611300;
double r611302 = r611291 + r611301;
return r611302;
}




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.2 |
| Herbie | 0.2 |
Initial program 0.3
rmApplied associate--l+0.3
Applied associate-+l+0.2
Final simplification0.2
herbie shell --seed 2020042
(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))))