blob: 0e44f024b064b47a0d1869eaffc9232a1141e2a0 [file] [log] [blame]
The Android Open Source Projectb07e1d92009-03-03 19:29:30 -08001
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
23extern int signgam;
24
25#ifdef __STDC__
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}