gamma
- 计算伽马函数实验性
伽马函数定义为在整个复平面上(除了零和负整数)收敛的反常积分函数的解析延拓。
Fortran 2018 标准实现了单精度和双精度实型参数的内在伽马函数。此处,伽马函数扩展到整数和复数参数。具有整数参数的伽马函数的值是精确的。具有复数参数的伽马函数的值通过使用兰乔斯逼近在单精度和双精度中进行近似。
result =
gamma (x)
元素函数
x
:应为正整数或复数类型。
该函数返回与输入参数类型和种类相同的返回值。
program example_gamma
use stdlib_kinds, only: dp, int64
use stdlib_specialfunctions_gamma, only: gamma
implicit none
integer :: i
integer(int64) :: n
real :: x
real(dp) :: y
complex :: z
complex(dp) :: z1
i = 10
n = 15_int64
x = 2.5
y = 4.3_dp
z = (2.3, 0.6)
z1 = (-4.2_dp, 3.1_dp)
print *, gamma(i) !integer gives exact result
! 362880
print *, gamma(n)
! 87178291200
print *, gamma(x) ! intrinsic function call
! 1.32934034
print *, gamma(y) ! intrinsic function call
! 8.8553433604540341
print *, gamma(z)
! (0.988054395, 0.383354813)
print *, gamma(z1)
! (-2.78916032990983999E-005, 9.83164600163221218E-006)
end program example_gamma
log_gamma
- 计算伽马函数的自然对数实验性
在数学上,伽马函数的对数本身就是一个具有复数参数的特殊函数。由于不同的分支切割结构和不同的主分支,具有复数参数的伽马函数 log_gamma(z) 与 ln(Gamma(z)) 不同。两者具有相同的实部,但虚部不同。
Fortran 2018 标准实现了单精度和双精度实型参数绝对值的内在 log_gamma 函数。此处,log_gamma 函数扩展到整数和复数参数。具有复数参数的 log_gamma 函数的值通过使用斯特灵公式在单精度和双精度中进行近似。
result =
log_gamma (x)
元素函数
x
:应为正整数或复数类型。
对于整数输入参数,该函数返回实数单精度值,而对于复数输入参数,则返回与之相同种类的复数值。
program example_log_gamma
use stdlib_kinds, only: dp
use stdlib_specialfunctions_gamma, only: log_gamma
implicit none
integer :: i
real :: x
real(dp) :: y
complex :: z
complex(dp) :: z1
i = 10
x = 8.76
y = x
z = (5.345, -3.467)
z1 = z
print *, log_gamma(i) !default single precision output
!12.8018274
print *, log_gamma(x) !intrinsic function call
!10.0942659
print *, log_gamma(y) !intrinsic function call
!10.094265528673880
print *, log_gamma(z) !same kind as input
!(2.56165648, -5.73382425)
print *, log_gamma(z1)
!(2.5616575105114614, -5.7338247782852498)
end program example_log_gamma
log_factorial
- 计算阶乘的对数实验性
计算阶乘的自然对数,log(n!)
result =
log_factorial (x)
元素函数
x
:应为正整数类型。
该函数返回单精度实数值。
program example_log_factorial
use stdlib_kinds, only: int64
use stdlib_specialfunctions_gamma, only: lf => log_factorial
implicit none
integer :: n
n = 10
print *, lf(n)
! 15.1044130
print *, lf(35_int64)
! 92.1361771
end program example_log_factorial
lower_incomplete_gamma
- 计算下不完全伽马积分实验性
下不完全伽马函数定义为
当 x < 0 时,p 必须为正整数。
result =
lower_incomplete_gamma (p, x)
元素函数
p
:为正整数或实型参数。
x
:为实型参数。
该函数返回与参数 x 种类相同的实数值。
program example_ligamma
use stdlib_specialfunctions_gamma, only: lig => lower_incomplete_gamma
implicit none
integer :: p
real :: p1
p = 3
p1 = 2.3
print *, lig(p, -5.0)
! -2521.02417
print *, lig(p1, 5.0)
! 1.09715652
end program example_ligamma
upper_incomplete_gamma
- 计算上不完全伽马积分实验性
上不完全伽马函数定义为
当 x < 0 时,p 必须为正整数。
result =
upper_incomplete_gamma (p, x)
元素函数
p
:为正整数或实型参数。
x
:为实型参数。
该函数返回与参数 x 种类相同的实数值。
program example_uigamma
use stdlib_specialfunctions_gamma, only: uig => upper_incomplete_gamma
implicit none
print *, uig(3, -5.0)
!2523.02295
print *, uig(2.3, 5.0)
!6.95552528E-02
end program example_uigamma
log_lower_incomplete_gamma
- 计算下不完全伽马积分的自然对数实验性
计算下不完全伽马函数绝对值的自然对数。
result =
log_lower_incomplete_gamma (p, x)
元素函数
p
:为正整数或实型参数。
x
:为实型参数。
该函数返回与参数 x 种类相同的实数值。
log_upper_incomplete_gamma
- 计算上不完全伽马积分的对数实验性
计算上不完全伽马函数绝对值的自然对数。
result =
log_upper_incomplete_gamma (p, x)
元素函数
p
:为正整数或实型参数。
x
:为实型参数。
该函数返回与参数 x 种类相同的实数值。
regularized_gamma_p
- 计算伽马商P实验性
正则化伽马商 P,也称为归一化不完全伽马函数,定义为
正则化伽马 P 的值在 [0, 1] 范围内。
result =
regularized_gamma_p (p, x)
元素函数
p
:为正整数或实型参数。
x
:为实型参数。
该函数返回与参数 x 种类相同的实数值。
program example_gamma_p
use stdlib_specialfunctions_gamma, only: rgp => regularized_gamma_p
implicit none
print *, rgp(3.0, 5.0)
! 0.875347972
end program example_gamma_p
regularized_gamma_q
- 计算伽马商Q实验性
正则化伽马商 Q 定义为
正则化伽马 Q 的值在 [0, 1] 范围内。
result =
regularized_gamma_q (p, x)
元素函数
p
:为正整数或实型参数。
x
:为实型参数。
该函数返回与参数 x 种类相同的实数值。
program example_gamma_q
use stdlib_specialfunctions_gamma, only: rgq => regularized_gamma_q
implicit none
print *, rgq(3.0, 5.0)
! 0.124652028
end program example_gamma_q