Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Factorial

Boost , Math Toolkit 2.5.0 , Factorials and Binomial Coefficients

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext
Synopsis
#include <boost/math/special_functions/factorials.hpp>
namespace boost{ namespace math{
template <class T>
T factorial(unsigned i);
template <class T, class Policy>
T factorial(unsigned i, const Policy&);
template <class T>
T unchecked_factorial(unsigned i);
template <class T>
struct max_factorial;
}} // namespaces
Description
[Important] Important

Функции, описанные ниже, являются шаблонами, где аргумент шаблона T не может быть выведен из аргументов, переданных функции. Если вы пишете что-то вроде:

повышение:Математика:факторный(2);

Вы получите (возможно, озадачивающую) ошибку компилятора, которая обычно указывает на отсутствие такой функции. Вместо этого вам нужно указать тип возврата и написать:

повысить::математика::факторный<двойной>2;

Так что тип возврата известен.

Кроме того, аргумент шаблона должен быть действительно ценным типом, таким какплавающийилидвойной, а не целочисленным типом, который слишком легко переполнялся бы для довольно небольших значений параметраi!

Исходный кодstatic_assertи комментарий сразу после завещания:

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::value. Эта функция предназначена для использования во внутренних петлях, которые требуют быстрого поиска факториалов в таблице, но требуют осторожности, чтобы аргументiникогда не становился слишком большим.

template <class T>
struct max_factorial
{
   static const unsigned value = X;
};

Этот класс признаков определяет наибольшее значение, которое может быть переданоunchecked_factorial. Значениеможно использовать там, где требуются интегральные постоянные выражения: например, для определения размера дополнительных таблиц, зависящих от факториалов.

Accuracy

Для аргументов меньшеmax_factorial<T>::значениерезультат должен быть правильно округлен. Для более крупных аргументов точность будет такой же, как дляtgamma.

Testing

Основные проверки здравомыслия и значения пятен для проверки таблиц данных: основные тесты для функцииtgammaуже обрабатывают эти случаи.

Implementation

Факторная функция приводится в таблицу для небольших аргументов и реализуется в терминахtgammaдля более крупных аргументов.


PrevUpHomeNext

Статья Factorial раздела Math Toolkit 2.5.0 Factorials and Binomial Coefficients может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Factorials and Binomial Coefficients ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 23:46:13/0.028889894485474/1