\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 -2.63504100427729212 \cdot 10^{34}:\\
\;\;\;\;\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 1.6132622111277306 \cdot 10^{68}:\\
\;\;\;\;\left(x - 2\right) \cdot \left(\frac{1}{\sqrt{\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x + 47.066876606000001}} \cdot \frac{\left(\left(\left(x \cdot 4.16438922227999964 + 78.6994924154000017\right) \cdot x + 137.51941641600001\right) \cdot x + y\right) \cdot x + z}{\sqrt{\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x + 47.066876606000001}}\right)\\
\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 r472102 = x;
double r472103 = 2.0;
double r472104 = r472102 - r472103;
double r472105 = 4.16438922228;
double r472106 = r472102 * r472105;
double r472107 = 78.6994924154;
double r472108 = r472106 + r472107;
double r472109 = r472108 * r472102;
double r472110 = 137.519416416;
double r472111 = r472109 + r472110;
double r472112 = r472111 * r472102;
double r472113 = y;
double r472114 = r472112 + r472113;
double r472115 = r472114 * r472102;
double r472116 = z;
double r472117 = r472115 + r472116;
double r472118 = r472104 * r472117;
double r472119 = 43.3400022514;
double r472120 = r472102 + r472119;
double r472121 = r472120 * r472102;
double r472122 = 263.505074721;
double r472123 = r472121 + r472122;
double r472124 = r472123 * r472102;
double r472125 = 313.399215894;
double r472126 = r472124 + r472125;
double r472127 = r472126 * r472102;
double r472128 = 47.066876606;
double r472129 = r472127 + r472128;
double r472130 = r472118 / r472129;
return r472130;
}
double f(double x, double y, double z) {
double r472131 = x;
double r472132 = -2.635041004277292e+34;
bool r472133 = r472131 <= r472132;
double r472134 = 2.0;
double r472135 = r472131 - r472134;
double r472136 = y;
double r472137 = 3.0;
double r472138 = pow(r472131, r472137);
double r472139 = r472136 / r472138;
double r472140 = 4.16438922228;
double r472141 = r472139 + r472140;
double r472142 = 101.7851458539211;
double r472143 = 1.0;
double r472144 = r472143 / r472131;
double r472145 = r472142 * r472144;
double r472146 = r472141 - r472145;
double r472147 = r472135 * r472146;
double r472148 = 1.6132622111277306e+68;
bool r472149 = r472131 <= r472148;
double r472150 = 43.3400022514;
double r472151 = r472131 + r472150;
double r472152 = r472151 * r472131;
double r472153 = 263.505074721;
double r472154 = r472152 + r472153;
double r472155 = r472154 * r472131;
double r472156 = 313.399215894;
double r472157 = r472155 + r472156;
double r472158 = r472157 * r472131;
double r472159 = 47.066876606;
double r472160 = r472158 + r472159;
double r472161 = sqrt(r472160);
double r472162 = r472143 / r472161;
double r472163 = r472131 * r472140;
double r472164 = 78.6994924154;
double r472165 = r472163 + r472164;
double r472166 = r472165 * r472131;
double r472167 = 137.519416416;
double r472168 = r472166 + r472167;
double r472169 = r472168 * r472131;
double r472170 = r472169 + r472136;
double r472171 = r472170 * r472131;
double r472172 = z;
double r472173 = r472171 + r472172;
double r472174 = r472173 / r472161;
double r472175 = r472162 * r472174;
double r472176 = r472135 * r472175;
double r472177 = 2.0;
double r472178 = pow(r472131, r472177);
double r472179 = r472136 / r472178;
double r472180 = r472140 * r472131;
double r472181 = r472179 + r472180;
double r472182 = 110.1139242984811;
double r472183 = r472181 - r472182;
double r472184 = r472149 ? r472176 : r472183;
double r472185 = r472133 ? r472147 : r472184;
return r472185;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 26.6 |
|---|---|
| Target | 0.5 |
| Herbie | 1.0 |
if x < -2.635041004277292e+34Initial program 59.1
rmApplied *-un-lft-identity59.1
Applied times-frac54.8
Simplified54.8
Taylor expanded around inf 1.6
if -2.635041004277292e+34 < x < 1.6132622111277306e+68Initial program 2.0
rmApplied *-un-lft-identity2.0
Applied times-frac0.6
Simplified0.6
rmApplied add-sqr-sqrt0.8
Applied *-un-lft-identity0.8
Applied times-frac1.0
if 1.6132622111277306e+68 < x Initial program 64.0
Taylor expanded around inf 0.1
Final simplification1.0
herbie shell --seed 2020036
(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)))