![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Double FactorialBoost , Math Toolkit 2.5.0 , Factorials and Binomial Coefficients
|
![]() |
Important |
---|---|
Описанные выше функции представляют собой шаблоны, где аргумент шаблона T не может быть выведен из аргументов, переданных функции. Если вы пишете что-то вроде: < Вы получите (возможно, озадачивающую) ошибку компилятора, обычно указывающую на то, что такой функции нет. Вместо этого вам нужно указать тип возврата и написать: < Так что тип возврата известен. Кроме того, аргумент шаблона должен быть действительно ценным типом, таким как< Исходным кодом< BOOST_STATIC_ASSERT(!boost::is_integral<T>::value); // factorial<unsigned int>(n) is not implemented // because it would overflow integral type T for too small n // to be useful. Use instead a floating-point type, // and convert to an unsigned type if essential, for example: // unsigned int nfac = static_cast<unsigned int>(factorial<double>(n)); // See factorial documentation for more detail. |
![]() |
Note |
---|---|
< |
В реализации используется тривиальная адаптация факториальной функции, поэтому частота ошибок должна быть не более пары эпсилон выше.
Спот-тестирование данных двойного факториального использования, генерируемых functions.wolfram.com.
Двойной факториал реализуется в терминах факториальной и гамма-функций с использованием отношений:
(2n)!! = 2n* n!
(2n+1)!! = (2n+1)! / (2nn!)
и
(2n-1)!! = Γ((2n+1)/2) * 2n/ sqrt(pi)
Статья Double Factorial раздела Math Toolkit 2.5.0 Factorials and Binomial Coefficients может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Factorials and Binomial Coefficients ::
реклама |