x + \frac{y \cdot \left(\left(z \cdot 0.0692910599291888946 + 0.49173176105059679\right) \cdot z + 0.279195317918524977\right)}{\left(z + 6.0124592597641033\right) \cdot z + 3.35034381502230394}\begin{array}{l}
\mathbf{if}\;z \le -1.743972544360285 \cdot 10^{154}:\\
\;\;\;\;x + \frac{y}{\left(14.431876219268938 - 15.646356830292035 \cdot \frac{1}{z}\right) + \frac{\frac{101.23733352003816}{z}}{z}}\\
\mathbf{elif}\;z \le 8.4817809066997952 \cdot 10^{-11}:\\
\;\;\;\;x + y \cdot \frac{\left(z \cdot 0.0692910599291888946 + 0.49173176105059679\right) \cdot z + 0.279195317918524977}{\left(z + 6.0124592597641033\right) \cdot z + 3.35034381502230394}\\
\mathbf{else}:\\
\;\;\;\;x + y \cdot \frac{1}{\left(14.431876219268938 - 15.646356830292035 \cdot \frac{1}{z}\right) + \frac{\frac{101.23733352003816}{z}}{z}}\\
\end{array}double f(double x, double y, double z) {
double r368832 = x;
double r368833 = y;
double r368834 = z;
double r368835 = 0.0692910599291889;
double r368836 = r368834 * r368835;
double r368837 = 0.4917317610505968;
double r368838 = r368836 + r368837;
double r368839 = r368838 * r368834;
double r368840 = 0.279195317918525;
double r368841 = r368839 + r368840;
double r368842 = r368833 * r368841;
double r368843 = 6.012459259764103;
double r368844 = r368834 + r368843;
double r368845 = r368844 * r368834;
double r368846 = 3.350343815022304;
double r368847 = r368845 + r368846;
double r368848 = r368842 / r368847;
double r368849 = r368832 + r368848;
return r368849;
}
double f(double x, double y, double z) {
double r368850 = z;
double r368851 = -1.743972544360285e+154;
bool r368852 = r368850 <= r368851;
double r368853 = x;
double r368854 = y;
double r368855 = 14.431876219268938;
double r368856 = 15.646356830292035;
double r368857 = 1.0;
double r368858 = r368857 / r368850;
double r368859 = r368856 * r368858;
double r368860 = r368855 - r368859;
double r368861 = 101.23733352003816;
double r368862 = r368861 / r368850;
double r368863 = r368862 / r368850;
double r368864 = r368860 + r368863;
double r368865 = r368854 / r368864;
double r368866 = r368853 + r368865;
double r368867 = 8.481780906699795e-11;
bool r368868 = r368850 <= r368867;
double r368869 = 0.0692910599291889;
double r368870 = r368850 * r368869;
double r368871 = 0.4917317610505968;
double r368872 = r368870 + r368871;
double r368873 = r368872 * r368850;
double r368874 = 0.279195317918525;
double r368875 = r368873 + r368874;
double r368876 = 6.012459259764103;
double r368877 = r368850 + r368876;
double r368878 = r368877 * r368850;
double r368879 = 3.350343815022304;
double r368880 = r368878 + r368879;
double r368881 = r368875 / r368880;
double r368882 = r368854 * r368881;
double r368883 = r368853 + r368882;
double r368884 = r368857 / r368864;
double r368885 = r368854 * r368884;
double r368886 = r368853 + r368885;
double r368887 = r368868 ? r368883 : r368886;
double r368888 = r368852 ? r368866 : r368887;
return r368888;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 20.5 |
|---|---|
| Target | 0.2 |
| Herbie | 0.4 |
if z < -1.743972544360285e+154Initial program 63.9
rmApplied associate-/l*63.9
Taylor expanded around inf 0.1
Simplified0.1
if -1.743972544360285e+154 < z < 8.481780906699795e-11Initial program 3.8
rmApplied *-un-lft-identity3.8
Applied times-frac0.1
Simplified0.1
if 8.481780906699795e-11 < z Initial program 38.9
rmApplied associate-/l*30.6
Taylor expanded around inf 1.4
Simplified1.4
rmApplied div-inv1.3
Final simplification0.4
herbie shell --seed 2020018
(FPCore (x y z)
:name "Numeric.SpecFunctions:logGamma from math-functions-0.1.5.2, B"
:precision binary64
:herbie-target
(if (< z -8120153.652456675) (- (* (+ (/ 0.07512208616047561 z) 0.0692910599291889) y) (- (/ (* 0.40462203869992125 y) (* z z)) x)) (if (< z 657611897278737680000) (+ x (* (* y (+ (* (+ (* z 0.0692910599291889) 0.4917317610505968) z) 0.279195317918525)) (/ 1 (+ (* (+ z 6.012459259764103) z) 3.350343815022304)))) (- (* (+ (/ 0.07512208616047561 z) 0.0692910599291889) y) (- (/ (* 0.40462203869992125 y) (* z z)) x))))
(+ x (/ (* y (+ (* (+ (* z 0.0692910599291889) 0.4917317610505968) z) 0.279195317918525)) (+ (* (+ z 6.012459259764103) z) 3.350343815022304))))