![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Conceptual Requirements for Real Number TypesBoost , Math Toolkit 2.5.0 , Chapter 14. Use with User-Defined Floating-Point Types - Boost.Multiprecision and others -
|
Выражение |
Тип результата |
Заметки |
---|---|---|
|
Реальный тип |
RealType является копируемым. |
|
Реальный тип |
RealType является копируемым из арифметических типов. |
|
RealType& |
Оператор назначения. |
|
RealType& |
Оператор назначения из арифметических типов. |
|
RealType& |
Добавляет cr в r. |
|
RealType& |
Добавляет ar к r. |
|
RealType& |
Вычитает cr из r. |
|
RealType& |
Вычитает ca из r. |
|
RealType& |
Умножает r на cr. |
|
RealType& |
Умножает r на ca. |
|
RealType& |
Разделяет r на cr. |
|
RealType& |
Разделяет r на ca. |
|
Реальный тип |
Унарное отрицание. |
|
RealType& |
Операция идентификации. |
|
Реальный тип |
Бинарная добавка |
|
Реальный тип |
Бинарная добавка |
|
Реальный тип |
Бинарная добавка |
|
Реальный тип |
Бинарное вычитание |
|
Реальный тип |
Бинарное вычитание |
|
Реальный тип |
Бинарное вычитание |
|
Реальный тип |
Бинарное умножение |
|
Реальный тип |
Бинарное умножение |
|
Реальный тип |
Бинарное умножение |
|
Реальный тип |
Бинарное вычитание |
|
Реальный тип |
Бинарное вычитание |
|
Реальный тип |
Бинарное вычитание |
|
буль |
Сравнение показателей |
|
буль |
Сравнение показателей |
|
буль |
Сравнение показателей |
|
буль |
Сравнение неравенства |
|
буль |
Сравнение неравенства |
|
буль |
Сравнение неравенства |
|
буль |
Менее чем равно. |
|
буль |
Менее чем равно. |
|
буль |
Менее чем равно. |
|
буль |
Больше, чем равно. |
|
буль |
Больше, чем равно. |
|
буль |
Больше, чем равно. |
|
буль |
Меньше, чем сравнение. |
|
буль |
Меньше, чем сравнение. |
|
буль |
Меньше, чем сравнение. |
|
буль |
Больше, чем сравнение. |
|
буль |
Больше, чем сравнение. |
|
буль |
Больше, чем сравнение. |
|
int |
Количество цифр в значении и RealType. |
|
Реальный тип |
Наибольшее репрезентабельное число по типу RealType. |
|
Реальный тип |
Наименьшее репрезентабельное число по типу RealType. |
|
Реальный тип |
Натуральный логарифм наибольшего репрезентабельного числа по типу RealType. |
|
Реальный тип |
Натуральный логарифм наименьшего репрезентабельного числа по типу RealType. |
|
Реальный тип |
Эпсилон машины RealType. |
Обратите внимание:
log_max_value
и log_min_value
могут быть синтезированы из других, и поэтому не требуется явной специализации.epsilon
может быть синтезирована из других, поэтому не требуется явной специализации при условии, что точность RealType не изменяется во время выполнения (см. заголовок boost/math/bindings/rr.hpp для примера, где точность изменяется во время выполнения).цифры
, max_value
и min_value
автоматически синтезируются из std::численные_лимиты
. Однако, если numeric_limits
не специализируется на типе RealType, то вы получите ошибку компилятора, когда код попытается использовать эти функции, если только вы явно не специализируетесь на них. Например, если точность RealType изменяется во время выполнения, то поддержка numeric_limits
может быть неподходящей, см. boost/math/bindings/rr.hpp для примеров.![]() |
Warning |
---|---|
Если Повышаю. Тест: предоставление вводящих в заблуждение сообщений об ошибках "разница между {9.79796} и {9.79796} превышает 5.42101e-19%". Boost.Lexical Снято и увеличено. Сериализация при преобразовании числа в строку, вызывая потенциально серьезную потерю точности на выходе. Хотя может показаться очевидным, что RealType должен требовать специализации |
Многие (хотя и не все) функции этой библиотеки выполняют вызовы к стандартным библиотечным функциям. Обратите внимание, что большинство функций в этой библиотеке будут вызывать только небольшое подмножество функций, перечисленных здесь, поэтому, если вы сомневаетесь в том, что тип, определенный пользователем, имеет достаточную стандартную поддержку библиотеки, лучше всего попробовать и посмотреть!
В следующей таблице r находится объект типа RealType
, cr1 и cr2 являются объектами типа const RealType
, а i является объектом типа int
.
Выражение |
Тип результата |
---|---|
|
Реальный тип |
|
Реальный тип |
|
Реальный тип |
|
Реальный тип |
|
Реальный тип |
|
Реальный тип |
|
Реальный тип |
|
Реальный тип |
|
Реальный тип |
|
Реальный тип |
|
Реальный тип |
|
Реальный тип |
|
Реальный тип |
|
Реальный тип |
|
Реальный тип |
|
Реальный тип |
|
Реальный тип |
|
int |
|
Реальный тип |
|
int |
Обратите внимание, что в приведенной выше таблице перечислены только те стандартные библиотечные функции, которые, как известно, будут использоваться (или, вероятно, будут использоваться в ближайшем будущем) этой библиотекой. Следующие функции: acos
, atan2
, cosh
, sinh
, tanh
, log10
, lround
, ltrunc
, lltrunc
и modf
в настоящее время не используются, но могут быть добавлены дополнительные специальные функции.
Обратите внимание, что функции round
, trunc
и modf
не являются частью текущего стандарта C++: они являются частью дополнений, добавленных к C99, которые, вероятно, будут в следующем стандарте C++. Существуют версии Boost, которые предоставляются в качестве резервной копии, и функции всегда называются неквалифицированными, чтобы можно было выполнять поиск, основанный на аргументах.
Кроме того, для эффективных и точных результатов крайне желательно приближение Lanczos. Вы можете адаптировать существующее приближение от boost/math/special_functions/lanczos.hpp или boost/math/bindings/detail/big_lanczos.hpp: в первом случае вам потребуется изменить static_cast
на lexical_cast
, а константы на strings (чтобы коэффициенты не усечены до longdoubl
e) и затем специализироваться на lanczos_traits
для типа T. В противном случае вам, возможно, придется взломать libs/math/tools/lanczos_generator.cpp, чтобы найти подходящее приближение для вашего RealType. Код все равно будет компилироваться, если вы этого не сделаете, но точность и эффективность будут сильно скомпрометированы в любой функции, которая использует семейство функций гамма / бета / эрф.
Статья Conceptual Requirements for Real Number Types раздела 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 - ::
реклама |