\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)\frac{{\left(\left(7 - z\right) + 0.5\right)}^{\left(\left(-z\right) + 0.5\right)}}{e^{\left(7 - z\right) + 0.5}} \cdot \left(\left(\left(\left(\frac{12.507343278686905}{\left(6 - z\right) + -1} + \frac{-0.13857109526572012}{6 - z}\right) + \left(\left(\frac{-176.6150291621406}{4 - z} + \left(\left(\frac{771.3234287776531}{\left(1 - z\right) + 2} + 0.9999999999998099\right) + \frac{676.5203681218851}{1 - z}\right)\right) + \frac{-1259.1392167224028}{2 - z}\right)\right) + \left(\frac{9.984369578019572 \cdot 10^{-06}}{7 - z} + \frac{1.5056327351493116 \cdot 10^{-07}}{8 - z}\right)\right) \cdot \left(\frac{\pi}{\sin \left(\pi \cdot z\right)} \cdot \sqrt{2 \cdot \pi}\right)\right)double f(double z) {
double r4527239 = atan2(1.0, 0.0);
double r4527240 = z;
double r4527241 = r4527239 * r4527240;
double r4527242 = sin(r4527241);
double r4527243 = r4527239 / r4527242;
double r4527244 = 2.0;
double r4527245 = r4527239 * r4527244;
double r4527246 = sqrt(r4527245);
double r4527247 = 1.0;
double r4527248 = r4527247 - r4527240;
double r4527249 = r4527248 - r4527247;
double r4527250 = 7.0;
double r4527251 = r4527249 + r4527250;
double r4527252 = 0.5;
double r4527253 = r4527251 + r4527252;
double r4527254 = r4527249 + r4527252;
double r4527255 = pow(r4527253, r4527254);
double r4527256 = r4527246 * r4527255;
double r4527257 = -r4527253;
double r4527258 = exp(r4527257);
double r4527259 = r4527256 * r4527258;
double r4527260 = 0.9999999999998099;
double r4527261 = 676.5203681218851;
double r4527262 = r4527249 + r4527247;
double r4527263 = r4527261 / r4527262;
double r4527264 = r4527260 + r4527263;
double r4527265 = -1259.1392167224028;
double r4527266 = r4527249 + r4527244;
double r4527267 = r4527265 / r4527266;
double r4527268 = r4527264 + r4527267;
double r4527269 = 771.3234287776531;
double r4527270 = 3.0;
double r4527271 = r4527249 + r4527270;
double r4527272 = r4527269 / r4527271;
double r4527273 = r4527268 + r4527272;
double r4527274 = -176.6150291621406;
double r4527275 = 4.0;
double r4527276 = r4527249 + r4527275;
double r4527277 = r4527274 / r4527276;
double r4527278 = r4527273 + r4527277;
double r4527279 = 12.507343278686905;
double r4527280 = 5.0;
double r4527281 = r4527249 + r4527280;
double r4527282 = r4527279 / r4527281;
double r4527283 = r4527278 + r4527282;
double r4527284 = -0.13857109526572012;
double r4527285 = 6.0;
double r4527286 = r4527249 + r4527285;
double r4527287 = r4527284 / r4527286;
double r4527288 = r4527283 + r4527287;
double r4527289 = 9.984369578019572e-06;
double r4527290 = r4527289 / r4527251;
double r4527291 = r4527288 + r4527290;
double r4527292 = 1.5056327351493116e-07;
double r4527293 = 8.0;
double r4527294 = r4527249 + r4527293;
double r4527295 = r4527292 / r4527294;
double r4527296 = r4527291 + r4527295;
double r4527297 = r4527259 * r4527296;
double r4527298 = r4527243 * r4527297;
return r4527298;
}
double f(double z) {
double r4527299 = 7.0;
double r4527300 = z;
double r4527301 = r4527299 - r4527300;
double r4527302 = 0.5;
double r4527303 = r4527301 + r4527302;
double r4527304 = -r4527300;
double r4527305 = r4527304 + r4527302;
double r4527306 = pow(r4527303, r4527305);
double r4527307 = exp(r4527303);
double r4527308 = r4527306 / r4527307;
double r4527309 = 12.507343278686905;
double r4527310 = 6.0;
double r4527311 = r4527310 - r4527300;
double r4527312 = -1.0;
double r4527313 = r4527311 + r4527312;
double r4527314 = r4527309 / r4527313;
double r4527315 = -0.13857109526572012;
double r4527316 = r4527315 / r4527311;
double r4527317 = r4527314 + r4527316;
double r4527318 = -176.6150291621406;
double r4527319 = 4.0;
double r4527320 = r4527319 - r4527300;
double r4527321 = r4527318 / r4527320;
double r4527322 = 771.3234287776531;
double r4527323 = 1.0;
double r4527324 = r4527323 - r4527300;
double r4527325 = 2.0;
double r4527326 = r4527324 + r4527325;
double r4527327 = r4527322 / r4527326;
double r4527328 = 0.9999999999998099;
double r4527329 = r4527327 + r4527328;
double r4527330 = 676.5203681218851;
double r4527331 = r4527330 / r4527324;
double r4527332 = r4527329 + r4527331;
double r4527333 = r4527321 + r4527332;
double r4527334 = -1259.1392167224028;
double r4527335 = r4527325 - r4527300;
double r4527336 = r4527334 / r4527335;
double r4527337 = r4527333 + r4527336;
double r4527338 = r4527317 + r4527337;
double r4527339 = 9.984369578019572e-06;
double r4527340 = r4527339 / r4527301;
double r4527341 = 1.5056327351493116e-07;
double r4527342 = 8.0;
double r4527343 = r4527342 - r4527300;
double r4527344 = r4527341 / r4527343;
double r4527345 = r4527340 + r4527344;
double r4527346 = r4527338 + r4527345;
double r4527347 = atan2(1.0, 0.0);
double r4527348 = r4527347 * r4527300;
double r4527349 = sin(r4527348);
double r4527350 = r4527347 / r4527349;
double r4527351 = r4527325 * r4527347;
double r4527352 = sqrt(r4527351);
double r4527353 = r4527350 * r4527352;
double r4527354 = r4527346 * r4527353;
double r4527355 = r4527308 * r4527354;
return r4527355;
}



Bits error versus z
Results
Initial program 1.8
Simplified2.1
rmApplied associate-+r+1.1
Final simplification1.1
herbie shell --seed 2019139
(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))))))