|
|
HP-UX Reference > Llgamma(3M)HP-UX 11i Version 2: December 2007 Update |
|
NAMElgamma(), lgammaf(), lgammal(), lgammaw(), lgammaq(), lgamma_r(), lgammaf_r(), lgammal_r(), lgammaw_r(), lgammaq_r(), gamma(), gammaf(), gammal(), gammaw(), gammaq(), gamma_r(), gammaf_r(), gammal_r(), gammaw_r(), gammaq_r(), signgam — log gamma functions SYNOPSIS#include <math.h> double lgamma(double x); double lgamma_r(double x, int *sign); double gamma(double x); extern int signgam; HP Integrity Server Onlyfloat lgammaf(float x); long double lgammal(long double x); extended lgammaw(extended x); quad lgammaq(quad x); float lgammaf_r(float x, int *sign); long double lgammal_r(long double x, int *sign); extended lgammaw_r(extended x, int *sign); quad lgammaq_r(quad x, int *sign); float gammaf(float x); long double gammal(long double x); extended gammaw(extended x); quad gammaq(quad x); double gamma_r(double x, int *sign); float gammaf_r(float x, int *sign); long double gammal_r(long double x, int *sign); extended gammaw_r(extended x, int *sign); quad gammaq_r(quad x, int *sign); DESCRIPTIONlgamma() and gamma() return log(|Γ(x)|) , where Γ(x) is defined as the integral, as t goes from zero to infinity, of exp(-t) times t to the power (x-1). The sign of Γ(x) is returned in the external integer signgam. The tgamma() function, available on Integrity servers, can be used to calculate Γ(x). Or, the following C program fragment can be used to calculate Γ(x): if ((y = lgamma(x)) > LN_MAXDOUBLE) error(); y = signgam * exp(y); where if y is greater than LN_MAXDOUBLE, as defined in the <values.h> header file, exp() returns a range error. (See exp(3M).) The log gamma function lgamma() is not reentrant because it uses the global variable signgam. The function lgamma_r() is a reentrant version of lgamma() that can be used in multi-threaded applications. The function lgamma_r() stores the sign of Γ(x) in the object pointed to by the second argument sign. The value pointed to by sign is +1 if Γ(x) is positive, -1 if it is negative. The gamma() and gamma_r() functions are functionally equivalent to lgamma() and lgamma_r(). lgammaf(), gammaf(), lgammaf_r(), and gammaf_r() are float versions of lgamma(), gamma(), lgamma_r(), and gamma_r(), respectively; they take a float (first) argument and return a float result. lgammal(), gammal(), lgammal_r(), and gammal_r() are long double versions of lgamma(), gamma(), lgamma_r(), and gamma_r(), respectively; they take a long double (first) argument and return a long double result. lgammaw(), gammaw(), lgammaw_r(), and gammaw_r() are extended versions of lgamma(), gamma(), lgamma_r(), and gamma_r(), respectively; they take an extended (first) argument and return an extended result. lgammaq(), gammaq(), lgammaq_r(), and gammaq_r() are equivalent to lgammal(), gammal(), lgammal_r(), and gammal_r() respectively on HP-UX systems. USAGETo use these functions, compile either with the default -Ae option or with the -Aa and -D_HPUX_SOURCE options. To use (for Integrity servers) lgammaw(), lgammaw_r(), gammaw(), gammaw_r(), lgammaq(), lgammaq_r(), gammaq(), or gammaq_r(), compile also with the -fpwidetypes option. Make sure your program includes <math.h>, and link in the math library by specifying -lm on the compiler or linker command line. For more information, see the HP-UX floating-point guide for HP Integrity servers at the following site: http://www.hp.com/go/fp. RETURN VALUElgamma(1) returns +0. lgamma(2) returns +0. lgamma(x) returns +Inf and raises the divide-by- zero floating-point exception for x a negative integer or zero. lgamma(-Inf) returns +Inf. lgamma(+Inf) returns +Inf. If x is NaN, lgamma() and gamma() return NaN. lgamma() returns infinity (equal to HUGE_VAL) in lieu of a value whose magnitude is too large, and raises the overflow and inexact exceptions. When it raises no other exception, whether lgamma() raises the inexact exception is unspecified. |
|