\left(\left(\sqrt{\pi \cdot 2} \cdot {\left(\left(\left(z - 1\right) + 7\right) + 0.5\right)}^{\left(\left(z - 1\right) + 0.5\right)}\right) \cdot e^{-\left(\left(\left(z - 1\right) + 7\right) + 0.5\right)}\right) \cdot \left(\left(\left(\left(\left(\left(\left(\left(0.99999999999980993 + \frac{676.520368121885099}{\left(z - 1\right) + 1}\right) + \frac{-1259.13921672240281}{\left(z - 1\right) + 2}\right) + \frac{771.32342877765313}{\left(z - 1\right) + 3}\right) + \frac{-176.615029162140587}{\left(z - 1\right) + 4}\right) + \frac{12.5073432786869052}{\left(z - 1\right) + 5}\right) + \frac{-0.138571095265720118}{\left(z - 1\right) + 6}\right) + \frac{9.98436957801957158 \cdot 10^{-6}}{\left(z - 1\right) + 7}\right) + \frac{1.50563273514931162 \cdot 10^{-7}}{\left(z - 1\right) + 8}\right)\frac{\left(\left(\left(\left(\left(\left(\left(\left(0.99999999999980993 + \frac{676.520368121885099}{z - 0}\right) + \frac{-1259.13921672240281}{\left(z - 1\right) + 2}\right) + \frac{771.32342877765313}{\left(z - 1\right) + 3}\right) + \frac{-176.615029162140587}{\left(z - 1\right) + 4}\right) + \frac{12.5073432786869052}{\left(z - 1\right) + 5}\right) + \frac{-0.138571095265720118}{\left(z - 1\right) + 6}\right) + \frac{9.98436957801957158 \cdot 10^{-6}}{\left(z - 1\right) + 7}\right) + \frac{1.50563273514931162 \cdot 10^{-7}}{\left(z - 1\right) + 8}\right) \cdot \left(\sqrt{\pi \cdot 2} \cdot {\left(\left(\left(z - 1\right) + 7\right) + 0.5\right)}^{z}\right)}{{\left(\left(\left(z - 1\right) + 7\right) + 0.5\right)}^{\left(1 - 0.5\right)} \cdot e^{\left(\left(z - 1\right) + 7\right) + 0.5}}double f(double z) {
double r179422 = atan2(1.0, 0.0);
double r179423 = 2.0;
double r179424 = r179422 * r179423;
double r179425 = sqrt(r179424);
double r179426 = z;
double r179427 = 1.0;
double r179428 = r179426 - r179427;
double r179429 = 7.0;
double r179430 = r179428 + r179429;
double r179431 = 0.5;
double r179432 = r179430 + r179431;
double r179433 = r179428 + r179431;
double r179434 = pow(r179432, r179433);
double r179435 = r179425 * r179434;
double r179436 = -r179432;
double r179437 = exp(r179436);
double r179438 = r179435 * r179437;
double r179439 = 0.9999999999998099;
double r179440 = 676.5203681218851;
double r179441 = r179428 + r179427;
double r179442 = r179440 / r179441;
double r179443 = r179439 + r179442;
double r179444 = -1259.1392167224028;
double r179445 = r179428 + r179423;
double r179446 = r179444 / r179445;
double r179447 = r179443 + r179446;
double r179448 = 771.3234287776531;
double r179449 = 3.0;
double r179450 = r179428 + r179449;
double r179451 = r179448 / r179450;
double r179452 = r179447 + r179451;
double r179453 = -176.6150291621406;
double r179454 = 4.0;
double r179455 = r179428 + r179454;
double r179456 = r179453 / r179455;
double r179457 = r179452 + r179456;
double r179458 = 12.507343278686905;
double r179459 = 5.0;
double r179460 = r179428 + r179459;
double r179461 = r179458 / r179460;
double r179462 = r179457 + r179461;
double r179463 = -0.13857109526572012;
double r179464 = 6.0;
double r179465 = r179428 + r179464;
double r179466 = r179463 / r179465;
double r179467 = r179462 + r179466;
double r179468 = 9.984369578019572e-06;
double r179469 = r179468 / r179430;
double r179470 = r179467 + r179469;
double r179471 = 1.5056327351493116e-07;
double r179472 = 8.0;
double r179473 = r179428 + r179472;
double r179474 = r179471 / r179473;
double r179475 = r179470 + r179474;
double r179476 = r179438 * r179475;
return r179476;
}
double f(double z) {
double r179477 = 0.9999999999998099;
double r179478 = 676.5203681218851;
double r179479 = z;
double r179480 = 0.0;
double r179481 = r179479 - r179480;
double r179482 = r179478 / r179481;
double r179483 = r179477 + r179482;
double r179484 = -1259.1392167224028;
double r179485 = 1.0;
double r179486 = r179479 - r179485;
double r179487 = 2.0;
double r179488 = r179486 + r179487;
double r179489 = r179484 / r179488;
double r179490 = r179483 + r179489;
double r179491 = 771.3234287776531;
double r179492 = 3.0;
double r179493 = r179486 + r179492;
double r179494 = r179491 / r179493;
double r179495 = r179490 + r179494;
double r179496 = -176.6150291621406;
double r179497 = 4.0;
double r179498 = r179486 + r179497;
double r179499 = r179496 / r179498;
double r179500 = r179495 + r179499;
double r179501 = 12.507343278686905;
double r179502 = 5.0;
double r179503 = r179486 + r179502;
double r179504 = r179501 / r179503;
double r179505 = r179500 + r179504;
double r179506 = -0.13857109526572012;
double r179507 = 6.0;
double r179508 = r179486 + r179507;
double r179509 = r179506 / r179508;
double r179510 = r179505 + r179509;
double r179511 = 9.984369578019572e-06;
double r179512 = 7.0;
double r179513 = r179486 + r179512;
double r179514 = r179511 / r179513;
double r179515 = r179510 + r179514;
double r179516 = 1.5056327351493116e-07;
double r179517 = 8.0;
double r179518 = r179486 + r179517;
double r179519 = r179516 / r179518;
double r179520 = r179515 + r179519;
double r179521 = atan2(1.0, 0.0);
double r179522 = r179521 * r179487;
double r179523 = sqrt(r179522);
double r179524 = 0.5;
double r179525 = r179513 + r179524;
double r179526 = pow(r179525, r179479);
double r179527 = r179523 * r179526;
double r179528 = r179520 * r179527;
double r179529 = r179485 - r179524;
double r179530 = pow(r179525, r179529);
double r179531 = exp(r179525);
double r179532 = r179530 * r179531;
double r179533 = r179528 / r179532;
return r179533;
}



