1 2 /* @(#)w_gamma.c 1.3 95/01/18 */ 3 /* 4 * ==================================================== 5 * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. 6 * 7 * Developed at SunSoft, a Sun Microsystems, Inc. business. 8 * Permission to use, copy, modify, and distribute this 9 * software is freely granted, provided that this notice 10 * is preserved. 11 * ==================================================== 12 * 13 */ 14 15 /* double ieee_gamma(double x) 16 * Return the logarithm of the Gamma function of x. 17 * 18 * Method: call gamma_r 19 */ 20 21 #include "fdlibm.h" 22 23 extern int signgam; 24 25 #ifdef __STDC__ ieee_gamma(double x)26 double ieee_gamma(double x) 27 #else 28 double ieee_gamma(x) 29 double x; 30 #endif 31 { 32 #ifdef _IEEE_LIBM 33 return __ieee754_gamma_r(x,&signgam); 34 #else 35 double y; 36 y = __ieee754_gamma_r(x,&signgam); 37 if(_LIB_VERSION == _IEEE_) return y; 38 if(!ieee_finite(y)&&ieee_finite(x)) { 39 if(ieee_floor(x)==x&&x<=0.0) 40 return __kernel_standard(x,x,41); /* gamma pole */ 41 else 42 return __kernel_standard(x,x,40); /* gamma overflow */ 43 } else 44 return y; 45 #endif 46 } 47