\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 -1917084796089090048 \lor \neg \left(x \le 1289371481938238734128107568048654778368\right):\\
\;\;\;\;\left(\frac{y}{{x}^{2}} + 4.16438922227999963610045597306452691555 \cdot x\right) - 110.1139242984810948655649553984403610229\\
\mathbf{else}:\\
\;\;\;\;\left(x - 2\right) \cdot \frac{\left(\left(\left(x \cdot 4.16438922227999963610045597306452691555 + 78.69949241540000173245061887428164482117\right) \cdot x + 137.5194164160000127594685181975364685059\right) \cdot x + y\right) \cdot x + z}{\left(\left(\left(x + 43.3400022514000013984514225739985704422\right) \cdot x + 263.5050747210000281484099105000495910645\right) \cdot x + 313.3992158940000081202015280723571777344\right) \cdot x + 47.06687660600000100430406746454536914825}\\
\end{array}double f(double x, double y, double z) {
double r245351 = x;
double r245352 = 2.0;
double r245353 = r245351 - r245352;
double r245354 = 4.16438922228;
double r245355 = r245351 * r245354;
double r245356 = 78.6994924154;
double r245357 = r245355 + r245356;
double r245358 = r245357 * r245351;
double r245359 = 137.519416416;
double r245360 = r245358 + r245359;
double r245361 = r245360 * r245351;
double r245362 = y;
double r245363 = r245361 + r245362;
double r245364 = r245363 * r245351;
double r245365 = z;
double r245366 = r245364 + r245365;
double r245367 = r245353 * r245366;
double r245368 = 43.3400022514;
double r245369 = r245351 + r245368;
double r245370 = r245369 * r245351;
double r245371 = 263.505074721;
double r245372 = r245370 + r245371;
double r245373 = r245372 * r245351;
double r245374 = 313.399215894;
double r245375 = r245373 + r245374;
double r245376 = r245375 * r245351;
double r245377 = 47.066876606;
double r245378 = r245376 + r245377;
double r245379 = r245367 / r245378;
return r245379;
}
double f(double x, double y, double z) {
double r245380 = x;
double r245381 = -1.91708479608909e+18;
bool r245382 = r245380 <= r245381;
double r245383 = 1.2893714819382387e+39;
bool r245384 = r245380 <= r245383;
double r245385 = !r245384;
bool r245386 = r245382 || r245385;
double r245387 = y;
double r245388 = 2.0;
double r245389 = pow(r245380, r245388);
double r245390 = r245387 / r245389;
double r245391 = 4.16438922228;
double r245392 = r245391 * r245380;
double r245393 = r245390 + r245392;
double r245394 = 110.1139242984811;
double r245395 = r245393 - r245394;
double r245396 = 2.0;
double r245397 = r245380 - r245396;
double r245398 = r245380 * r245391;
double r245399 = 78.6994924154;
double r245400 = r245398 + r245399;
double r245401 = r245400 * r245380;
double r245402 = 137.519416416;
double r245403 = r245401 + r245402;
double r245404 = r245403 * r245380;
double r245405 = r245404 + r245387;
double r245406 = r245405 * r245380;
double r245407 = z;
double r245408 = r245406 + r245407;
double r245409 = 43.3400022514;
double r245410 = r245380 + r245409;
double r245411 = r245410 * r245380;
double r245412 = 263.505074721;
double r245413 = r245411 + r245412;
double r245414 = r245413 * r245380;
double r245415 = 313.399215894;
double r245416 = r245414 + r245415;
double r245417 = r245416 * r245380;
double r245418 = 47.066876606;
double r245419 = r245417 + r245418;
double r245420 = r245408 / r245419;
double r245421 = r245397 * r245420;
double r245422 = r245386 ? r245395 : r245421;
return r245422;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 26.8 |
|---|---|
| Target | 0.5 |
| Herbie | 0.9 |
if x < -1.91708479608909e+18 or 1.2893714819382387e+39 < x Initial program 57.9
Taylor expanded around inf 1.7
if -1.91708479608909e+18 < x < 1.2893714819382387e+39Initial program 0.7
rmApplied *-un-lft-identity0.7
Applied times-frac0.3
Simplified0.3
Final simplification0.9
herbie shell --seed 1978988140
(FPCore (x y z)
:name "Numeric.SpecFunctions:logGamma from math-functions-0.1.5.2, C"
:precision binary64
:herbie-target
(if (< x -3.3261287258700048e62) (- (+ (/ y (* x x)) (* 4.16438922227999964 x)) 110.11392429848109) (if (< x 9.4299917145546727e55) (* (/ (- x 2) 1) (/ (+ (* (+ (* (+ (* (+ (* x 4.16438922227999964) 78.6994924154000017) x) 137.51941641600001) x) y) x) z) (+ (* (+ (+ (* 263.50507472100003 x) (+ (* 43.3400022514000014 (* x x)) (* x (* x x)))) 313.399215894) x) 47.066876606000001))) (- (+ (/ y (* x x)) (* 4.16438922227999964 x)) 110.11392429848109)))
(/ (* (- x 2) (+ (* (+ (* (+ (* (+ (* x 4.16438922227999964) 78.6994924154000017) x) 137.51941641600001) x) y) x) z)) (+ (* (+ (* (+ (* (+ x 43.3400022514000014) x) 263.50507472100003) x) 313.399215894) x) 47.066876606000001)))