\frac{\pi}{\sin \left(\pi \cdot z\right)} \cdot \left(\left(\left(\sqrt{\pi \cdot 2} \cdot {\left(\left(\left(\left(1 - z\right) - 1\right) + 7\right) + 0.5\right)}^{\left(\left(\left(1 - z\right) - 1\right) + 0.5\right)}\right) \cdot e^{-\left(\left(\left(\left(1 - z\right) - 1\right) + 7\right) + 0.5\right)}\right) \cdot \left(\left(\left(\left(\left(\left(\left(\left(0.99999999999980993 + \frac{676.520368121885099}{\left(\left(1 - z\right) - 1\right) + 1}\right) + \frac{-1259.13921672240281}{\left(\left(1 - z\right) - 1\right) + 2}\right) + \frac{771.32342877765313}{\left(\left(1 - z\right) - 1\right) + 3}\right) + \frac{-176.615029162140587}{\left(\left(1 - z\right) - 1\right) + 4}\right) + \frac{12.5073432786869052}{\left(\left(1 - z\right) - 1\right) + 5}\right) + \frac{-0.138571095265720118}{\left(\left(1 - z\right) - 1\right) + 6}\right) + \frac{9.98436957801957158 \cdot 10^{-6}}{\left(\left(1 - z\right) - 1\right) + 7}\right) + \frac{1.50563273514931162 \cdot 10^{-7}}{\left(\left(1 - z\right) - 1\right) + 8}\right)\right)\frac{\pi}{\sin \left(\pi \cdot z\right)} \cdot \left(\left(\left(\frac{9.98436957801957158 \cdot 10^{-6}}{7 - z} + \frac{1.50563273514931162 \cdot 10^{-7}}{8 - z}\right) + \left(\frac{12.5073432786869052}{5 - z} + \left(\left(\left(\left(\frac{-1259.13921672240281}{2 - z} + \frac{-0.138571095265720118}{6 - z}\right) + \frac{676.520368121885099}{1 - z}\right) + \left(\frac{771.32342877765313}{3 - z} + 0.99999999999980993\right)\right) + \frac{-176.615029162140587}{4 - z}\right)\right)\right) \cdot \left(\sqrt{\pi \cdot 2} \cdot \frac{{\left(\left(0.5 - z\right) + 7\right)}^{0.5} \cdot {\left(\left(0.5 - z\right) + 7\right)}^{\left(-z\right)}}{e^{\left(0.5 - z\right) + 7}}\right)\right)double f(double z) {
double r171308 = atan2(1.0, 0.0);
double r171309 = z;
double r171310 = r171308 * r171309;
double r171311 = sin(r171310);
double r171312 = r171308 / r171311;
double r171313 = 2.0;
double r171314 = r171308 * r171313;
double r171315 = sqrt(r171314);
double r171316 = 1.0;
double r171317 = r171316 - r171309;
double r171318 = r171317 - r171316;
double r171319 = 7.0;
double r171320 = r171318 + r171319;
double r171321 = 0.5;
double r171322 = r171320 + r171321;
double r171323 = r171318 + r171321;
double r171324 = pow(r171322, r171323);
double r171325 = r171315 * r171324;
double r171326 = -r171322;
double r171327 = exp(r171326);
double r171328 = r171325 * r171327;
double r171329 = 0.9999999999998099;
double r171330 = 676.5203681218851;
double r171331 = r171318 + r171316;
double r171332 = r171330 / r171331;
double r171333 = r171329 + r171332;
double r171334 = -1259.1392167224028;
double r171335 = r171318 + r171313;
double r171336 = r171334 / r171335;
double r171337 = r171333 + r171336;
double r171338 = 771.3234287776531;
double r171339 = 3.0;
double r171340 = r171318 + r171339;
double r171341 = r171338 / r171340;
double r171342 = r171337 + r171341;
double r171343 = -176.6150291621406;
double r171344 = 4.0;
double r171345 = r171318 + r171344;
double r171346 = r171343 / r171345;
double r171347 = r171342 + r171346;
double r171348 = 12.507343278686905;
double r171349 = 5.0;
double r171350 = r171318 + r171349;
double r171351 = r171348 / r171350;
double r171352 = r171347 + r171351;
double r171353 = -0.13857109526572012;
double r171354 = 6.0;
double r171355 = r171318 + r171354;
double r171356 = r171353 / r171355;
double r171357 = r171352 + r171356;
double r171358 = 9.984369578019572e-06;
double r171359 = r171358 / r171320;
double r171360 = r171357 + r171359;
double r171361 = 1.5056327351493116e-07;
double r171362 = 8.0;
double r171363 = r171318 + r171362;
double r171364 = r171361 / r171363;
double r171365 = r171360 + r171364;
double r171366 = r171328 * r171365;
double r171367 = r171312 * r171366;
return r171367;
}
double f(double z) {
double r171368 = atan2(1.0, 0.0);
double r171369 = z;
double r171370 = r171368 * r171369;
double r171371 = sin(r171370);
double r171372 = r171368 / r171371;
double r171373 = 9.984369578019572e-06;
double r171374 = 7.0;
double r171375 = r171374 - r171369;
double r171376 = r171373 / r171375;
double r171377 = 1.5056327351493116e-07;
double r171378 = 8.0;
double r171379 = r171378 - r171369;
double r171380 = r171377 / r171379;
double r171381 = r171376 + r171380;
double r171382 = 12.507343278686905;
double r171383 = 5.0;
double r171384 = r171383 - r171369;
double r171385 = r171382 / r171384;
double r171386 = -1259.1392167224028;
double r171387 = 2.0;
double r171388 = r171387 - r171369;
double r171389 = r171386 / r171388;
double r171390 = -0.13857109526572012;
double r171391 = 6.0;
double r171392 = r171391 - r171369;
double r171393 = r171390 / r171392;
double r171394 = r171389 + r171393;
double r171395 = 676.5203681218851;
double r171396 = 1.0;
double r171397 = r171396 - r171369;
double r171398 = r171395 / r171397;
double r171399 = r171394 + r171398;
double r171400 = 771.3234287776531;
double r171401 = 3.0;
double r171402 = r171401 - r171369;
double r171403 = r171400 / r171402;
double r171404 = 0.9999999999998099;
double r171405 = r171403 + r171404;
double r171406 = r171399 + r171405;
double r171407 = -176.6150291621406;
double r171408 = 4.0;
double r171409 = r171408 - r171369;
double r171410 = r171407 / r171409;
double r171411 = r171406 + r171410;
double r171412 = r171385 + r171411;
double r171413 = r171381 + r171412;
double r171414 = r171368 * r171387;
double r171415 = sqrt(r171414);
double r171416 = 0.5;
double r171417 = r171416 - r171369;
double r171418 = r171417 + r171374;
double r171419 = pow(r171418, r171416);
double r171420 = -r171369;
double r171421 = pow(r171418, r171420);
double r171422 = r171419 * r171421;
double r171423 = exp(r171418);
double r171424 = r171422 / r171423;
double r171425 = r171415 * r171424;
double r171426 = r171413 * r171425;
double r171427 = r171372 * r171426;
return r171427;
}



