\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.9999999999998099 + \frac{676.5203681218851}{\left(z - 1\right) + 1}\right) + \frac{-1259.1392167224028}{\left(z - 1\right) + 2}\right) + \frac{771.3234287776531}{\left(z - 1\right) + 3}\right) + \frac{-176.6150291621406}{\left(z - 1\right) + 4}\right) + \frac{12.507343278686905}{\left(z - 1\right) + 5}\right) + \frac{-0.13857109526572012}{\left(z - 1\right) + 6}\right) + \frac{9.984369578019572 \cdot 10^{-06}}{\left(z - 1\right) + 7}\right) + \frac{1.5056327351493116 \cdot 10^{-07}}{\left(z - 1\right) + 8}\right)\mathsf{fma}\left(676.5203681218851, \frac{\log 6.5 \cdot \sqrt{2}}{e^{6.5}} \cdot \left({\left(\frac{1}{{6.5}^{1.0}}\right)}^{0.5} \cdot \sqrt{\pi}\right), \mathsf{fma}\left(338.26018406094255, \left({\left(\frac{1}{{6.5}^{1.0}}\right)}^{0.5} \cdot \sqrt{\pi}\right) \cdot \frac{\sqrt{2} \cdot \left(z \cdot \left(\log 6.5 \cdot \log 6.5\right)\right)}{e^{6.5}}, \mathsf{fma}\left(169.13009203047127, \frac{z \cdot \sqrt{2}}{e^{6.5}} \cdot \left(\sqrt{\pi} \cdot {\left(\frac{1}{{6.5}^{5.0}}\right)}^{0.5}\right), \mathsf{fma}\left(2581.191799681222, \left({\left(\frac{1}{{6.5}^{1.0}}\right)}^{0.5} \cdot \sqrt{\pi}\right) \cdot \frac{z \cdot \sqrt{2}}{e^{6.5}}, 676.5203681218851 \cdot \left(\left({\left(\frac{1}{{6.5}^{1.0}}\right)}^{0.5} \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\sqrt{\pi}\right)\right)\right) \cdot \frac{\sqrt{2}}{e^{6.5} \cdot z}\right)\right)\right)\right)\right) - \mathsf{fma}\left(1656.8104518737205, \frac{\sqrt{2} \cdot \left(\log 6.5 \cdot z\right)}{e^{6.5}} \cdot \left({\left(\frac{1}{{6.5}^{1.0}}\right)}^{0.5} \cdot \sqrt{\pi}\right), 1656.8104518737205 \cdot \left(\left({\left(\frac{1}{{6.5}^{1.0}}\right)}^{0.5} \cdot \sqrt{\pi}\right) \cdot \frac{\sqrt{2}}{e^{6.5}}\right)\right)double f(double z) {
double r4337639 = atan2(1.0, 0.0);
double r4337640 = 2.0;
double r4337641 = r4337639 * r4337640;
double r4337642 = sqrt(r4337641);
double r4337643 = z;
double r4337644 = 1.0;
double r4337645 = r4337643 - r4337644;
double r4337646 = 7.0;
double r4337647 = r4337645 + r4337646;
double r4337648 = 0.5;
double r4337649 = r4337647 + r4337648;
double r4337650 = r4337645 + r4337648;
double r4337651 = pow(r4337649, r4337650);
double r4337652 = r4337642 * r4337651;
double r4337653 = -r4337649;
double r4337654 = exp(r4337653);
double r4337655 = r4337652 * r4337654;
double r4337656 = 0.9999999999998099;
double r4337657 = 676.5203681218851;
double r4337658 = r4337645 + r4337644;
double r4337659 = r4337657 / r4337658;
double r4337660 = r4337656 + r4337659;
double r4337661 = -1259.1392167224028;
double r4337662 = r4337645 + r4337640;
double r4337663 = r4337661 / r4337662;
double r4337664 = r4337660 + r4337663;
double r4337665 = 771.3234287776531;
double r4337666 = 3.0;
double r4337667 = r4337645 + r4337666;
double r4337668 = r4337665 / r4337667;
double r4337669 = r4337664 + r4337668;
double r4337670 = -176.6150291621406;
double r4337671 = 4.0;
double r4337672 = r4337645 + r4337671;
double r4337673 = r4337670 / r4337672;
double r4337674 = r4337669 + r4337673;
double r4337675 = 12.507343278686905;
double r4337676 = 5.0;
double r4337677 = r4337645 + r4337676;
double r4337678 = r4337675 / r4337677;
double r4337679 = r4337674 + r4337678;
double r4337680 = -0.13857109526572012;
double r4337681 = 6.0;
double r4337682 = r4337645 + r4337681;
double r4337683 = r4337680 / r4337682;
double r4337684 = r4337679 + r4337683;
double r4337685 = 9.984369578019572e-06;
double r4337686 = r4337685 / r4337647;
double r4337687 = r4337684 + r4337686;
double r4337688 = 1.5056327351493116e-07;
double r4337689 = 8.0;
double r4337690 = r4337645 + r4337689;
double r4337691 = r4337688 / r4337690;
double r4337692 = r4337687 + r4337691;
double r4337693 = r4337655 * r4337692;
return r4337693;
}
double f(double z) {
double r4337694 = 676.5203681218851;
double r4337695 = 6.5;
double r4337696 = log(r4337695);
double r4337697 = 2.0;
double r4337698 = sqrt(r4337697);
double r4337699 = r4337696 * r4337698;
double r4337700 = exp(r4337695);
double r4337701 = r4337699 / r4337700;
double r4337702 = 1.0;
double r4337703 = 1.0;
double r4337704 = pow(r4337695, r4337703);
double r4337705 = r4337702 / r4337704;
double r4337706 = 0.5;
double r4337707 = pow(r4337705, r4337706);
double r4337708 = atan2(1.0, 0.0);
double r4337709 = sqrt(r4337708);
double r4337710 = r4337707 * r4337709;
double r4337711 = r4337701 * r4337710;
double r4337712 = 338.26018406094255;
double r4337713 = z;
double r4337714 = r4337696 * r4337696;
double r4337715 = r4337713 * r4337714;
double r4337716 = r4337698 * r4337715;
double r4337717 = r4337716 / r4337700;
double r4337718 = r4337710 * r4337717;
double r4337719 = 169.13009203047127;
double r4337720 = r4337713 * r4337698;
double r4337721 = r4337720 / r4337700;
double r4337722 = 5.0;
double r4337723 = pow(r4337695, r4337722);
double r4337724 = r4337702 / r4337723;
double r4337725 = pow(r4337724, r4337706);
double r4337726 = r4337709 * r4337725;
double r4337727 = r4337721 * r4337726;
double r4337728 = 2581.191799681222;
double r4337729 = r4337710 * r4337721;
double r4337730 = log1p(r4337709);
double r4337731 = expm1(r4337730);
double r4337732 = r4337707 * r4337731;
double r4337733 = r4337700 * r4337713;
double r4337734 = r4337698 / r4337733;
double r4337735 = r4337732 * r4337734;
double r4337736 = r4337694 * r4337735;
double r4337737 = fma(r4337728, r4337729, r4337736);
double r4337738 = fma(r4337719, r4337727, r4337737);
double r4337739 = fma(r4337712, r4337718, r4337738);
double r4337740 = fma(r4337694, r4337711, r4337739);
double r4337741 = 1656.8104518737205;
double r4337742 = r4337696 * r4337713;
double r4337743 = r4337698 * r4337742;
double r4337744 = r4337743 / r4337700;
double r4337745 = r4337744 * r4337710;
double r4337746 = r4337698 / r4337700;
double r4337747 = r4337710 * r4337746;
double r4337748 = r4337741 * r4337747;
double r4337749 = fma(r4337741, r4337745, r4337748);
double r4337750 = r4337740 - r4337749;
return r4337750;
}



Bits error versus z
Initial program 60.0
Simplified1.1
Taylor expanded around 0 1.4
Simplified1.4
rmApplied expm1-log1p-u1.1
Final simplification1.1
herbie shell --seed 2019152 +o rules:numerics
(FPCore (z)
:name "Jmat.Real.gamma, branch z greater than 0.5"
(* (* (* (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)))))