\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 -4.9233272992807447 \cdot 10^{53}:\\
\;\;\;\;\left(x - 2\right) \cdot \left(\left(\frac{y}{{x}^{3}} + 4.16438922227999964\right) - 101.785145853921094 \cdot \frac{1}{x}\right)\\
\mathbf{elif}\;x \le 127999625215081296:\\
\;\;\;\;\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(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x} \cdot \sqrt[3]{\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x}\right) \cdot \sqrt[3]{\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x} + 313.399215894\right) \cdot x + 47.066876606000001}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{y}{{x}^{2}} + 4.16438922227999964 \cdot x\right) - 110.11392429848109\\
\end{array}double f(double x, double y, double z) {
double r449945 = x;
double r449946 = 2.0;
double r449947 = r449945 - r449946;
double r449948 = 4.16438922228;
double r449949 = r449945 * r449948;
double r449950 = 78.6994924154;
double r449951 = r449949 + r449950;
double r449952 = r449951 * r449945;
double r449953 = 137.519416416;
double r449954 = r449952 + r449953;
double r449955 = r449954 * r449945;
double r449956 = y;
double r449957 = r449955 + r449956;
double r449958 = r449957 * r449945;
double r449959 = z;
double r449960 = r449958 + r449959;
double r449961 = r449947 * r449960;
double r449962 = 43.3400022514;
double r449963 = r449945 + r449962;
double r449964 = r449963 * r449945;
double r449965 = 263.505074721;
double r449966 = r449964 + r449965;
double r449967 = r449966 * r449945;
double r449968 = 313.399215894;
double r449969 = r449967 + r449968;
double r449970 = r449969 * r449945;
double r449971 = 47.066876606;
double r449972 = r449970 + r449971;
double r449973 = r449961 / r449972;
return r449973;
}
double f(double x, double y, double z) {
double r449974 = x;
double r449975 = -4.923327299280745e+53;
bool r449976 = r449974 <= r449975;
double r449977 = 2.0;
double r449978 = r449974 - r449977;
double r449979 = y;
double r449980 = 3.0;
double r449981 = pow(r449974, r449980);
double r449982 = r449979 / r449981;
double r449983 = 4.16438922228;
double r449984 = r449982 + r449983;
double r449985 = 101.7851458539211;
double r449986 = 1.0;
double r449987 = r449986 / r449974;
double r449988 = r449985 * r449987;
double r449989 = r449984 - r449988;
double r449990 = r449978 * r449989;
double r449991 = 1.279996252150813e+17;
bool r449992 = r449974 <= r449991;
double r449993 = r449974 * r449983;
double r449994 = 78.6994924154;
double r449995 = r449993 + r449994;
double r449996 = r449995 * r449974;
double r449997 = 137.519416416;
double r449998 = r449996 + r449997;
double r449999 = r449998 * r449974;
double r450000 = r449999 + r449979;
double r450001 = r450000 * r449974;
double r450002 = z;
double r450003 = r450001 + r450002;
double r450004 = 43.3400022514;
double r450005 = r449974 + r450004;
double r450006 = r450005 * r449974;
double r450007 = 263.505074721;
double r450008 = r450006 + r450007;
double r450009 = r450008 * r449974;
double r450010 = cbrt(r450009);
double r450011 = r450010 * r450010;
double r450012 = r450011 * r450010;
double r450013 = 313.399215894;
double r450014 = r450012 + r450013;
double r450015 = r450014 * r449974;
double r450016 = 47.066876606;
double r450017 = r450015 + r450016;
double r450018 = r450003 / r450017;
double r450019 = r449978 * r450018;
double r450020 = 2.0;
double r450021 = pow(r449974, r450020);
double r450022 = r449979 / r450021;
double r450023 = r449983 * r449974;
double r450024 = r450022 + r450023;
double r450025 = 110.1139242984811;
double r450026 = r450024 - r450025;
double r450027 = r449992 ? r450019 : r450026;
double r450028 = r449976 ? r449990 : r450027;
return r450028;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 27.1 |
|---|---|
| Target | 0.5 |
| Herbie | 0.8 |
if x < -4.923327299280745e+53Initial program 62.7
rmApplied *-un-lft-identity62.7
Applied times-frac58.9
Simplified58.9
Taylor expanded around inf 0.5
if -4.923327299280745e+53 < x < 1.279996252150813e+17Initial program 0.9
rmApplied *-un-lft-identity0.9
Applied times-frac0.4
Simplified0.4
rmApplied add-cube-cbrt0.5
if 1.279996252150813e+17 < x Initial program 55.2
Taylor expanded around inf 1.6
Final simplification0.8
herbie shell --seed 2020020
(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)))