Bits error versus z
Results
Initial program 61.5
rmApplied associate-+l-0.9
Simplified0.9
rmApplied exp-neg1.1
Applied associate-+l-1.1
Applied pow-sub1.1
Applied associate-*r/1.1
Applied frac-times0.9
Applied associate-*l/0.9
Simplified0.9
Final simplification0.9
herbie shell --seed 2020057
(FPCore (z)
:name "Jmat.Real.gamma, branch z greater than 0.5"
:precision binary64
(* (* (* (sqrt (* PI 2)) (pow (+ (+ (- z 1) 7) 0.5) (+ (- z 1) 0.5))) (exp (- (+ (+ (- z 1) 7) 0.5)))) (+ (+ (+ (+ (+ (+ (+ (+ 0.9999999999998099 (/ 676.5203681218851 (+ (- z 1) 1))) (/ -1259.1392167224028 (+ (- z 1) 2))) (/ 771.3234287776531 (+ (- z 1) 3))) (/ -176.6150291621406 (+ (- z 1) 4))) (/ 12.507343278686905 (+ (- z 1) 5))) (/ -0.13857109526572012 (+ (- z 1) 6))) (/ 9.984369578019572e-06 (+ (- z 1) 7))) (/ 1.5056327351493116e-07 (+ (- z 1) 8)))))