std::lgamma
STD::IGamma
Defined in header | | |
---|---|---|
float lgamma( float arg | (1) | (since C++11) |
double lgamma( double arg | (2) | (since C++11) |
long double lgamma( long double arg | (3) | (since C++11) |
double lgamma( Integral arg | (4) | (since C++11) |
值的绝对值的自然对数。伽马函数成arg
...
4%29一组过载或接受任意参数的函数模板积分型等于2%29%28double
29%。
参数
arg | - | value of a floating-point or Integral type |
---|
返回值
如果没有错误发生,则伽玛函数的对数值arg
,那是原木
E∞
0_t_Arg-1
e
-tdT型
,被归还。
如果发生极差,+HUGE_VAL
,,,+HUGE_VALF
,或+HUGE_VALL
会被归还。
如果溢出导致范围错误,±HUGE_VAL
,,,±HUGE_VALF
,或±HUGE_VALL
会被归还。
错误处理
错误按数学[医]错误处理...
如果arg
为零或小于零的整数,则可能发生极差。
如果实现支持ieee浮点算法%28IEC 60559%29,
- 如果参数为1,则返回+0。
- 如果参数为2,则返回+0。
- 如果参数为±0,则返回+∞
FE_DIVBYZERO
提出来
- 如果参数是负整数,则返回+∞,
FE_DIVBYZERO
提出来
- 如果参数为±∞,则返回+∞。
- 如果参数为nan,则返回nan。
注记
如果arg
是一个自然数,std::lgamma(arg)
的阶乘的对数。arg-1
...
大POSIX版本不是线程安全的:函数的每次执行都存储伽马函数的符号。arg
在静态外部变量中signgam
.一些实现提供lgamma_r
作为第二个参数,它将指向用户为singgam提供的存储的指针作为第二个参数,并且是线程安全的。
有一个非标准函数名为gamma
在不同的实现中,但其定义是不一致的。例如,glibc和4.2BSD版本的gamma
执行lgamma
,但4.4BSD版本的gamma
执行tgamma
...
例
二次
#include <iostream>
#include <cmath>
#include <cerrno>
#include <cstring>
#include <cfenv>
#pragma STDC FENV_ACCESS ON
const double pi = std::acos(-1
int main()
{
std::cout << "lgamma(10) = " << std::lgamma(10)
<< ", log(9!) = " << std::log(2*3*4*5*6*7*8*9) << '\n'
<< "lgamma(0.5) = " << std::lgamma(0.5)
<< " , log(sqrt(pi)) = " << std::log(std::sqrt(pi)) << '\n';
// special values
std::cout << "lgamma(1) = " << std::lgamma(1) << '\n'
<< "lgamma(+Inf) = " << std::lgamma(INFINITY) << '\n';
// error handling
errno=0; std::feclearexcept(FE_ALL_EXCEPT
std::cout << "lgamma(0) = " << std::lgamma(0) << '\n';
if(errno == ERANGE)
std::cout << " errno == ERANGE: " << std::strerror(errno) << '\n';
if(std::fetestexcept(FE_DIVBYZERO))
std::cout << " FE_DIVBYZERO raised\n";
}
二次
产出:
二次
lgamma(10) = 12.8018, log(9!) = 12.8018
lgamma(0.5) = 0.572365 , log(sqrt(pi)) = 0.572365
lgamma(1) = 0
lgamma(+Inf) = inf
lgamma(0) = inf
errno == ERANGE: Numerical result out of range
FE_DIVBYZERO raised
二次
另见
tgamma (C++11) | gamma function (function) |
---|
c关于伽马射线的文件
外部链接
“日志伽玛函数”来自MathWorld的一个Wolfram Web资源。
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。