home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: Science / Science.zip / gmt_os2.zip / src / math / w_gamma.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-03-16  |  1.1 KB  |  47 lines

  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 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__
  26.     double gamma(double x)
  27. #else
  28.     double 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(!finite(y)&&finite(x)) {
  39.             if(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.