\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.9999999999998099 + \frac{676.5203681218851}{\left(\left(1 - z\right) - 1\right) + 1}\right) + \frac{-1259.1392167224028}{\left(\left(1 - z\right) - 1\right) + 2}\right) + \frac{771.3234287776531}{\left(\left(1 - z\right) - 1\right) + 3}\right) + \frac{-176.6150291621406}{\left(\left(1 - z\right) - 1\right) + 4}\right) + \frac{12.507343278686905}{\left(\left(1 - z\right) - 1\right) + 5}\right) + \frac{-0.13857109526572012}{\left(\left(1 - z\right) - 1\right) + 6}\right) + \frac{9.984369578019572 \cdot 10^{-06}}{\left(\left(1 - z\right) - 1\right) + 7}\right) + \frac{1.5056327351493116 \cdot 10^{-07}}{\left(\left(1 - z\right) - 1\right) + 8}\right)\right)\left(\left(e^{z - 0.5} \cdot \frac{{\left(\left(7 - z\right) + 0.5\right)}^{\left(\left(1 - z\right) - \left(1 - 0.5\right)\right)}}{e^{7}}\right) \cdot \frac{\sqrt{\pi} \cdot \left(\sqrt{2 \cdot \pi} \cdot \sqrt{\pi}\right)}{\sin \left(\pi \cdot z\right)}\right) \cdot \left(\left(\frac{-0.13857109526572012}{6 - z} + \frac{9.984369578019572 \cdot 10^{-06}}{7 - z}\right) + \left(\frac{12.507343278686905}{5 - z} + \left(\left(\left(0.9999999999998099 + \frac{-176.6150291621406}{4 - z}\right) + \left(\frac{771.3234287776531}{\left(1 - z\right) + 2} + \left(\frac{676.5203681218851}{1 - z} + \frac{-1259.1392167224028}{2 - z}\right)\right)\right) + \frac{1.5056327351493116 \cdot 10^{-07}}{8 - z}\right)\right)\right)double f(double z) {
double r5168528 = atan2(1.0, 0.0);
double r5168529 = z;
double r5168530 = r5168528 * r5168529;
double r5168531 = sin(r5168530);
double r5168532 = r5168528 / r5168531;
double r5168533 = 2.0;
double r5168534 = r5168528 * r5168533;
double r5168535 = sqrt(r5168534);
double r5168536 = 1.0;
double r5168537 = r5168536 - r5168529;
double r5168538 = r5168537 - r5168536;
double r5168539 = 7.0;
double r5168540 = r5168538 + r5168539;
double r5168541 = 0.5;
double r5168542 = r5168540 + r5168541;
double r5168543 = r5168538 + r5168541;
double r5168544 = pow(r5168542, r5168543);
double r5168545 = r5168535 * r5168544;
double r5168546 = -r5168542;
double r5168547 = exp(r5168546);
double r5168548 = r5168545 * r5168547;
double r5168549 = 0.9999999999998099;
double r5168550 = 676.5203681218851;
double r5168551 = r5168538 + r5168536;
double r5168552 = r5168550 / r5168551;
double r5168553 = r5168549 + r5168552;
double r5168554 = -1259.1392167224028;
double r5168555 = r5168538 + r5168533;
double r5168556 = r5168554 / r5168555;
double r5168557 = r5168553 + r5168556;
double r5168558 = 771.3234287776531;
double r5168559 = 3.0;
double r5168560 = r5168538 + r5168559;
double r5168561 = r5168558 / r5168560;
double r5168562 = r5168557 + r5168561;
double r5168563 = -176.6150291621406;
double r5168564 = 4.0;
double r5168565 = r5168538 + r5168564;
double r5168566 = r5168563 / r5168565;
double r5168567 = r5168562 + r5168566;
double r5168568 = 12.507343278686905;
double r5168569 = 5.0;
double r5168570 = r5168538 + r5168569;
double r5168571 = r5168568 / r5168570;
double r5168572 = r5168567 + r5168571;
double r5168573 = -0.13857109526572012;
double r5168574 = 6.0;
double r5168575 = r5168538 + r5168574;
double r5168576 = r5168573 / r5168575;
double r5168577 = r5168572 + r5168576;
double r5168578 = 9.984369578019572e-06;
double r5168579 = r5168578 / r5168540;
double r5168580 = r5168577 + r5168579;
double r5168581 = 1.5056327351493116e-07;
double r5168582 = 8.0;
double r5168583 = r5168538 + r5168582;
double r5168584 = r5168581 / r5168583;
double r5168585 = r5168580 + r5168584;
double r5168586 = r5168548 * r5168585;
double r5168587 = r5168532 * r5168586;
return r5168587;
}
double f(double z) {
double r5168588 = z;
double r5168589 = 0.5;
double r5168590 = r5168588 - r5168589;
double r5168591 = exp(r5168590);
double r5168592 = 7.0;
double r5168593 = r5168592 - r5168588;
double r5168594 = r5168593 + r5168589;
double r5168595 = 1.0;
double r5168596 = r5168595 - r5168588;
double r5168597 = r5168595 - r5168589;
double r5168598 = r5168596 - r5168597;
double r5168599 = pow(r5168594, r5168598);
double r5168600 = exp(r5168592);
double r5168601 = r5168599 / r5168600;
double r5168602 = r5168591 * r5168601;
double r5168603 = atan2(1.0, 0.0);
double r5168604 = sqrt(r5168603);
double r5168605 = 2.0;
double r5168606 = r5168605 * r5168603;
double r5168607 = sqrt(r5168606);
double r5168608 = r5168607 * r5168604;
double r5168609 = r5168604 * r5168608;
double r5168610 = r5168603 * r5168588;
double r5168611 = sin(r5168610);
double r5168612 = r5168609 / r5168611;
double r5168613 = r5168602 * r5168612;
double r5168614 = -0.13857109526572012;
double r5168615 = 6.0;
double r5168616 = r5168615 - r5168588;
double r5168617 = r5168614 / r5168616;
double r5168618 = 9.984369578019572e-06;
double r5168619 = r5168618 / r5168593;
double r5168620 = r5168617 + r5168619;
double r5168621 = 12.507343278686905;
double r5168622 = 5.0;
double r5168623 = r5168622 - r5168588;
double r5168624 = r5168621 / r5168623;
double r5168625 = 0.9999999999998099;
double r5168626 = -176.6150291621406;
double r5168627 = 4.0;
double r5168628 = r5168627 - r5168588;
double r5168629 = r5168626 / r5168628;
double r5168630 = r5168625 + r5168629;
double r5168631 = 771.3234287776531;
double r5168632 = r5168596 + r5168605;
double r5168633 = r5168631 / r5168632;
double r5168634 = 676.5203681218851;
double r5168635 = r5168634 / r5168596;
double r5168636 = -1259.1392167224028;
double r5168637 = r5168605 - r5168588;
double r5168638 = r5168636 / r5168637;
double r5168639 = r5168635 + r5168638;
double r5168640 = r5168633 + r5168639;
double r5168641 = r5168630 + r5168640;
double r5168642 = 1.5056327351493116e-07;
double r5168643 = 8.0;
double r5168644 = r5168643 - r5168588;
double r5168645 = r5168642 / r5168644;
double r5168646 = r5168641 + r5168645;
double r5168647 = r5168624 + r5168646;
double r5168648 = r5168620 + r5168647;
double r5168649 = r5168613 * r5168648;
return r5168649;
}



Bits error versus z
Results
Initial program 1.8
Simplified0.7
rmApplied associate-*r/0.6
rmApplied associate-+l-0.6
Applied exp-diff0.6
Applied associate-/r/0.6
rmApplied add-sqr-sqrt0.6
Applied associate-*r*0.6
Final simplification0.6
herbie shell --seed 2019146 +o rules:numerics
(FPCore (z)
:name "Jmat.Real.gamma, branch z less than 0.5"
(* (/ 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))))))