\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t
\log \left(\sqrt{x + y}\right) + \left(\log \left(\sqrt{x + y}\right) + \left(\left(\log z - t\right) + \left(a - 0.5\right) \cdot \log t\right)\right)double f(double x, double y, double z, double t, double a) {
double r342032 = x;
double r342033 = y;
double r342034 = r342032 + r342033;
double r342035 = log(r342034);
double r342036 = z;
double r342037 = log(r342036);
double r342038 = r342035 + r342037;
double r342039 = t;
double r342040 = r342038 - r342039;
double r342041 = a;
double r342042 = 0.5;
double r342043 = r342041 - r342042;
double r342044 = log(r342039);
double r342045 = r342043 * r342044;
double r342046 = r342040 + r342045;
return r342046;
}
double f(double x, double y, double z, double t, double a) {
double r342047 = x;
double r342048 = y;
double r342049 = r342047 + r342048;
double r342050 = sqrt(r342049);
double r342051 = log(r342050);
double r342052 = z;
double r342053 = log(r342052);
double r342054 = t;
double r342055 = r342053 - r342054;
double r342056 = a;
double r342057 = 0.5;
double r342058 = r342056 - r342057;
double r342059 = log(r342054);
double r342060 = r342058 * r342059;
double r342061 = r342055 + r342060;
double r342062 = r342051 + r342061;
double r342063 = r342051 + r342062;
return r342063;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 0.2 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
Initial program 0.2
rmApplied associate--l+0.3
Applied associate-+l+0.2
rmApplied add-sqr-sqrt0.2
Applied log-prod0.2
Applied associate-+l+0.3
Final simplification0.3
herbie shell --seed 2020100
(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))))