\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 -3.1485706152712823 \cdot 10^{38} \lor \neg \left(x \le 2.9239076483770014 \cdot 10^{28}\right):\\
\;\;\;\;\left(\frac{y}{{x}^{2}} + 4.16438922227999964 \cdot x\right) - 110.11392429848115\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(x - 2\right) \cdot \left(\left(\left(\left(4.16438922227999964 \cdot {x}^{2} + 78.6994924154000017 \cdot x\right) + 137.51941641600001\right) \cdot x + y\right) \cdot x + z\right)}{\left(\frac{\left({\left(\left(x + 43.3400022514000014\right) \cdot x\right)}^{3} + {263.50507472100003}^{3}\right) \cdot x}{\left(\left(x + 43.3400022514000014\right) \cdot x\right) \cdot \left(\left(x + 43.3400022514000014\right) \cdot x\right) + \left(263.50507472100003 \cdot 263.50507472100003 - \left(\left(x + 43.3400022514000014\right) \cdot x\right) \cdot 263.50507472100003\right)} + 313.399215894\right) \cdot x + 47.066876606000001}\\
\end{array}double f(double x, double y, double z) {
double r313331 = x;
double r313332 = 2.0;
double r313333 = r313331 - r313332;
double r313334 = 4.16438922228;
double r313335 = r313331 * r313334;
double r313336 = 78.6994924154;
double r313337 = r313335 + r313336;
double r313338 = r313337 * r313331;
double r313339 = 137.519416416;
double r313340 = r313338 + r313339;
double r313341 = r313340 * r313331;
double r313342 = y;
double r313343 = r313341 + r313342;
double r313344 = r313343 * r313331;
double r313345 = z;
double r313346 = r313344 + r313345;
double r313347 = r313333 * r313346;
double r313348 = 43.3400022514;
double r313349 = r313331 + r313348;
double r313350 = r313349 * r313331;
double r313351 = 263.505074721;
double r313352 = r313350 + r313351;
double r313353 = r313352 * r313331;
double r313354 = 313.399215894;
double r313355 = r313353 + r313354;
double r313356 = r313355 * r313331;
double r313357 = 47.066876606;
double r313358 = r313356 + r313357;
double r313359 = r313347 / r313358;
return r313359;
}
double f(double x, double y, double z) {
double r313360 = x;
double r313361 = -3.1485706152712823e+38;
bool r313362 = r313360 <= r313361;
double r313363 = 2.9239076483770014e+28;
bool r313364 = r313360 <= r313363;
double r313365 = !r313364;
bool r313366 = r313362 || r313365;
double r313367 = y;
double r313368 = 2.0;
double r313369 = pow(r313360, r313368);
double r313370 = r313367 / r313369;
double r313371 = 4.16438922228;
double r313372 = r313371 * r313360;
double r313373 = r313370 + r313372;
double r313374 = 110.11392429848115;
double r313375 = r313373 - r313374;
double r313376 = 2.0;
double r313377 = r313360 - r313376;
double r313378 = r313371 * r313369;
double r313379 = 78.6994924154;
double r313380 = r313379 * r313360;
double r313381 = r313378 + r313380;
double r313382 = 137.519416416;
double r313383 = r313381 + r313382;
double r313384 = r313383 * r313360;
double r313385 = r313384 + r313367;
double r313386 = r313385 * r313360;
double r313387 = z;
double r313388 = r313386 + r313387;
double r313389 = r313377 * r313388;
double r313390 = 43.3400022514;
double r313391 = r313360 + r313390;
double r313392 = r313391 * r313360;
double r313393 = 3.0;
double r313394 = pow(r313392, r313393);
double r313395 = 263.505074721;
double r313396 = pow(r313395, r313393);
double r313397 = r313394 + r313396;
double r313398 = r313397 * r313360;
double r313399 = r313392 * r313392;
double r313400 = r313395 * r313395;
double r313401 = r313392 * r313395;
double r313402 = r313400 - r313401;
double r313403 = r313399 + r313402;
double r313404 = r313398 / r313403;
double r313405 = 313.399215894;
double r313406 = r313404 + r313405;
double r313407 = r313406 * r313360;
double r313408 = 47.066876606;
double r313409 = r313407 + r313408;
double r313410 = r313389 / r313409;
double r313411 = r313366 ? r313375 : r313410;
return r313411;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 26.3 |
|---|---|
| Target | 0.5 |
| Herbie | 0.9 |
if x < -3.1485706152712823e+38 or 2.9239076483770014e+28 < x Initial program 58.7
rmApplied flip3-+64.0
Applied associate-/r/64.0
Taylor expanded around inf 1.3
if -3.1485706152712823e+38 < x < 2.9239076483770014e+28Initial program 0.6
Taylor expanded around 0 0.6
rmApplied flip3-+0.6
Applied associate-*l/0.6
Final simplification0.9
herbie shell --seed 2019198
(FPCore (x y z)
:name "Numeric.SpecFunctions:logGamma from math-functions-0.1.5.2, C"
:herbie-target
(if (< x -3.326128725870005e+62) (- (+ (/ y (* x x)) (* 4.16438922228 x)) 110.1139242984811) (if (< x 9.429991714554673e+55) (* (/ (- x 2.0) 1.0) (/ (+ (* (+ (* (+ (* (+ (* 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.0) (+ (* (+ (* (+ (* (+ (* x 4.16438922228) 78.6994924154) x) 137.519416416) x) y) x) z)) (+ (* (+ (* (+ (* (+ x 43.3400022514) x) 263.505074721) x) 313.399215894) x) 47.066876606)))