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