\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 r320143 = x;
double r320144 = y;
double r320145 = r320143 + r320144;
double r320146 = log(r320145);
double r320147 = z;
double r320148 = log(r320147);
double r320149 = r320146 + r320148;
double r320150 = t;
double r320151 = r320149 - r320150;
double r320152 = a;
double r320153 = 0.5;
double r320154 = r320152 - r320153;
double r320155 = log(r320150);
double r320156 = r320154 * r320155;
double r320157 = r320151 + r320156;
return r320157;
}
double f(double x, double y, double z, double t, double a) {
double r320158 = x;
double r320159 = y;
double r320160 = r320158 + r320159;
double r320161 = log(r320160);
double r320162 = t;
double r320163 = log(r320162);
double r320164 = a;
double r320165 = 0.5;
double r320166 = r320164 - r320165;
double r320167 = z;
double r320168 = log(r320167);
double r320169 = r320168 - r320162;
double r320170 = fma(r320163, r320166, r320169);
double r320171 = r320161 + r320170;
return r320171;
}




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 2020002 +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))))