Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

γ函數的比

#include <boost/math/special_functions/gamma.hpp>

namespace boost{ namespace math{

template <class T1, class T2>
calculated-result-type tgamma_ratio(T1 a, T2 b);

template <class T1, class T2, class Policy>
calculated-result-type tgamma_ratio(T1 a, T2 b, const Policy&);

template <class T1, class T2>
calculated-result-type tgamma_delta_ratio(T1 a, T2 delta);

template <class T1, class T2, class Policy>
calculated-result-type tgamma_delta_ratio(T1 a, T2 delta, const Policy&);

}} // namespaces
說明
template <class T1, class T2> 
calculated-result-type tgamma_ratio(T1 a, T2 b);

template <class T1, class T2, class Policy> 
calculated-result-type tgamma_ratio(T1 a, T2 b, const Policy&);

返回γ函數的比:

最後一個策略 參數是可選的並且可以用來控制函數的行為: 如何處理錯誤, 使用哪種層次的精度等等. 參見策略文檔瞭解更多信息。

在函數的內部調用tgamma_delta_ratio(a, b-a).

template <class T1, class T2>
calculated-result-type tgamma_delta_ratio(T1 a, T2 delta);

template <class T1, class T2, class Policy>
calculated-result-type tgamma_delta_ratio(T1 a, T2 delta, const Policy&);

返回γ函數的比:

最後一個策略 參數是可選的並且可以用來控制函數的行為: 如何處理錯誤, 使用哪種層次的精度等等. 參見策略文檔瞭解更多信息。

即使是當deltaa相比很小時a+delta ~ a,這個返回值仍然是精確的:實際上,這個函數在 a很大且delta很小的時候使用。

當T1和T2是不同類型的時候,函數返回值的類型使用返回值推導法則:來確定,否則返回值的類型為T1.

精確性

下面的表顯示了參數的不同定義域的峰值誤差(單位為10的-5次方)。注意,在那些由寬浮點類型來給定窄浮點類型的系統上會有有效的零誤差.

表6.函數tgamma_delta_ratio(a, delta)誤差

有效數字位數

平台和編譯器

20 < a < 80

delta < 1

53

Win32, Visual C++ 8

峰值=16.9 均值=1.7

64

Redhat Linux IA32, gcc-3.4.4

峰值=24 均值=2.7

64

Redhat Linux IA64, gcc-3.4.4

峰值=12.8 均值=1.8

113

HPUX IA64, aCC A.06.06

峰值=21.4 均值=2.3


表7.函數 tgamma_ratio(a, b)誤差

有效數字位數

平台和編譯器

6 < a,b < 50

53

Win32, Visual C++ 8

峰值=34 均值=9

64

Redhat Linux IA32, gcc-3.4.4

峰值=91 均值=23

64

Redhat Linux IA64, gcc-3.4.4

峰值=35.6 均值=9.3

113

HPUX IA64, aCC A.06.06

峰值=43.9 均值=13.2


測試

精確度測試使用使用高精度的測試數據 (使用精度為1000-bit的NTL RR 類: 大約 300 個進制數字)以及一個有意進行的簡單計算Γ(x)/Γ(y).

實現

這些函數的實現非常類型於函數β, 同樣也基於合併相似的冪項來提高精度並且避免假的上溢/下溢.

此外,對於delta是較小的整數的情況進行了優化,在這種情況下,這個函數基本上是一個遞增階乘; 或者兩個參數都是很小的整數的情況:在這種情況下,階乘的查找表方法可以用來計算函數的比。


PrevUpHomeNext