LGAMMA 函数

简介

LGAMMA 函数用于计算对数 Gamma 函数(Log-Gamma 函数)的值,即 Gamma 函数绝对值的自然对数。其数学定义为:

lgamma(x) = ln(|Γ(x)|)

其中 Γ(x) 为 Gamma 函数。对数 Gamma 函数在处理大数阶乘相关计算时非常有用,因为直接计算 Gamma 函数值可能导致数值溢出,而取对数后可以在更大的数值范围内安全计算。

语法

lgamma(expr)

参数说明

  • expr: 需要计算对数 Gamma 函数值的数值表达式,支持数值类型(可隐式转换为 DOUBLE)。

返回结果

返回类型为双精度浮点数(DOUBLE),表示输入值对应的 ln(|Γ(x)|) 值。

使用示例

  1. 计算 lgamma(1)(ln(|Γ(1)|) = ln(1) = 0):

    SELECT lgamma(1) AS res;
    +-----+
    | res |
    +-----+
    | 0.0 |
    +-----+
  2. 计算 lgamma(5)(ln(|Γ(5)|) = ln(4!) = ln(24) ≈ 3.178):

    SELECT CAST(lgamma(5) AS decimal(18, 10)) AS res;
    +--------------+
    |     res      |
    +--------------+
    | 3.1780538303 |
    +--------------+
  3. 计算非整数参数的对数 Gamma 值(lgamma(0.5) = ln(√π)):

    SELECT CAST(lgamma(0.5) AS decimal(18, 10)) AS res;
    +--------------+
    |     res      |
    +--------------+
    | 0.5723649429 |
    +--------------+
  4. 当输入为 NULL 时:

    SELECT lgamma(NULL) AS res;
    +------+
    | res  |
    +------+
    | NULL |
    +------+

注意事项

  • 当输入参数为 NULL 时,返回结果为 NULL。
  • 对于零和负整数(0, -1, -2, ...),Gamma 函数无定义(趋向无穷),lgamma 返回 Infinity(将此类结果 CAST 为 decimal 时会得到 NULL)。
  • 对于正整数 n,lgamma(n) = ln((n-1)!),例如 lgamma(5) = ln(24) ≈ 3.178,lgamma(1) = 0,lgamma(2) = 0。
  • lgamma 与 tgamma 的关系:lgamma(x) = ln(|tgamma(x)|)。当 tgamma(x) 的结果非常大时(如大参数),直接使用 tgamma 可能溢出为 Infinity,而 lgamma 仍能返回有效结果,适合处理大数阶乘相关的计算。
  • lgamma(0.5) = ln(√π) ≈ 0.5724,这是对数 Gamma 函数的一个经典特殊值。

联系我们
预约咨询
微信咨询
电话咨询