?
このドキュメントでは、 php中國語ネットマニュアル リリース
在頭文件<math.h>中定義 | ||
---|---|---|
float tgammaf( float arg ); | (1) | (since C99) |
double tgamma( double arg ); | (2) | (since C99) |
long double tgammal( long double arg ); | (3) | (since C99) |
Defined in header <tgmath.h> | ||
#define tgamma( arg ) | (4) | (since C99) |
1-3)計算arg的伽瑪函數(shù)。
4)類型通用宏:如果arg的類型為long double,則調(diào)用tgammal。 否則,如果arg具有整數(shù)類型或類型double,則調(diào)用tgamma。 否則,調(diào)用tgammaf。
ARG | - | 浮點值 |
---|
如果沒有發(fā)生錯誤,則arg的伽馬函數(shù)的值即∫∞
0_t_arg-1
返回 e -td t。
如果發(fā)生域錯誤,則返回實現(xiàn)定義的值(NaN,如果支持)。
如果發(fā)生極點錯誤,則返回±HUGE_VAL,±HUGE_VALF或±HUGE_VALL。
如果發(fā)生由溢出引起的范圍錯誤,則返回±HUGE_VAL,±HUGE_VALF或±HUGE_VALL。
如果發(fā)生由于下溢導(dǎo)致的范圍錯誤,則返回正確的值(舍入后)。
按照math_errhandling中的指定報告錯誤。
如果arg
是零或者是小于零的整數(shù),則可能發(fā)生極點錯誤或域錯誤。
如果實現(xiàn)支持IEEE浮點運算(IEC 60559),
如果參數(shù)為±0,則返回±∞并引發(fā)FE_DIVBYZERO
如果參數(shù)是一個負整數(shù),則返回NaN并引發(fā)FE_INVALID
如果參數(shù)是-∞,則返回NaN并引發(fā)FE_INVALID
如果參數(shù)是+∞,則返回+∞。
如果參數(shù)是NaN,則返回NaN
如果arg是自然數(shù),則tgamma(arg)是arg-1的階乘。 如果參數(shù)是一個足夠小的整數(shù),許多實現(xiàn)計算確切的整數(shù)域因子。
對于兼容IEEE的類型,如果0 <x <1 / DBL_MAX或者x> 171.7,則發(fā)生溢出。
如果參數(shù)為零,則POSIX要求出現(xiàn)極點錯誤,但當參數(shù)為負整數(shù)時會出現(xiàn)域錯誤。它還規(guī)定將來,域誤差可能被負整數(shù)參數(shù)的極點誤差所替代(在這種情況下,這些情況下的返回值將從NaN變?yōu)椤馈蓿?/p>
在各種實現(xiàn)中有一個名為gamma的非標準函數(shù),但其定義不一致。 例如,gamma的glibc和4.2BSD版本執(zhí)行l(wèi)gamma,但4.4BSD版本的gamma執(zhí)行tgamma。
#include <stdio.h>#include <math.h>#include <float.h>#include <errno.h>#include <fenv.h>#pragma STDC FENV_ACCESS ON int main(void){ printf("tgamma(10) = %f, 9!=%f\n", tgamma(10), 2*3*4*5*6*7*8*9.0); printf("tgamma(0.5) = %f, sqrt(pi) = %f\n", sqrt(acos(-1)), tgamma(0.5)); // special values printf("tgamma(+Inf) = %f\n", tgamma(INFINITY)); //error handling errno = 0; feclearexcept(FE_ALL_EXCEPT); printf("tgamma(-1) = %f\n", tgamma(-1)); if(errno == ERANGE) perror(" errno == ERANGE"); else if(errno == EDOM) perror(" errno == EDOM"); if(fetestexcept(FE_DIVBYZERO)) puts(" FE_DIVBYZERO raised"); else if(fetestexcept(FE_INVALID)) puts(" FE_INVALID raised");}
可能的輸出:
tgamma(10) = 362880.000000, 9!=362880.000000tgamma(0.5) = 1.772454, sqrt(pi) = 1.772454tgamma(+Inf) = inftgamma(-1) = nan errno == EDOM: Numerical argument out of domain FE_INVALID raised
C11標準(ISO / IEC 9899:2011):
7.12.8.4 tgamma函數(shù)(p:250)
7.25類型通用數(shù)學(xué)<tgmath.h>(p:373-375)
F.10.5.4 tgamma函數(shù)(p:525)
C99標準(ISO / IEC 9899:1999):
7.12.8.4 tgamma函數(shù)(p:231)
7.22類型通用數(shù)學(xué)<tgmath.h>(p:335-337)
F.9.5.4 tgamma函數(shù)(p:462)
lgammalgammaflgammal(C99)(C99)(C99) | 計算伽瑪函數(shù)(函數(shù))的自然(基-e)對數(shù), |
---|