Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */
  2. /* @(#)w_gamma.c 5.1 93/09/24 */
  3. /*
  4.  * ====================================================
  5.  * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
  6.  *
  7.  * Developed at SunPro, 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. #if defined(LIBM_SCCS) && !defined(lint)
  15. static char rcsid[] = "$Id: w_gamma.c,v 1.4 1994/08/10 20:34:09 jtc Exp $";
  16. #endif
  17.  
  18. /* double gamma(double x)
  19.  * Return the logarithm of the Gamma function of x.
  20.  *
  21.  * Method: call gamma_r
  22.  */
  23.  
  24. #include "math.h"
  25. #include "math_private.h"
  26.  
  27. extern int signgam;
  28.  
  29. #ifdef __STDC__
  30.         double gamma(double x)
  31. #else
  32.         double gamma(x)
  33.         double x;
  34. #endif
  35. {
  36. #ifdef _IEEE_LIBM
  37.         return __ieee754_gamma_r(x,&signgam);
  38. #else
  39.         double y;
  40.         y = __ieee754_gamma_r(x,&signgam);
  41.         if(_LIB_VERSION == _IEEE_) return y;
  42.         if(!finite(y)&&finite(x)) {
  43.             if(floor(x)==x&&x<=0.0)
  44.                 return __kernel_standard(x,x,41); /* gamma pole */
  45.             else
  46.                 return __kernel_standard(x,x,40); /* gamma overflow */
  47.         } else
  48.             return y;
  49. #endif
  50. }            
  51.