x + \frac{y \cdot \left(\left(\left(\left(z \cdot 3.13060547623 + 11.1667541262\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)}{\left(\left(\left(z + 15.234687407\right) \cdot z + 31.4690115749\right) \cdot z + 11.9400905721\right) \cdot z + 0.607771387771}\begin{array}{l}
\mathbf{if}\;z \le -1.4707468883041915 \cdot 10^{+53}:\\
\;\;\;\;\left(\left(y \cdot 3.13060547623 - \frac{y}{z} \cdot 36.527041698806414\right) + \frac{t}{z} \cdot \frac{y}{z}\right) + x\\
\mathbf{elif}\;z \le 3.7272833098172985 \cdot 10^{+62}:\\
\;\;\;\;x + y \cdot \frac{b + z \cdot \left(a + z \cdot \left(z \cdot \left(11.1667541262 + 3.13060547623 \cdot z\right) + t\right)\right)}{0.607771387771 + \left(11.9400905721 + z \cdot \left(31.4690115749 + z \cdot \left(15.234687407 + z\right)\right)\right) \cdot z}\\
\mathbf{else}:\\
\;\;\;\;\left(\left(y \cdot 3.13060547623 - \frac{y}{z} \cdot 36.527041698806414\right) + \frac{t}{z} \cdot \frac{y}{z}\right) + x\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r17787924 = x;
double r17787925 = y;
double r17787926 = z;
double r17787927 = 3.13060547623;
double r17787928 = r17787926 * r17787927;
double r17787929 = 11.1667541262;
double r17787930 = r17787928 + r17787929;
double r17787931 = r17787930 * r17787926;
double r17787932 = t;
double r17787933 = r17787931 + r17787932;
double r17787934 = r17787933 * r17787926;
double r17787935 = a;
double r17787936 = r17787934 + r17787935;
double r17787937 = r17787936 * r17787926;
double r17787938 = b;
double r17787939 = r17787937 + r17787938;
double r17787940 = r17787925 * r17787939;
double r17787941 = 15.234687407;
double r17787942 = r17787926 + r17787941;
double r17787943 = r17787942 * r17787926;
double r17787944 = 31.4690115749;
double r17787945 = r17787943 + r17787944;
double r17787946 = r17787945 * r17787926;
double r17787947 = 11.9400905721;
double r17787948 = r17787946 + r17787947;
double r17787949 = r17787948 * r17787926;
double r17787950 = 0.607771387771;
double r17787951 = r17787949 + r17787950;
double r17787952 = r17787940 / r17787951;
double r17787953 = r17787924 + r17787952;
return r17787953;
}
double f(double x, double y, double z, double t, double a, double b) {
double r17787954 = z;
double r17787955 = -1.4707468883041915e+53;
bool r17787956 = r17787954 <= r17787955;
double r17787957 = y;
double r17787958 = 3.13060547623;
double r17787959 = r17787957 * r17787958;
double r17787960 = r17787957 / r17787954;
double r17787961 = 36.527041698806414;
double r17787962 = r17787960 * r17787961;
double r17787963 = r17787959 - r17787962;
double r17787964 = t;
double r17787965 = r17787964 / r17787954;
double r17787966 = r17787965 * r17787960;
double r17787967 = r17787963 + r17787966;
double r17787968 = x;
double r17787969 = r17787967 + r17787968;
double r17787970 = 3.7272833098172985e+62;
bool r17787971 = r17787954 <= r17787970;
double r17787972 = b;
double r17787973 = a;
double r17787974 = 11.1667541262;
double r17787975 = r17787958 * r17787954;
double r17787976 = r17787974 + r17787975;
double r17787977 = r17787954 * r17787976;
double r17787978 = r17787977 + r17787964;
double r17787979 = r17787954 * r17787978;
double r17787980 = r17787973 + r17787979;
double r17787981 = r17787954 * r17787980;
double r17787982 = r17787972 + r17787981;
double r17787983 = 0.607771387771;
double r17787984 = 11.9400905721;
double r17787985 = 31.4690115749;
double r17787986 = 15.234687407;
double r17787987 = r17787986 + r17787954;
double r17787988 = r17787954 * r17787987;
double r17787989 = r17787985 + r17787988;
double r17787990 = r17787954 * r17787989;
double r17787991 = r17787984 + r17787990;
double r17787992 = r17787991 * r17787954;
double r17787993 = r17787983 + r17787992;
double r17787994 = r17787982 / r17787993;
double r17787995 = r17787957 * r17787994;
double r17787996 = r17787968 + r17787995;
double r17787997 = r17787971 ? r17787996 : r17787969;
double r17787998 = r17787956 ? r17787969 : r17787997;
return r17787998;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 28.6 |
|---|---|
| Target | 1.0 |
| Herbie | 1.1 |
if z < -1.4707468883041915e+53 or 3.7272833098172985e+62 < z Initial program 60.5
rmApplied *-un-lft-identity60.5
Applied times-frac59.1
Simplified59.1
Taylor expanded around inf 7.2
Simplified0.7
if -1.4707468883041915e+53 < z < 3.7272833098172985e+62Initial program 3.0
rmApplied *-un-lft-identity3.0
Applied times-frac1.4
Simplified1.4
Final simplification1.1
herbie shell --seed 2019164
(FPCore (x y z t a b)
:name "Numeric.SpecFunctions:logGamma from math-functions-0.1.5.2, D"
:herbie-target
(if (< z -6.499344996252632e+53) (+ x (* (+ (- 3.13060547623 (/ 36.527041698806414 z)) (/ t (* z z))) (/ y 1))) (if (< z 7.066965436914287e+59) (+ x (/ y (/ (+ (* (+ (* (+ (* (+ z 15.234687407) z) 31.4690115749) z) 11.9400905721) z) 0.607771387771) (+ (* (+ (* (+ (* (+ (* z 3.13060547623) 11.1667541262) z) t) z) a) z) b)))) (+ x (* (+ (- 3.13060547623 (/ 36.527041698806414 z)) (/ t (* z z))) (/ y 1)))))
(+ x (/ (* y (+ (* (+ (* (+ (* (+ (* z 3.13060547623) 11.1667541262) z) t) z) a) z) b)) (+ (* (+ (* (+ (* (+ z 15.234687407) z) 31.4690115749) z) 11.9400905721) z) 0.607771387771))))