\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.054541883482835 \cdot 10^{64} \lor \neg \left(x \le 3589456037.3124609\right):\\
\;\;\;\;\left(\frac{y}{{x}^{2}} + 4.16438922227999964 \cdot x\right) - 110.11392429848109\\
\mathbf{else}:\\
\;\;\;\;\frac{x - 2}{\sqrt{\sqrt{\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x + 47.066876606000001}} \cdot \left|\sqrt[3]{\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x + 47.066876606000001}\right|} \cdot \frac{\frac{\left(\left(\left(x \cdot 4.16438922227999964 + 78.6994924154000017\right) \cdot x + 137.51941641600001\right) \cdot x + y\right) \cdot x + z}{\sqrt{\sqrt[3]{\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x + 47.066876606000001}}}}{\sqrt{\sqrt{\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x + 47.066876606000001}}}\\
\end{array}double f(double x, double y, double z) {
double r357062 = x;
double r357063 = 2.0;
double r357064 = r357062 - r357063;
double r357065 = 4.16438922228;
double r357066 = r357062 * r357065;
double r357067 = 78.6994924154;
double r357068 = r357066 + r357067;
double r357069 = r357068 * r357062;
double r357070 = 137.519416416;
double r357071 = r357069 + r357070;
double r357072 = r357071 * r357062;
double r357073 = y;
double r357074 = r357072 + r357073;
double r357075 = r357074 * r357062;
double r357076 = z;
double r357077 = r357075 + r357076;
double r357078 = r357064 * r357077;
double r357079 = 43.3400022514;
double r357080 = r357062 + r357079;
double r357081 = r357080 * r357062;
double r357082 = 263.505074721;
double r357083 = r357081 + r357082;
double r357084 = r357083 * r357062;
double r357085 = 313.399215894;
double r357086 = r357084 + r357085;
double r357087 = r357086 * r357062;
double r357088 = 47.066876606;
double r357089 = r357087 + r357088;
double r357090 = r357078 / r357089;
return r357090;
}
double f(double x, double y, double z) {
double r357091 = x;
double r357092 = -1.054541883482835e+64;
bool r357093 = r357091 <= r357092;
double r357094 = 3589456037.312461;
bool r357095 = r357091 <= r357094;
double r357096 = !r357095;
bool r357097 = r357093 || r357096;
double r357098 = y;
double r357099 = 2.0;
double r357100 = pow(r357091, r357099);
double r357101 = r357098 / r357100;
double r357102 = 4.16438922228;
double r357103 = r357102 * r357091;
double r357104 = r357101 + r357103;
double r357105 = 110.1139242984811;
double r357106 = r357104 - r357105;
double r357107 = 2.0;
double r357108 = r357091 - r357107;
double r357109 = 43.3400022514;
double r357110 = r357091 + r357109;
double r357111 = r357110 * r357091;
double r357112 = 263.505074721;
double r357113 = r357111 + r357112;
double r357114 = r357113 * r357091;
double r357115 = 313.399215894;
double r357116 = r357114 + r357115;
double r357117 = r357116 * r357091;
double r357118 = 47.066876606;
double r357119 = r357117 + r357118;
double r357120 = sqrt(r357119);
double r357121 = sqrt(r357120);
double r357122 = cbrt(r357119);
double r357123 = fabs(r357122);
double r357124 = r357121 * r357123;
double r357125 = r357108 / r357124;
double r357126 = r357091 * r357102;
double r357127 = 78.6994924154;
double r357128 = r357126 + r357127;
double r357129 = r357128 * r357091;
double r357130 = 137.519416416;
double r357131 = r357129 + r357130;
double r357132 = r357131 * r357091;
double r357133 = r357132 + r357098;
double r357134 = r357133 * r357091;
double r357135 = z;
double r357136 = r357134 + r357135;
double r357137 = sqrt(r357122);
double r357138 = r357136 / r357137;
double r357139 = r357138 / r357121;
double r357140 = r357125 * r357139;
double r357141 = r357097 ? r357106 : r357140;
return r357141;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 26.6 |
|---|---|
| Target | 0.5 |
| Herbie | 1.5 |
if x < -1.054541883482835e+64 or 3589456037.312461 < x Initial program 58.7
Taylor expanded around inf 1.6
if -1.054541883482835e+64 < x < 3589456037.312461Initial program 1.5
rmApplied add-sqr-sqrt1.9
Applied associate-/r*2.1
rmApplied add-sqr-sqrt2.1
Applied sqrt-prod2.3
Applied add-cube-cbrt2.1
Applied sqrt-prod2.1
Applied times-frac1.2
Applied times-frac1.4
Simplified1.4
Final simplification1.5
herbie shell --seed 2020100
(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)))