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

Setting Policies for Distributions on an Ad Hoc Basis

Boost , Math Toolkit 2.5.0 , Policy Tutorial

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

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

namespace boost{ namespace math{
template <class RealType = double, class Policy = policies::policy<> >
class fisher_f_distribution;
typedef fisher_f_distribution<> fisher_f;
}}

Эта политика используется всеми вспомогательными функциями, которые принимают распределение в качестве аргумента, и пересылается на все функции, называемые этими функциями. Таким образом, если вы используете шорт-типеф для распределения, вы получаете<double>точную арифметику и все политики по умолчанию.

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

#include <boost/math/distributions/binomial.hpp>
using boost::math::binomial_distribution;
// Begin by defining a policy type, that gives the behaviour we want:
//using namespace boost::math::policies; or explicitly
using boost::math::policies::policy;
using boost::math::policies::promote_float;
using boost::math::policies::discrete_quantile;
using boost::math::policies::integer_round_nearest;
typedef policy<
   promote_float<false>, // Do not promote to double.
   discrete_quantile<integer_round_nearest> // Round result to nearest integer.
> mypolicy;
//
// Then define a new distribution that uses it:
typedef boost::math::binomial_distribution<float, mypolicy> mybinom;
//  And now use it to get the quantile:
int main()
{
   cout << "quantile(mybinom(200, 0.25), 0.05) is: " <<
      quantile(mybinom(200, 0.25), 0.05) << endl;
}

Какие выходы:

quantile is: 40

PrevUpHomeNext

Статья Setting Policies for Distributions on an Ad Hoc Basis раздела Math Toolkit 2.5.0 Policy Tutorial может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Policy Tutorial ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 03:35:25/0.0055480003356934/1