\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t
\left(\log \left(y + x\right) - \mathsf{fma}\left(0.5 - a, \log t, t\right)\right) + \log zdouble f(double x, double y, double z, double t, double a) {
double r22262292 = x;
double r22262293 = y;
double r22262294 = r22262292 + r22262293;
double r22262295 = log(r22262294);
double r22262296 = z;
double r22262297 = log(r22262296);
double r22262298 = r22262295 + r22262297;
double r22262299 = t;
double r22262300 = r22262298 - r22262299;
double r22262301 = a;
double r22262302 = 0.5;
double r22262303 = r22262301 - r22262302;
double r22262304 = log(r22262299);
double r22262305 = r22262303 * r22262304;
double r22262306 = r22262300 + r22262305;
return r22262306;
}
double f(double x, double y, double z, double t, double a) {
double r22262307 = y;
double r22262308 = x;
double r22262309 = r22262307 + r22262308;
double r22262310 = log(r22262309);
double r22262311 = 0.5;
double r22262312 = a;
double r22262313 = r22262311 - r22262312;
double r22262314 = t;
double r22262315 = log(r22262314);
double r22262316 = fma(r22262313, r22262315, r22262314);
double r22262317 = r22262310 - r22262316;
double r22262318 = z;
double r22262319 = log(r22262318);
double r22262320 = r22262317 + r22262319;
return r22262320;
}




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 sub-neg0.3
Applied associate-+l+0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019172 +o rules:numerics
(FPCore (x y z t a)
:name "Numeric.SpecFunctions:logGammaL from math-functions-0.1.5.2"
:herbie-target
(+ (log (+ x y)) (+ (- (log z) t) (* (- a 0.5) (log t))))
(+ (- (+ (log (+ x y)) (log z)) t) (* (- a 0.5) (log t))))