\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t
\mathsf{fma}\left(\log t, a - 0.5, \log \left(x + y\right) + \left(\log z - t\right)\right)double f(double x, double y, double z, double t, double a) {
double r410838 = x;
double r410839 = y;
double r410840 = r410838 + r410839;
double r410841 = log(r410840);
double r410842 = z;
double r410843 = log(r410842);
double r410844 = r410841 + r410843;
double r410845 = t;
double r410846 = r410844 - r410845;
double r410847 = a;
double r410848 = 0.5;
double r410849 = r410847 - r410848;
double r410850 = log(r410845);
double r410851 = r410849 * r410850;
double r410852 = r410846 + r410851;
return r410852;
}
double f(double x, double y, double z, double t, double a) {
double r410853 = t;
double r410854 = log(r410853);
double r410855 = a;
double r410856 = 0.5;
double r410857 = r410855 - r410856;
double r410858 = x;
double r410859 = y;
double r410860 = r410858 + r410859;
double r410861 = log(r410860);
double r410862 = z;
double r410863 = log(r410862);
double r410864 = r410863 - r410853;
double r410865 = r410861 + r410864;
double r410866 = fma(r410854, r410857, r410865);
return r410866;
}




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