![]()  | 
![]() ![]() ![]() ![]()  | 
![]()  | 
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.  | 
template <class T> T factorial(unsigned i); template <class T, class Policy> T factorial(unsigned i, const Policy&);
Возвращаетсяи.
Конечный аргументПолитикаявляется необязательным и может быть использован для контроля поведения функции: как она обрабатывает ошибки, какой уровень точности использовать и т. д. См. документациюдля более подробной информации.
Дляi<=max_factorial< T>:: значениереализуется путем поиска таблицы, для более крупных значенийiэта функция реализуется в терминахtgamma.
Еслиiнастолько велик, что результат не может быть представлен в типе T, то вызываетoverflow_error.
template <class T> T unchecked_factorial(unsigned i);
Возвращаетсяи.
Внутренне эта функция выполняет поиск по таблице результата. Далее он не выполняет проверку диапазона по значению i: абонент должен убедиться, чтоi<= max_factorial. Эта функция предназначена для использования во внутренних петлях, которые требуют быстрого поиска факториалов в таблице, но требуют осторожности, чтобы аргументiникогда не становился слишком большим.
template <class T> struct max_factorial { static const unsigned value = X; };
Этот класс признаков определяет наибольшее значение, которое может быть переданоunchecked_factorial. Значениеможно использовать там, где требуются интегральные постоянные выражения: например, для определения размера дополнительных таблиц, зависящих от факториалов.
Для аргументов меньшеmax_factorial<T>::значениерезультат должен быть правильно округлен. Для более крупных аргументов точность будет такой же, как дляtgamma.
Основные проверки здравомыслия и значения пятен для проверки таблиц данных: основные тесты для функцииtgammaуже обрабатывают эти случаи.
Факторная функция приводится в таблицу для небольших аргументов и реализуется в терминахtgammaдля более крупных аргументов.
Статья Factorial раздела Math Toolkit 2.5.0 Factorials and Binomial Coefficients может быть полезна для разработчиков на c++ и boost.
:: Главная :: Factorials and Binomial Coefficients ::
реклама  |