\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t
\left(\log \left(x + y\right) + \log z\right) + \left(\log t \cdot \left(a - 0.5\right) - t\right)
double f(double x, double y, double z, double t, double a) {
double r238734 = x;
double r238735 = y;
double r238736 = r238734 + r238735;
double r238737 = log(r238736);
double r238738 = z;
double r238739 = log(r238738);
double r238740 = r238737 + r238739;
double r238741 = t;
double r238742 = r238740 - r238741;
double r238743 = a;
double r238744 = 0.5;
double r238745 = r238743 - r238744;
double r238746 = log(r238741);
double r238747 = r238745 * r238746;
double r238748 = r238742 + r238747;
return r238748;
}
double f(double x, double y, double z, double t, double a) {
double r238749 = x;
double r238750 = y;
double r238751 = r238749 + r238750;
double r238752 = log(r238751);
double r238753 = z;
double r238754 = log(r238753);
double r238755 = r238752 + r238754;
double r238756 = t;
double r238757 = log(r238756);
double r238758 = a;
double r238759 = 0.5;
double r238760 = r238758 - r238759;
double r238761 = r238757 * r238760;
double r238762 = r238761 - r238756;
double r238763 = r238755 + r238762;
return r238763;
}




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