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

Rationale

Boost , Math Toolkit 2.5.0 , Chapter 3. Specified-width floating-point typedefs

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

Реализация<<boost/cstdfloat.hpp>>предназначена для использования<<float.h>>, определенного в стандарте C 1989 года. Препроцессор используется для запроса определенных определений препроцессора в<<float.h>>, таких как FLT_MAX, DBL_MAX и т. Д. По результатам этих запросов делается попытка автоматического обнаружения наличия встроенных типов плавающих точек, имеющих заданную ширину. Однозначный тест, требующий соответствияIEEE_floating_point(IEC599) на основе<std::numeric_limits<>::is_iec559>, выполняется с<BOOST_STATIC_ASSERT>.

Кроме того, эта реализация Boost<<boost/cstdfloat.hpp>>поддерживает 80-битную плавающую точку<typedef>, если она может быть обнаружена, и 128-битную плавающую точку<typedef>, если она может быть обнаружена, при условии, что базовые типы соответствуютIEEE-754 точному расширению(предоставленному<std::numeric_limits<>::is_iec559==true>для этого типа).

Заголовок<<boost/cstdfloat.hpp>>делает стандартизированную плавающую точку<typedef>безопасно доступной в<namespaceboost>без размещения каких-либо имен в<namespacestd>. Цель состоит в том, чтобы дополнять, а не конкурировать с потенциальным будущим C/C++. Стандартная библиотека, которая может содержать эти<typedef>. Если какой-то будущий стандарт C/C++ включает<<stdfloat.h>>и<<cstdfloat>>, то<<boost/cstdfloat.hpp>>будет продолжать функционировать, но станет избыточным и может быть безопасно обесценен.

Поскольку<<boost/cstdfloat.hpp>>является заголовком Boost, его название соответствует соглашениям об именах заголовков, а не C++. Стандартные библиотечные соглашения об именах.

[Note] Note

<<boost/cstdfloat.hpp>>не может синтезировать или создать<typedef>, если базовый тип не предусмотрен компилятором. Например, если компилятор не имеет базового типа с плавающей точкой с 128 битами (очень востребованными в научном и численном программировании), то<float128_t>и его соответствующие наименее и быстрые типы, а не, предоставленные<<boost/cstdfloat.hpp>>.

[Warning] Warning

Если<<boost/cstdfloat.hpp>>использует нестандартизированный тип компилятора, а не, полученный из<float, double,>или<longdouble>, для одной или нескольких его плавающих точек<typedef>, то нет никакой гарантии, что специализации<numeric_limits<>>будут доступны для этих типов. Как правило, специализации<numeric_limits<>>будут доступны для этих типов, только если сам компилятор поддерживает соответствующие специализации для базового типа(ов), исключениями являются тип<__float128>GCC и тип<_Quad>Intel, которые явно поддерживаются через наш собственный код.

[Warning] Warning

В качестве артефакта реализации некоторые макросы C из<<float.h>>могут быть видны пользователям<<boost/cstdfloat.hpp>>. Не полагайтесь на использование этих макросов; они не являются частью какого-либо интерфейса. Вместо этого используйте<std::numeric_limits<>>для диапазонов с плавающей запятой и т. Д.

[Tip] Tip

Для достижения наилучших результатов<<boost/cstdfloat.hpp>>должен быть<#include>d перед другими заголовками, которые определяют общий код с использованием стандартных библиотечных функций, определенных в.

Это связано с тем, что<<boost/cstdfloat.hpp>>может определять перегрузки стандартных библиотечных функций, когда для одного из указанных типов ширины используется нестандартный тип (т.е. иной, чем<float>,<double>или<long double>). Если общий код (например, в другом заголовке Boost.Math) вызывает стандартную функцию библиотеки, то правильная перегрузка будет найдена только в том случае, если эти перегрузки определены до точки использования. Более подробно см.перегрузку шаблонных функций с помощью float128_tи реализацию<cstdfloat.hpp>.

По этой причине лучше всего<#include <boost/cstdfloat.hpp>>сначала включить.


PrevUpHomeNext

Статья Rationale раздела Math Toolkit 2.5.0 Chapter 3. Specified-width floating-point typedefs может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Chapter 3. Specified-width floating-point typedefs ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 20:17:26/0.0093700885772705/1