LGAMMA - Linux手册页
Linux程序员手册 第3部分
更新日期: 2017-09-15
名称
lgamma,lgammaf,lgammal,lgamma_r,lgammaf_r,lgammal_r,signgam-对数伽马函数
语法
#include <math.h> double lgamma(double x); float lgammaf(float x); long double lgammal(long double x); double lgamma_r(double x, int *signp); float lgammaf_r(float x, int *signp); long double lgammal_r(long double x, int *signp); extern int signgam;
与-lm链接。
glibc的功能测试宏要求(请参阅feature_test_macros(7)):
lgamma():
- _ISOC99_SOURCE || _POSIX_C_SOURCE>= 200112L || _XOPEN_SOURCE || / *自glibc 2.19起:* / -_DEFAULT_SOURCE || / * Glibc版本
lgammal():
- _ISOC99_SOURCE || _POSIX_C_SOURCE>= 200112L || / *自glibc 2.19起:* / -_DEFAULT_SOURCE || / * Glibc版本
lgammaf_r(),
lgammal_r():
- / *自glibc 2.19以来:* / _DEFAULT_SOURCE || / * Glibc版本
- _XOPEN_SOURCE || / *自glibc 2.19起:* / -_DEFAULT_SOURCE || / * Glibc版本
说明
有关Gamma函数的定义,请参见tgamma(3)。
lgamma(),lgammaf()和lgammal()函数返回Gamma函数绝对值的自然对数。 Gamma函数的符号在中声明的外部整数signgam中返回。当Gamma函数为正时为1或为零,为负值时为-1。
由于使用恒定位置的signgam不是线程安全的,因此引入了函数lgamma_r(),lgammaf_r()和lgammal_r();他们通过参数signp返回符号。
返回值
成功执行后,这些函数将返回Gamma(x)的自然对数。
如果x是NaN,则返回NaN。
如果x为1或2,则返回+0。
如果x为正无穷大或负无穷大,则返回正无穷大。
如果x是一个非正整数,则会发生极坐标错误,并且这些函数分别返回+ HUGE_VAL,+ HUGE_VALF或+ HUGE_VALL。
如果结果溢出,则会发生范围错误,并且函数将分别以正确的数学符号返回HUGE_VAL,HUGE_VALF或HUGE_VALL。
错误说明
有关如何确定调用这些函数时是否发生错误的信息,请参见math_error(7)。
可能会发生以下错误:
- Pole error: xis a nonpositive integer
- errno设置为ERANGE(但请参阅BUGS)。产生了除零浮点异常(FE_DIVBYZERO)。
- Range error: result overflow
- errno设置为ERANGE。引发了一个溢出浮点异常(FE_OVERFLOW)。
遵循规范
lgamma()函数在C99,POSIX.1-2001和POSIX.1-2008中指定。 signgam在POSIX.1-2001和POSIX.1-2008中指定,但在C99中未指定。 lgamma_r()函数是非标准函数,但在其他几个系统上也存在。
BUGS
在glibc 2.9和更早版本中,当发生极点错误时,errno设置为EDOM;而不是POSIX授权的ERANGE。从2.10版开始,glibc做正确的事情。
另外参见
tgamma(3)
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。