Bits error versus z
Results
Initial program 1.8
Simplified1.9
rmApplied add-sqr-sqrt1.9
Applied unpow-prod-up1.9
Applied times-frac1.1
Simplified1.1
Simplified1.1
rmApplied expm1-log1p-u1.2
Simplified1.2
Simplified1.3
Final simplification1.3
herbie shell --seed 2020045 +o rules:numerics
(FPCore (z)
:name "Jmat.Real.gamma, branch z less than 0.5"
:precision binary64
(* (/ PI (sin (* PI z))) (* (* (* (sqrt (* PI 2)) (pow (+ (+ (- (- 1 z) 1) 7) 0.5) (+ (- (- 1 z) 1) 0.5))) (exp (- (+ (+ (- (- 1 z) 1) 7) 0.5)))) (+ (+ (+ (+ (+ (+ (+ (+ 0.9999999999998099 (/ 676.5203681218851 (+ (- (- 1 z) 1) 1))) (/ -1259.1392167224028 (+ (- (- 1 z) 1) 2))) (/ 771.3234287776531 (+ (- (- 1 z) 1) 3))) (/ -176.6150291621406 (+ (- (- 1 z) 1) 4))) (/ 12.507343278686905 (+ (- (- 1 z) 1) 5))) (/ -0.13857109526572012 (+ (- (- 1 z) 1) 6))) (/ 9.984369578019572e-06 (+ (- (- 1 z) 1) 7))) (/ 1.5056327351493116e-07 (+ (- (- 1 z) 1) 8))))))