\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 - 0.5\right) \cdot \log t\right)
double f(double x, double y, double z, double t, double a) {
double r240822 = x;
double r240823 = y;
double r240824 = r240822 + r240823;
double r240825 = log(r240824);
double r240826 = z;
double r240827 = log(r240826);
double r240828 = r240825 + r240827;
double r240829 = t;
double r240830 = r240828 - r240829;
double r240831 = a;
double r240832 = 0.5;
double r240833 = r240831 - r240832;
double r240834 = log(r240829);
double r240835 = r240833 * r240834;
double r240836 = r240830 + r240835;
return r240836;
}
double f(double x, double y, double z, double t, double a) {
double r240837 = x;
double r240838 = y;
double r240839 = r240837 + r240838;
double r240840 = log(r240839);
double r240841 = z;
double r240842 = log(r240841);
double r240843 = t;
double r240844 = r240842 - r240843;
double r240845 = a;
double r240846 = 0.5;
double r240847 = r240845 - r240846;
double r240848 = log(r240843);
double r240849 = r240847 * r240848;
double r240850 = r240844 + r240849;
double r240851 = r240840 + r240850;
return r240851;
}




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