\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(\frac{1}{e^{\left(\left(1 - z\right) - -6\right) + 0.5}} \cdot \left(\left(\left(\frac{1.5056327351493116 \cdot 10^{-07}}{9 - \left(1 + z\right)} + \frac{9.984369578019572 \cdot 10^{-06}}{\left(1 - z\right) - -6}\right) + \left(\frac{12.507343278686905}{6 - \left(1 + z\right)} + \frac{-0.13857109526572012}{7 - \left(1 + z\right)}\right)\right) + \left(\left(\mathsf{fma}\left(-1259.1392167224028, \left(\frac{1}{\left(1 - z\right) + 1}\right), \left(\frac{676.5203681218851}{1 - z} + 0.9999999999998099\right)\right) + \frac{-176.6150291621406}{5 - \left(1 + z\right)}\right) + \frac{771.3234287776531}{\left(1 - z\right) + 2}\right)\right)\right) \cdot \left(\frac{\pi}{\sin \left(\pi \cdot z\right)} \cdot \left({\left(\left(\left(1 - z\right) - -6\right) + 0.5\right)}^{\left(1 - \left(\left(1 + z\right) - 0.5\right)\right)} \cdot \left(\sqrt{\pi} \cdot \sqrt{2}\right)\right)\right)double f(double z) {
double r19058027 = atan2(1.0, 0.0);
double r19058028 = z;
double r19058029 = r19058027 * r19058028;
double r19058030 = sin(r19058029);
double r19058031 = r19058027 / r19058030;
double r19058032 = 2.0;
double r19058033 = r19058027 * r19058032;
double r19058034 = sqrt(r19058033);
double r19058035 = 1.0;
double r19058036 = r19058035 - r19058028;
double r19058037 = r19058036 - r19058035;
double r19058038 = 7.0;
double r19058039 = r19058037 + r19058038;
double r19058040 = 0.5;
double r19058041 = r19058039 + r19058040;
double r19058042 = r19058037 + r19058040;
double r19058043 = pow(r19058041, r19058042);
double r19058044 = r19058034 * r19058043;
double r19058045 = -r19058041;
double r19058046 = exp(r19058045);
double r19058047 = r19058044 * r19058046;
double r19058048 = 0.9999999999998099;
double r19058049 = 676.5203681218851;
double r19058050 = r19058037 + r19058035;
double r19058051 = r19058049 / r19058050;
double r19058052 = r19058048 + r19058051;
double r19058053 = -1259.1392167224028;
double r19058054 = r19058037 + r19058032;
double r19058055 = r19058053 / r19058054;
double r19058056 = r19058052 + r19058055;
double r19058057 = 771.3234287776531;
double r19058058 = 3.0;
double r19058059 = r19058037 + r19058058;
double r19058060 = r19058057 / r19058059;
double r19058061 = r19058056 + r19058060;
double r19058062 = -176.6150291621406;
double r19058063 = 4.0;
double r19058064 = r19058037 + r19058063;
double r19058065 = r19058062 / r19058064;
double r19058066 = r19058061 + r19058065;
double r19058067 = 12.507343278686905;
double r19058068 = 5.0;
double r19058069 = r19058037 + r19058068;
double r19058070 = r19058067 / r19058069;
double r19058071 = r19058066 + r19058070;
double r19058072 = -0.13857109526572012;
double r19058073 = 6.0;
double r19058074 = r19058037 + r19058073;
double r19058075 = r19058072 / r19058074;
double r19058076 = r19058071 + r19058075;
double r19058077 = 9.984369578019572e-06;
double r19058078 = r19058077 / r19058039;
double r19058079 = r19058076 + r19058078;
double r19058080 = 1.5056327351493116e-07;
double r19058081 = 8.0;
double r19058082 = r19058037 + r19058081;
double r19058083 = r19058080 / r19058082;
double r19058084 = r19058079 + r19058083;
double r19058085 = r19058047 * r19058084;
double r19058086 = r19058031 * r19058085;
return r19058086;
}
double f(double z) {
double r19058087 = 1.0;
double r19058088 = z;
double r19058089 = r19058087 - r19058088;
double r19058090 = -6.0;
double r19058091 = r19058089 - r19058090;
double r19058092 = 0.5;
double r19058093 = r19058091 + r19058092;
double r19058094 = exp(r19058093);
double r19058095 = r19058087 / r19058094;
double r19058096 = 1.5056327351493116e-07;
double r19058097 = 9.0;
double r19058098 = r19058087 + r19058088;
double r19058099 = r19058097 - r19058098;
double r19058100 = r19058096 / r19058099;
double r19058101 = 9.984369578019572e-06;
double r19058102 = r19058101 / r19058091;
double r19058103 = r19058100 + r19058102;
double r19058104 = 12.507343278686905;
double r19058105 = 6.0;
double r19058106 = r19058105 - r19058098;
double r19058107 = r19058104 / r19058106;
double r19058108 = -0.13857109526572012;
double r19058109 = 7.0;
double r19058110 = r19058109 - r19058098;
double r19058111 = r19058108 / r19058110;
double r19058112 = r19058107 + r19058111;
double r19058113 = r19058103 + r19058112;
double r19058114 = -1259.1392167224028;
double r19058115 = r19058089 + r19058087;
double r19058116 = r19058087 / r19058115;
double r19058117 = 676.5203681218851;
double r19058118 = r19058117 / r19058089;
double r19058119 = 0.9999999999998099;
double r19058120 = r19058118 + r19058119;
double r19058121 = fma(r19058114, r19058116, r19058120);
double r19058122 = -176.6150291621406;
double r19058123 = 5.0;
double r19058124 = r19058123 - r19058098;
double r19058125 = r19058122 / r19058124;
double r19058126 = r19058121 + r19058125;
double r19058127 = 771.3234287776531;
double r19058128 = 2.0;
double r19058129 = r19058089 + r19058128;
double r19058130 = r19058127 / r19058129;
double r19058131 = r19058126 + r19058130;
double r19058132 = r19058113 + r19058131;
double r19058133 = r19058095 * r19058132;
double r19058134 = atan2(1.0, 0.0);
double r19058135 = r19058134 * r19058088;
double r19058136 = sin(r19058135);
double r19058137 = r19058134 / r19058136;
double r19058138 = r19058098 - r19058092;
double r19058139 = r19058087 - r19058138;
double r19058140 = pow(r19058093, r19058139);
double r19058141 = sqrt(r19058134);
double r19058142 = sqrt(r19058128);
double r19058143 = r19058141 * r19058142;
double r19058144 = r19058140 * r19058143;
double r19058145 = r19058137 * r19058144;
double r19058146 = r19058133 * r19058145;
return r19058146;
}



Bits error versus z
Initial program 1.8
Simplified1.2
rmApplied sqrt-prod0.6
rmApplied associate-+l+0.6
rmApplied div-inv0.6
Applied fma-def0.6
Final simplification0.6
herbie shell --seed 2019121 +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))))))