跳转到内容

gamma, gammaf, lgamma, lgammaf, gamma_r, gammaf_r, lgamma_r, lgammaf_r

#include <math.h>
double gamma(double x);
float gammaf(float x);
double lgamma(double x);
float lgammaf(float x);
double gamma_r(double x, int *signgamp);
float gammaf_r(float x, int *signgamp);
double lgamma_r(double x, int *signgamp);
float lgammaf_r(float x, int *signgamp);
```### 描述
gamma 计算 x 的 gamma 函数的自然对数。gamma 函数 (exp(gamma(x))) 是阶乘的推广,并保留了该属性,因此 gamma 函数本身的结果增长非常快。gamma 被定义为以扩展可表示结果的有效范围。
结果的符号在全局变量 signgam 中返回,该变量在 math.h 中声明。gammaf 执行与 gamma 相同的计算,但使用并返回 float 值。lgamma 和 lgammaf 是 gamma 和 gammaf 的备用名称。使用 lgamma 而不是 gamma 是为了提醒用户,这些函数计算的是 gamma 函数的对数,而不是 gamma 函数本身。
函数 gamma_r、gammaf_r、lgamma_r 和 lgammaf_r 分别与 gamma、gammaf、lgamma 和 lgammaf 类似,但接受一个额外的参数。这个额外的参数是一个指向整数的指针。这个额外的参数用于返回结果的符号,并且不使用全局变量 signgam。这些函数可用于可重入调用(但如果发生错误,它们仍会设置全局变量 errno)。### 返回值
通常情况下,返回计算结果。当 x 为非正整数时,gamma 返回 HUGE_VAL 并将 errno 设置为 EDOM。如果结果溢出,gamma 返回 HUGE_VAL 并将 errno 设置为 ERANGE。您可以使用 matherr 修改此错误处理方式。
---
**权威来源**: BUSMASTER DITA help source `gamma.dita`, compiled into `BUSMASTER.CHM` with the application.