blob: 6c09dd4e5bfafa4e9f5af03d2a2aec75590df3e6 [file] [log] [blame]
The Android Open Source Projectb07e1d92009-03-03 19:29:30 -08001
2/* @(#)w_lgamma.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_lgamma(double x)
16 * Return the logarithm of the Gamma function of x.
17 *
18 * Method: call __ieee754_lgamma_r
19 */
20
21#include "fdlibm.h"
22
23extern int signgam;
24
25#ifdef __STDC__
26 double ieee_lgamma(double x)
27#else
28 double ieee_lgamma(x)
29 double x;
30#endif
31{
32#ifdef _IEEE_LIBM
33 return __ieee754_lgamma_r(x,&signgam);
34#else
35 double y;
36 y = __ieee754_lgamma_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,15); /* lgamma pole */
41 else
42 return __kernel_standard(x,x,14); /* lgamma overflow */
43 } else
44 return y;
45#endif
46}