std::tgamma
性病::TGamma
Defined in header | | |
---|---|---|
float tgamma( float arg | (1) | (since C++11) |
double tgamma( double arg | (2) | (since C++11) |
long double tgamma( long double arg | (3) | (since C++11) |
double tgamma( Integral arg | (4) | (since C++11) |
1-3%29计算伽马函数成arg
...
4%29一组过载或接受任意参数的函数模板积分型等于2%29%28double
29%。
参数
arg | - | value of a floating-point or Integral type |
---|
返回值
如果没有错误发生,则伽玛函数的值arg
,这就是符∞。
0_t_Arg-1
e
-tdT型
,被归还。
如果发生域错误,则返回支持%29的实现定义值%28 NaN。
如果发生极差,±HUGE_VAL
,,,±HUGE_VALF
,或±HUGE_VALL
会被归还。
如果溢出导致范围错误,±HUGE_VAL
,,,±HUGE_VALF
,或±HUGE_VALL
会被归还。
如果由于下流发生范围错误,则返回舍入%29后的正确值%28。
错误处理
错误按数学[医]错误处理...
如果arg
为零或小于零的整数,可能会出现极差或域错误。
如果实现支持ieee浮点算法%28IEC 60559%29,
- 如果参数为±0,则返回±∞
FE_DIVBYZERO
提出来
- 如果参数是负数,则返回NaN
FE_INVALID
提出来
- 如果参数为-∞,则返回NaN
FE_INVALID
提出来
- 如果参数为+∞,则返回+∞。
- 如果参数为nan,则返回nan。
注记
如果arg
是一个自然数,std::tgamma(arg)
是...的阶乘arg-1
如果参数是足够小的整数,许多实现计算精确的整数域阶乘。
适用于ieee兼容的类型。double,则会发生以下情况:0 < x < 1/DBL_MAX或者如果x > 171.7...
POSIX要求如果参数为零,则会出现极点错误,但当参数为负整数时会发生域错误。它还规定,对于负整数参数%28,域误差可以用极点误差代替,在这种情况下,返回值将从NaN变为±∞%29。
有一个非标准函数名为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
int main()
{
std::cout << "tgamma(10) = " << std::tgamma(10)
<< ", 9! = " << 2*3*4*5*6*7*8*9 << '\n'
<< "tgamma(0.5) = " << std::tgamma(0.5)
<< ", sqrt(pi) = " << std::sqrt(std::acos(-1)) << '\n';
// special values
std::cout << "tgamma(1) = " << std::tgamma(1) << '\n'
<< "tgamma(+Inf) = " << std::tgamma(INFINITY) << '\n';
// error handling
errno=0; std::feclearexcept(FE_ALL_EXCEPT
std::cout << "tgamma(-1) = " << std::tgamma(-1) << '\n';
if(errno == EDOM)
std::cout << " errno == EDOM: " << std::strerror(errno) << '\n';
if(std::fetestexcept(FE_INVALID))
std::cout << " FE_INVALID raised\n";
}
二次
可能的产出:
二次
tgamma(10) = 362880, 9! = 362880
tgamma(0.5) = 1.77245, sqrt(pi) = 1.77245
tgamma(1) = 1
tgamma(+Inf) = inf
tgamma(-1) = nan
errno == EDOM: Numerical argument out of domain
FE_INVALID raised
二次
另见
lgamma (C++11) | natural logarithm of the gamma function (function) |
---|---|
betabetafbetal | beta function (function) |
c t伽马文件
外部链接
“伽玛函数”来自MathWorld的一个Wolfram Web资源。
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。