![]() |
Home | Libraries | People | FAQ | More |
#include <boost/math/special_functions/factorials.hpp>
namespace boost{ namespace math{ template <class T> T double_factorial(unsigned i); template <class T, class Policy> T double_factorial(unsigned i, const Policy&); }} // namespaces
返回i!!.
最後一個策略 參數是可選的並且可以用來控制函數的行為: 如何處理錯誤, 使用哪種層次的精度等等. 參見策略文檔瞭解更多信息。
如果計算結果太大以至於T類型無法表示,那麼就可能返回溢出錯誤 . 這裡的實現針對於i值較小時進行了優化,當i的值較小時,如果可能就從查找表中查找階乘的值。
這裡的實現使用了一個平凡的階乘函數的改寫, 所以誤差率不會超過幾個 10的-5次方(epsilon).
雙階乘的抽樣測試數據由 functions.wolfram.com生成。
雙階乘使用基於下面關係的階乘和γ函數來實現:
(2n)!! = 2n * n!
(2n+1)!! = (2n+1)! / (2n n!)
且
(2n-1)!! = Γ((2n+1)/2) * 2n / sqrt(pi)