\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t
\log t \cdot \left(a - 0.5\right) + \left(\frac{{\left(\log \left(x + y\right)\right)}^{3} + {\left(\log z\right)}^{3}}{\mathsf{fma}\left(\log \left(x + y\right), \log \left(x + y\right), \log z \cdot \left(\log z - \log \left(x + y\right)\right)\right)} - t\right)double f(double x, double y, double z, double t, double a) {
double r345026 = x;
double r345027 = y;
double r345028 = r345026 + r345027;
double r345029 = log(r345028);
double r345030 = z;
double r345031 = log(r345030);
double r345032 = r345029 + r345031;
double r345033 = t;
double r345034 = r345032 - r345033;
double r345035 = a;
double r345036 = 0.5;
double r345037 = r345035 - r345036;
double r345038 = log(r345033);
double r345039 = r345037 * r345038;
double r345040 = r345034 + r345039;
return r345040;
}
double f(double x, double y, double z, double t, double a) {
double r345041 = t;
double r345042 = log(r345041);
double r345043 = a;
double r345044 = 0.5;
double r345045 = r345043 - r345044;
double r345046 = r345042 * r345045;
double r345047 = x;
double r345048 = y;
double r345049 = r345047 + r345048;
double r345050 = log(r345049);
double r345051 = 3.0;
double r345052 = pow(r345050, r345051);
double r345053 = z;
double r345054 = log(r345053);
double r345055 = pow(r345054, r345051);
double r345056 = r345052 + r345055;
double r345057 = r345054 - r345050;
double r345058 = r345054 * r345057;
double r345059 = fma(r345050, r345050, r345058);
double r345060 = r345056 / r345059;
double r345061 = r345060 - r345041;
double r345062 = r345046 + r345061;
return r345062;
}




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 fma-udef0.3
Simplified0.3
rmApplied flip3-+0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2020045 +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))))