\frac{\left(x - 2\right) \cdot \left(\left(\left(\left(x \cdot 4.16438922227999964 + 78.6994924154000017\right) \cdot x + 137.51941641600001\right) \cdot x + y\right) \cdot x + z\right)}{\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x + 47.066876606000001}\begin{array}{l}
\mathbf{if}\;x \le -1.3208084680443081 \cdot 10^{63} \lor \neg \left(x \le 7.097511826692136 \cdot 10^{66}\right):\\
\;\;\;\;\left(x - 2\right) \cdot \left(\left(\frac{y}{{x}^{3}} + 4.16438922227999964\right) - 101.785145853921094 \cdot \frac{1}{x}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x - 2\right) \cdot \frac{\left(\left(\left(x \cdot 4.16438922227999964 + 78.6994924154000017\right) \cdot x + 137.51941641600001\right) \cdot x + y\right) \cdot x + z}{\left(\left(\sqrt[3]{\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003} \cdot \sqrt[3]{\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003}\right) \cdot \left(\sqrt[3]{\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003} \cdot x\right) + 313.399215894\right) \cdot x + 47.066876606000001}\\
\end{array}double f(double x, double y, double z) {
double r302909 = x;
double r302910 = 2.0;
double r302911 = r302909 - r302910;
double r302912 = 4.16438922228;
double r302913 = r302909 * r302912;
double r302914 = 78.6994924154;
double r302915 = r302913 + r302914;
double r302916 = r302915 * r302909;
double r302917 = 137.519416416;
double r302918 = r302916 + r302917;
double r302919 = r302918 * r302909;
double r302920 = y;
double r302921 = r302919 + r302920;
double r302922 = r302921 * r302909;
double r302923 = z;
double r302924 = r302922 + r302923;
double r302925 = r302911 * r302924;
double r302926 = 43.3400022514;
double r302927 = r302909 + r302926;
double r302928 = r302927 * r302909;
double r302929 = 263.505074721;
double r302930 = r302928 + r302929;
double r302931 = r302930 * r302909;
double r302932 = 313.399215894;
double r302933 = r302931 + r302932;
double r302934 = r302933 * r302909;
double r302935 = 47.066876606;
double r302936 = r302934 + r302935;
double r302937 = r302925 / r302936;
return r302937;
}
double f(double x, double y, double z) {
double r302938 = x;
double r302939 = -1.3208084680443081e+63;
bool r302940 = r302938 <= r302939;
double r302941 = 7.097511826692136e+66;
bool r302942 = r302938 <= r302941;
double r302943 = !r302942;
bool r302944 = r302940 || r302943;
double r302945 = 2.0;
double r302946 = r302938 - r302945;
double r302947 = y;
double r302948 = 3.0;
double r302949 = pow(r302938, r302948);
double r302950 = r302947 / r302949;
double r302951 = 4.16438922228;
double r302952 = r302950 + r302951;
double r302953 = 101.7851458539211;
double r302954 = 1.0;
double r302955 = r302954 / r302938;
double r302956 = r302953 * r302955;
double r302957 = r302952 - r302956;
double r302958 = r302946 * r302957;
double r302959 = r302938 * r302951;
double r302960 = 78.6994924154;
double r302961 = r302959 + r302960;
double r302962 = r302961 * r302938;
double r302963 = 137.519416416;
double r302964 = r302962 + r302963;
double r302965 = r302964 * r302938;
double r302966 = r302965 + r302947;
double r302967 = r302966 * r302938;
double r302968 = z;
double r302969 = r302967 + r302968;
double r302970 = 43.3400022514;
double r302971 = r302938 + r302970;
double r302972 = r302971 * r302938;
double r302973 = 263.505074721;
double r302974 = r302972 + r302973;
double r302975 = cbrt(r302974);
double r302976 = r302975 * r302975;
double r302977 = r302975 * r302938;
double r302978 = r302976 * r302977;
double r302979 = 313.399215894;
double r302980 = r302978 + r302979;
double r302981 = r302980 * r302938;
double r302982 = 47.066876606;
double r302983 = r302981 + r302982;
double r302984 = r302969 / r302983;
double r302985 = r302946 * r302984;
double r302986 = r302944 ? r302958 : r302985;
return r302986;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 26.0 |
|---|---|
| Target | 0.6 |
| Herbie | 0.7 |
if x < -1.3208084680443081e+63 or 7.097511826692136e+66 < x Initial program 64.0
rmApplied *-un-lft-identity64.0
Applied times-frac61.4
Simplified61.4
Taylor expanded around inf 0.2
if -1.3208084680443081e+63 < x < 7.097511826692136e+66Initial program 2.3
rmApplied *-un-lft-identity2.3
Applied times-frac0.9
Simplified0.9
rmApplied add-cube-cbrt1.0
Applied associate-*l*1.0
Final simplification0.7
herbie shell --seed 2020003
(FPCore (x y z)
:name "Numeric.SpecFunctions:logGamma from math-functions-0.1.5.2, C"
:precision binary64
:herbie-target
(if (< x -3.326128725870005e+62) (- (+ (/ y (* x x)) (* 4.16438922228 x)) 110.1139242984811) (if (< x 9.429991714554673e+55) (* (/ (- x 2) 1) (/ (+ (* (+ (* (+ (* (+ (* x 4.16438922228) 78.6994924154) x) 137.519416416) x) y) x) z) (+ (* (+ (+ (* 263.505074721 x) (+ (* 43.3400022514 (* x x)) (* x (* x x)))) 313.399215894) x) 47.066876606))) (- (+ (/ y (* x x)) (* 4.16438922228 x)) 110.1139242984811)))
(/ (* (- x 2) (+ (* (+ (* (+ (* (+ (* x 4.16438922228) 78.6994924154) x) 137.519416416) x) y) x) z)) (+ (* (+ (* (+ (* (+ x 43.3400022514) x) 263.505074721) x) 313.399215894) x) 47.066876606)))