\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) + \mathsf{fma}\left(\log t, a - 0.5, \log z - t\right)double f(double x, double y, double z, double t, double a) {
double r338657 = x;
double r338658 = y;
double r338659 = r338657 + r338658;
double r338660 = log(r338659);
double r338661 = z;
double r338662 = log(r338661);
double r338663 = r338660 + r338662;
double r338664 = t;
double r338665 = r338663 - r338664;
double r338666 = a;
double r338667 = 0.5;
double r338668 = r338666 - r338667;
double r338669 = log(r338664);
double r338670 = r338668 * r338669;
double r338671 = r338665 + r338670;
return r338671;
}
double f(double x, double y, double z, double t, double a) {
double r338672 = x;
double r338673 = y;
double r338674 = r338672 + r338673;
double r338675 = log(r338674);
double r338676 = t;
double r338677 = log(r338676);
double r338678 = a;
double r338679 = 0.5;
double r338680 = r338678 - r338679;
double r338681 = z;
double r338682 = log(r338681);
double r338683 = r338682 - r338676;
double r338684 = fma(r338677, r338680, r338683);
double r338685 = r338675 + r338684;
return r338685;
}




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
rmApplied associate--l+0.3
Applied associate-+l+0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2020089 +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))))