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

Conceptual Archetypes for Reals and Distributions

Boost , Math Toolkit 2.5.0 , Chapter 14. Use with User-Defined Floating-Point Types - Boost.Multiprecision and others -

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

Существует несколько концептуальных архетипов:

  • Реальная концепция для типов с плавающей точкой.
  • Понятие распределения статистических распределений.
Real concept

<std_real_concept>является архетипом для реальных типов, включая встроенный поплавок, двойной, длинный двойной.

#include <boost/concepts/std_real_concept.hpp>
namespace boost{
namespace math{
namespace concepts
{
  class std_real_concept;
}
}} // namespaces

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

Для того, чтобы убедиться, что вызов к слову<pow>может быть найден либо с помощью поиска, зависящего от аргумента, либо в случае отказа от этого в пространстве имен std: все вызовы стандартных библиотечных функций являются неквалифицированными, а std:: версии, найденные через объявление<using>, чтобы сделать их видимыми в текущем объеме. К сожалению, легко забыть декларацию<using>и ошибочно назвать двойную версию функции, которая находится в глобальном масштабе.

Например, если код вызывает::pow, а не std::pow, код будет четко компилироваться, но усечение длинных дублей до удвоения приведет к значительной потере точности. В противоположность этому, шаблон, созданный с помощью std_real_concept, будеттолькокомпилировать, если все стандартные функции библиотеки были введены в существующий объем с помощью декларации использования.

Testing the real concept

Существует тестовая программаlibs/math/test/std_real_concept_check.cpp, которая инстанцирует каждый шаблон в этой библиотеке с типом<std_real_concept>для проверки его использования стандартных библиотечных функций.

#include <boost/math/concepts/real_concept.hpp>
namespace boost{
namespace math{
namespace concepts{
class real_concept;
}}} // namespaces

<real_concept>является архетипом дляопределяемых пользователем реальных типов, он заявляет о своих стандартных библиотечных функциях в своем собственном пространстве имен: они будут найдены только в том случае, если они называются неквалифицированными, позволяющими зависимому от аргумента поиску найти их. Кроме того, этот тип можно использовать во время выполнения: это позволяет тестировать код, который в противном случае не использовался бы встроенными типами плавающих точек. Для этого типа нет поддержки std::numeric_limits<>, поскольку numeric_limits не является концептуальным требованием дляRealTypes.

NTL RR является примером типа, отвечающего требованиям, предъявляемым к моделям этого типа, но обратите внимание, что требуется использование класса тонкой обертки: обратитесь к«Использование с NTL - высокоточная библиотека плавающих точек».

Вместо этого не существует конкретного тестового случая для типа<real_concept>, поскольку этот тип можно использовать во время выполнения, каждый отдельный тестовый случай, а также испытания<float>,<double>и<long double>, также тесты<real_concept>.

Distribution Concept

Концепция распределения модели статистических распределений.

#include <boost/math/concepts/distribution.hpp>
namespace boost{
namespace math{
namespace concepts
{
  template <class RealType>
  class distribution_archetype;
  template <class Distribution>
  struct DistributionConcept;
}}} // namespaces

Шаблон класса<distribution_archetype>является модельюконцепции распределения.

Шаблон класса<DistributionConcept>представляет собойкласс проверки концепциидля типов распределения.

Testing the distribution concept

Программа тестированияdistribution_concept_check.cppотвечает за использование<DistributionConcept>для проверки того, что все дистрибутивы в этой библиотеке соответствуют концепцииDistribution.

Шаблон класса<DistributionConcept>проверяет существование (но не надлежащее функционирование) нечленных аксессуаров, требуемых концепцией распределения. Их проверяют по звонкам типа

v = pdf (dist, x); // (результат v игнорируется).

Кроме того, те, кто принимает два аргумента, делают правильные вещи, когда аргументы разных типов (тип результата всегда тот же, что и тип распределения). (Это реализуется некоторыми дополнительными функциями пересылки в derived_accessors.hpp, так что нет необходимости в каких-либо изменениях кода. Аналогичным образом, в них также реализованы шаблонные версии функций опасности/chf/coefficient_of_variation.


PrevUpHomeNext

Статья Conceptual Archetypes for Reals and Distributions раздела Math Toolkit 2.5.0 Chapter 14. Use with User-Defined Floating-Point Types - Boost.Multiprecision and others - может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Chapter 14. Use with User-Defined Floating-Point Types - Boost.Multiprecision and others - ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 06:50:11/0.0092458724975586/1