\frac{\left(x - 2\right) \cdot \left(\left(\left(\left(x \cdot 4.16438922227999963610045597306452691555 + 78.69949241540000173245061887428164482117\right) \cdot x + 137.5194164160000127594685181975364685059\right) \cdot x + y\right) \cdot x + z\right)}{\left(\left(\left(x + 43.3400022514000013984514225739985704422\right) \cdot x + 263.5050747210000281484099105000495910645\right) \cdot x + 313.3992158940000081202015280723571777344\right) \cdot x + 47.06687660600000100430406746454536914825}\begin{array}{l}
\mathbf{if}\;x \le -52919176326804272705496416256:\\
\;\;\;\;\left(x - 2\right) \cdot \left(\left(4.16438922227999963610045597306452691555 - \frac{101.785145853921093817007204052060842514}{x}\right) + \frac{y}{x \cdot \left(x \cdot x\right)}\right)\\
\mathbf{elif}\;x \le 1498395052788.9189453125:\\
\;\;\;\;\frac{\left(x \cdot \left(x \cdot \left(137.5194164160000127594685181975364685059 + \left(78.69949241540000173245061887428164482117 + 4.16438922227999963610045597306452691555 \cdot x\right) \cdot x\right) + y\right) + z\right) \cdot \left(x \cdot x - 2 \cdot 2\right)}{\left(2 + x\right) \cdot \left(\left(\left(\left(43.3400022514000013984514225739985704422 + x\right) \cdot x + 263.5050747210000281484099105000495910645\right) \cdot x + 313.3992158940000081202015280723571777344\right) \cdot x + 47.06687660600000100430406746454536914825\right)}\\
\mathbf{else}:\\
\;\;\;\;\left(4.16438922227999963610045597306452691555 \cdot x - 110.1139242984810948655649553984403610229\right) + \frac{y}{x \cdot x}\\
\end{array}double f(double x, double y, double z) {
double r19716491 = x;
double r19716492 = 2.0;
double r19716493 = r19716491 - r19716492;
double r19716494 = 4.16438922228;
double r19716495 = r19716491 * r19716494;
double r19716496 = 78.6994924154;
double r19716497 = r19716495 + r19716496;
double r19716498 = r19716497 * r19716491;
double r19716499 = 137.519416416;
double r19716500 = r19716498 + r19716499;
double r19716501 = r19716500 * r19716491;
double r19716502 = y;
double r19716503 = r19716501 + r19716502;
double r19716504 = r19716503 * r19716491;
double r19716505 = z;
double r19716506 = r19716504 + r19716505;
double r19716507 = r19716493 * r19716506;
double r19716508 = 43.3400022514;
double r19716509 = r19716491 + r19716508;
double r19716510 = r19716509 * r19716491;
double r19716511 = 263.505074721;
double r19716512 = r19716510 + r19716511;
double r19716513 = r19716512 * r19716491;
double r19716514 = 313.399215894;
double r19716515 = r19716513 + r19716514;
double r19716516 = r19716515 * r19716491;
double r19716517 = 47.066876606;
double r19716518 = r19716516 + r19716517;
double r19716519 = r19716507 / r19716518;
return r19716519;
}
double f(double x, double y, double z) {
double r19716520 = x;
double r19716521 = -5.291917632680427e+28;
bool r19716522 = r19716520 <= r19716521;
double r19716523 = 2.0;
double r19716524 = r19716520 - r19716523;
double r19716525 = 4.16438922228;
double r19716526 = 101.7851458539211;
double r19716527 = r19716526 / r19716520;
double r19716528 = r19716525 - r19716527;
double r19716529 = y;
double r19716530 = r19716520 * r19716520;
double r19716531 = r19716520 * r19716530;
double r19716532 = r19716529 / r19716531;
double r19716533 = r19716528 + r19716532;
double r19716534 = r19716524 * r19716533;
double r19716535 = 1498395052788.919;
bool r19716536 = r19716520 <= r19716535;
double r19716537 = 137.519416416;
double r19716538 = 78.6994924154;
double r19716539 = r19716525 * r19716520;
double r19716540 = r19716538 + r19716539;
double r19716541 = r19716540 * r19716520;
double r19716542 = r19716537 + r19716541;
double r19716543 = r19716520 * r19716542;
double r19716544 = r19716543 + r19716529;
double r19716545 = r19716520 * r19716544;
double r19716546 = z;
double r19716547 = r19716545 + r19716546;
double r19716548 = r19716523 * r19716523;
double r19716549 = r19716530 - r19716548;
double r19716550 = r19716547 * r19716549;
double r19716551 = r19716523 + r19716520;
double r19716552 = 43.3400022514;
double r19716553 = r19716552 + r19716520;
double r19716554 = r19716553 * r19716520;
double r19716555 = 263.505074721;
double r19716556 = r19716554 + r19716555;
double r19716557 = r19716556 * r19716520;
double r19716558 = 313.399215894;
double r19716559 = r19716557 + r19716558;
double r19716560 = r19716559 * r19716520;
double r19716561 = 47.066876606;
double r19716562 = r19716560 + r19716561;
double r19716563 = r19716551 * r19716562;
double r19716564 = r19716550 / r19716563;
double r19716565 = 110.1139242984811;
double r19716566 = r19716539 - r19716565;
double r19716567 = r19716529 / r19716530;
double r19716568 = r19716566 + r19716567;
double r19716569 = r19716536 ? r19716564 : r19716568;
double r19716570 = r19716522 ? r19716534 : r19716569;
return r19716570;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 26.6 |
|---|---|
| Target | 0.5 |
| Herbie | 1.2 |
if x < -5.291917632680427e+28Initial program 58.4
rmApplied *-un-lft-identity58.4
Applied times-frac54.1
Simplified54.1
rmApplied clear-num54.1
rmApplied div-inv54.1
Taylor expanded around inf 1.5
Simplified1.5
if -5.291917632680427e+28 < x < 1498395052788.919Initial program 0.3
rmApplied flip--0.4
Applied associate-*l/0.5
Applied associate-/l/0.5
if 1498395052788.919 < x Initial program 54.5
Taylor expanded around inf 2.3
Simplified2.3
Final simplification1.2
herbie shell --seed 2019172
(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)))