| Line |   | 
|---|
| 1 |  | 
|---|
| 2 | /* @(#)w_lgamma.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 |  | 
|---|
| 15 | /* double lgamma(double x) | 
|---|
| 16 |  * Return the logarithm of the Gamma function of x. | 
|---|
| 17 |  * | 
|---|
| 18 |  * Method: call __ieee754_lgamma_r | 
|---|
| 19 |  */ | 
|---|
| 20 |  | 
|---|
| 21 | #include <libm/fdlibm.h> | 
|---|
| 22 |  | 
|---|
| 23 | //extern int signgam; | 
|---|
| 24 |  | 
|---|
| 25 | #ifdef __STDC__ | 
|---|
| 26 |         double lgamma(double x) | 
|---|
| 27 | #else | 
|---|
| 28 |         double 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(!finite(y)&&finite(x)) { | 
|---|
| 39 |             if(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 | }              | 
|---|
       
      
      Note: See 
TracBrowser
        for help on using the repository browser.