\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t
\mathsf{fma}\left(a - 0.5, \log t, \left(\log \left(x + y\right) + \log z\right) + \left(-t\right)\right)double f(double x, double y, double z, double t, double a) {
double r301345 = x;
double r301346 = y;
double r301347 = r301345 + r301346;
double r301348 = log(r301347);
double r301349 = z;
double r301350 = log(r301349);
double r301351 = r301348 + r301350;
double r301352 = t;
double r301353 = r301351 - r301352;
double r301354 = a;
double r301355 = 0.5;
double r301356 = r301354 - r301355;
double r301357 = log(r301352);
double r301358 = r301356 * r301357;
double r301359 = r301353 + r301358;
return r301359;
}
double f(double x, double y, double z, double t, double a) {
double r301360 = a;
double r301361 = 0.5;
double r301362 = r301360 - r301361;
double r301363 = t;
double r301364 = log(r301363);
double r301365 = x;
double r301366 = y;
double r301367 = r301365 + r301366;
double r301368 = log(r301367);
double r301369 = z;
double r301370 = log(r301369);
double r301371 = r301368 + r301370;
double r301372 = -r301363;
double r301373 = r301371 + r301372;
double r301374 = fma(r301362, r301364, r301373);
return r301374;
}




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
Final simplification0.3
herbie shell --seed 2019304 +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))))