\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t
\left(\left(\left(\log \left(x + y\right) + \log \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right)\right) + \log \left(\sqrt[3]{z}\right)\right) - t\right) + \left(a - 0.5\right) \cdot \log tdouble f(double x, double y, double z, double t, double a) {
double r406808 = x;
double r406809 = y;
double r406810 = r406808 + r406809;
double r406811 = log(r406810);
double r406812 = z;
double r406813 = log(r406812);
double r406814 = r406811 + r406813;
double r406815 = t;
double r406816 = r406814 - r406815;
double r406817 = a;
double r406818 = 0.5;
double r406819 = r406817 - r406818;
double r406820 = log(r406815);
double r406821 = r406819 * r406820;
double r406822 = r406816 + r406821;
return r406822;
}
double f(double x, double y, double z, double t, double a) {
double r406823 = x;
double r406824 = y;
double r406825 = r406823 + r406824;
double r406826 = log(r406825);
double r406827 = z;
double r406828 = cbrt(r406827);
double r406829 = r406828 * r406828;
double r406830 = log(r406829);
double r406831 = r406826 + r406830;
double r406832 = log(r406828);
double r406833 = r406831 + r406832;
double r406834 = t;
double r406835 = r406833 - r406834;
double r406836 = a;
double r406837 = 0.5;
double r406838 = r406836 - r406837;
double r406839 = log(r406834);
double r406840 = r406838 * r406839;
double r406841 = r406835 + r406840;
return r406841;
}




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 add-cube-cbrt0.3
Applied log-prod0.3
Applied associate-+r+0.3
Final simplification0.3
herbie shell --seed 2020021
(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))))