\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 - \frac{1}{2}\right) \cdot \log t\right)double f(double x, double y, double z, double t, double a) {
double r303957 = x;
double r303958 = y;
double r303959 = r303957 + r303958;
double r303960 = log(r303959);
double r303961 = z;
double r303962 = log(r303961);
double r303963 = r303960 + r303962;
double r303964 = t;
double r303965 = r303963 - r303964;
double r303966 = a;
double r303967 = 0.5;
double r303968 = r303966 - r303967;
double r303969 = log(r303964);
double r303970 = r303968 * r303969;
double r303971 = r303965 + r303970;
return r303971;
}
double f(double x, double y, double z, double t, double a) {
double r303972 = x;
double r303973 = y;
double r303974 = r303972 + r303973;
double r303975 = log(r303974);
double r303976 = z;
double r303977 = log(r303976);
double r303978 = t;
double r303979 = r303977 - r303978;
double r303980 = a;
double r303981 = 1.0;
double r303982 = 2.0;
double r303983 = r303981 / r303982;
double r303984 = r303980 - r303983;
double r303985 = log(r303978);
double r303986 = r303984 * r303985;
double r303987 = r303979 + r303986;
double r303988 = r303975 + r303987;
return r303988;
}




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