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