![]() |
Home | Libraries | People | FAQ | More |
#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&);
返回γ函數的比:
最後一個策略 參數是可選的並且可以用來控制函數的行為: 如何處理錯誤, 使用哪種層次的精度等等. 參見策略文檔瞭解更多信息。
即使是當delta與 a相比很小時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是較小的整數的情況進行了優化,在這種情況下,這個函數基本上是一個遞增階乘; 或者兩個參數都是很小的整數的情況:在這種情況下,階乘的查找表方法可以用來計算函數的比。