\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t
\mathsf{fma}\left(a - 0.5, 2 \cdot \log \left(\sqrt{\sqrt[3]{t}} \cdot \sqrt{\sqrt[3]{t}}\right), \left(\log z - t\right) + \log \left(x + y\right)\right) + \left(a - 0.5\right) \cdot \log \left({t}^{\frac{1}{3}}\right)double f(double x, double y, double z, double t, double a) {
double r344777 = x;
double r344778 = y;
double r344779 = r344777 + r344778;
double r344780 = log(r344779);
double r344781 = z;
double r344782 = log(r344781);
double r344783 = r344780 + r344782;
double r344784 = t;
double r344785 = r344783 - r344784;
double r344786 = a;
double r344787 = 0.5;
double r344788 = r344786 - r344787;
double r344789 = log(r344784);
double r344790 = r344788 * r344789;
double r344791 = r344785 + r344790;
return r344791;
}
double f(double x, double y, double z, double t, double a) {
double r344792 = a;
double r344793 = 0.5;
double r344794 = r344792 - r344793;
double r344795 = 2.0;
double r344796 = t;
double r344797 = cbrt(r344796);
double r344798 = sqrt(r344797);
double r344799 = r344798 * r344798;
double r344800 = log(r344799);
double r344801 = r344795 * r344800;
double r344802 = z;
double r344803 = log(r344802);
double r344804 = r344803 - r344796;
double r344805 = x;
double r344806 = y;
double r344807 = r344805 + r344806;
double r344808 = log(r344807);
double r344809 = r344804 + r344808;
double r344810 = fma(r344794, r344801, r344809);
double r344811 = 0.3333333333333333;
double r344812 = pow(r344796, r344811);
double r344813 = log(r344812);
double r344814 = r344794 * r344813;
double r344815 = r344810 + r344814;
return r344815;
}




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.2 |
| Herbie | 0.3 |
Initial program 0.3
rmApplied add-cube-cbrt0.3
Applied log-prod0.3
Applied distribute-lft-in0.3
Applied associate-+r+0.3
Simplified0.3
rmApplied pow1/30.3
rmApplied add-sqr-sqrt0.3
Final simplification0.3
herbie shell --seed 2020042 +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))))