\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.9999999999998099298181841732002794742584 + \frac{676.5203681218850988443591631948947906494}{\left(z - 1\right) + 1}\right) + \frac{-1259.139216722402807135949842631816864014}{\left(z - 1\right) + 2}\right) + \frac{771.3234287776531346025876700878143310547}{\left(z - 1\right) + 3}\right) + \frac{-176.6150291621405870046146446838974952698}{\left(z - 1\right) + 4}\right) + \frac{12.50734327868690520801919774385169148445}{\left(z - 1\right) + 5}\right) + \frac{-0.1385710952657201178173096423051902092993}{\left(z - 1\right) + 6}\right) + \frac{9.984369578019571583242346146658263705831 \cdot 10^{-6}}{\left(z - 1\right) + 7}\right) + \frac{1.505632735149311617592788074479481785772 \cdot 10^{-7}}{\left(z - 1\right) + 8}\right)338.2601840609425494221795815974473953247 \cdot \left({\left(\frac{1}{{6.5}^{1}}\right)}^{0.5} \cdot \left(\frac{{\left(\log 6.5\right)}^{2} \cdot \left(z \cdot \sqrt{2}\right)}{e^{6.5}} \cdot \sqrt{\pi}\right)\right) + \left(\left(2581.191799681222164508653804659843444824 \cdot \left(\frac{\sqrt{2} \cdot z}{e^{6.5}} \cdot \left({\left(\frac{1}{{6.5}^{1}}\right)}^{0.5} \cdot \sqrt{\pi}\right)\right) + \left(676.5203681218850988443591631948947906494 \cdot \left(\frac{\sqrt{2}}{z \cdot e^{6.5}} \cdot e^{\log \left(\sqrt{\pi}\right) - \log \left({6.5}^{1}\right) \cdot 0.5}\right) + \left(676.5203681218850988443591631948947906494 \cdot \left(\sqrt{\pi} \cdot \left(\frac{\log 6.5 \cdot \sqrt{2}}{e^{6.5}} \cdot {\left(\frac{1}{{6.5}^{1}}\right)}^{0.5}\right)\right) + 169.1300920304712747110897907987236976624 \cdot \left(\frac{\sqrt{2} \cdot z}{e^{6.5}} \cdot \left({\left(\frac{1}{{6.5}^{5}}\right)}^{0.5} \cdot \sqrt{\pi}\right)\right)\right)\right)\right) - 1656.810451873720467119710519909858703613 \cdot \left({\left(\frac{1}{{6.5}^{1}}\right)}^{0.5} \cdot \left(\frac{\log 6.5 \cdot \left(z \cdot \sqrt{2}\right)}{e^{6.5}} \cdot \sqrt{\pi}\right) + \sqrt{\pi} \cdot \left(\frac{\sqrt{2}}{e^{6.5}} \cdot {\left(\frac{1}{{6.5}^{1}}\right)}^{0.5}\right)\right)\right)double f(double z) {
double r213333 = atan2(1.0, 0.0);
double r213334 = 2.0;
double r213335 = r213333 * r213334;
double r213336 = sqrt(r213335);
double r213337 = z;
double r213338 = 1.0;
double r213339 = r213337 - r213338;
double r213340 = 7.0;
double r213341 = r213339 + r213340;
double r213342 = 0.5;
double r213343 = r213341 + r213342;
double r213344 = r213339 + r213342;
double r213345 = pow(r213343, r213344);
double r213346 = r213336 * r213345;
double r213347 = -r213343;
double r213348 = exp(r213347);
double r213349 = r213346 * r213348;
double r213350 = 0.9999999999998099;
double r213351 = 676.5203681218851;
double r213352 = r213339 + r213338;
double r213353 = r213351 / r213352;
double r213354 = r213350 + r213353;
double r213355 = -1259.1392167224028;
double r213356 = r213339 + r213334;
double r213357 = r213355 / r213356;
double r213358 = r213354 + r213357;
double r213359 = 771.3234287776531;
double r213360 = 3.0;
double r213361 = r213339 + r213360;
double r213362 = r213359 / r213361;
double r213363 = r213358 + r213362;
double r213364 = -176.6150291621406;
double r213365 = 4.0;
double r213366 = r213339 + r213365;
double r213367 = r213364 / r213366;
double r213368 = r213363 + r213367;
double r213369 = 12.507343278686905;
double r213370 = 5.0;
double r213371 = r213339 + r213370;
double r213372 = r213369 / r213371;
double r213373 = r213368 + r213372;
double r213374 = -0.13857109526572012;
double r213375 = 6.0;
double r213376 = r213339 + r213375;
double r213377 = r213374 / r213376;
double r213378 = r213373 + r213377;
double r213379 = 9.984369578019572e-06;
double r213380 = r213379 / r213341;
double r213381 = r213378 + r213380;
double r213382 = 1.5056327351493116e-07;
double r213383 = 8.0;
double r213384 = r213339 + r213383;
double r213385 = r213382 / r213384;
double r213386 = r213381 + r213385;
double r213387 = r213349 * r213386;
return r213387;
}
double f(double z) {
double r213388 = 338.26018406094255;
double r213389 = 1.0;
double r213390 = 6.5;
double r213391 = 1.0;
double r213392 = pow(r213390, r213391);
double r213393 = r213389 / r213392;
double r213394 = 0.5;
double r213395 = pow(r213393, r213394);
double r213396 = log(r213390);
double r213397 = 2.0;
double r213398 = pow(r213396, r213397);
double r213399 = z;
double r213400 = 2.0;
double r213401 = sqrt(r213400);
double r213402 = r213399 * r213401;
double r213403 = r213398 * r213402;
double r213404 = exp(r213390);
double r213405 = r213403 / r213404;
double r213406 = atan2(1.0, 0.0);
double r213407 = sqrt(r213406);
double r213408 = r213405 * r213407;
double r213409 = r213395 * r213408;
double r213410 = r213388 * r213409;
double r213411 = 2581.191799681222;
double r213412 = r213401 * r213399;
double r213413 = r213412 / r213404;
double r213414 = r213395 * r213407;
double r213415 = r213413 * r213414;
double r213416 = r213411 * r213415;
double r213417 = 676.5203681218851;
double r213418 = r213399 * r213404;
double r213419 = r213401 / r213418;
double r213420 = log(r213407);
double r213421 = log(r213392);
double r213422 = r213421 * r213394;
double r213423 = r213420 - r213422;
double r213424 = exp(r213423);
double r213425 = r213419 * r213424;
double r213426 = r213417 * r213425;
double r213427 = r213396 * r213401;
double r213428 = r213427 / r213404;
double r213429 = r213428 * r213395;
double r213430 = r213407 * r213429;
double r213431 = r213417 * r213430;
double r213432 = 169.13009203047127;
double r213433 = 5.0;
double r213434 = pow(r213390, r213433);
double r213435 = r213389 / r213434;
double r213436 = pow(r213435, r213394);
double r213437 = r213436 * r213407;
double r213438 = r213413 * r213437;
double r213439 = r213432 * r213438;
double r213440 = r213431 + r213439;
double r213441 = r213426 + r213440;
double r213442 = r213416 + r213441;
double r213443 = 1656.8104518737205;
double r213444 = r213396 * r213402;
double r213445 = r213444 / r213404;
double r213446 = r213445 * r213407;
double r213447 = r213395 * r213446;
double r213448 = r213401 / r213404;
double r213449 = r213448 * r213395;
double r213450 = r213407 * r213449;
double r213451 = r213447 + r213450;
double r213452 = r213443 * r213451;
double r213453 = r213442 - r213452;
double r213454 = r213410 + r213453;
return r213454;
}



Bits error versus z
Results
Initial program 61.8
Simplified1.3
Taylor expanded around 0 1.5
Simplified1.5
rmApplied add-exp-log1.5
Applied add-exp-log1.5
Applied pow-exp1.5
Applied rec-exp1.5
Applied pow-exp1.5
Applied prod-exp1.1
Simplified1.1
Final simplification1.1
herbie shell --seed 2019208
(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.99999999999980993 (/ 676.520368121885099 (+ (- z 1) 1))) (/ -1259.13921672240281 (+ (- z 1) 2))) (/ 771.32342877765313 (+ (- z 1) 3))) (/ -176.615029162140587 (+ (- z 1) 4))) (/ 12.5073432786869052 (+ (- z 1) 5))) (/ -0.138571095265720118 (+ (- z 1) 6))) (/ 9.98436957801957158e-6 (+ (- z 1) 7))) (/ 1.50563273514931162e-7 (+ (- z 1) 8)))))