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

Implementation of Float128 type

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

Поскольку немногие компиляторы реализуют истинную 128-битную плавающую точку, а языковые функции, такие как суффикс Q (который может потребоваться опция<-fext-numeric-literals>для включения), и C++ Стандартные библиотечные функции по-прежнему отсутствуют или неполны в C++11. Математические обертывания<__float128>, предоставляемые компилятором GCCтипов с плавающей запятой GCCили тип<_Quad>, предоставляемый компилятором Intel.

Это обеспечивается для того, чтобы продемонстрировать и оценить возможности и преимущества более точной плавающей точки, особенно для использования полногои Boost. Математическая библиотека функций и распределения с высокой точностью.

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

Мы также предоставляем (мы считаем, полную) поддержку<<limits>,<cmath>>, потоковых операций ввода-вывода<<iostream>>и<<complex>>.

В качестве прототипа для будущего стандарта C++ мы размещаем все это в<namespacestd>. Это, конечно, противоречит существующему стандарту C++, поэтому выбор любого компилятора, который обещает проверить соответствие, потерпит неудачу.

[Tip] Tip

Для GCC составьте<-std=gnu++11>или<-std=gnu++03>и не используйте<-std=stdc++11>или любые «строгие» опции, поскольку они отключают полную поддержку<__float128>. Эти требования также распространяются на компилятор Intel на Linux, для Intel на Windows вам нужно компилировать с<-Qoption,cpp,--extended_float_type-DBOOST_MATH_USE_FLOAT128>, чтобы активировать поддержку 128-битной плавающей точки.

Тип<__float128>обеспечивается библиотекойлибквадматана GCC или библиотекой Intel FORTRAN с Intel C++. Они также обеспечивают полный набор функций<<cmath>>в<namespace std>.

Using C __float128 quadmath type

[quadmath_snprintf_1]

Исходный код находится по адресуquadmath_snprintf.c.

Using C++ float128 quadmath type

Для программ на C++ вы захотите использовать тип C++<float128>

См. пример вcstdfloat_example.cpp.

Типичным вызовом компилятора является

g++ -O3 -std=gnu++11 test.cpp -I/c/modular-boost -lquadmath -o test.exe
[Tip] Tip

Если вы пытаетесь использовать развивающийся филиал Boost. Затем<-I/c/modular-boost/libs/math/include>сначалавключить каталог.

g++ -O3 -std=gnu++11 test.cpp -I/c/modular-boost/libs/math/include -I/c/modular-boost -lquadmath -o test.exe
[Note] Note

До сих пор единственной недостающей деталью, которую мы отметили, была попытка использовать<<typeinfo>>, например, для<std::cout<<typeid<__float_128>.name();>.

Link fails: undefined reference to typeinfo for __float128.

См.GCC Bug 43622 - no C++ typeinfo for __float128. Но об этом сообщает (Marc Glisse 2015-04-04 ) зафиксированный в GCC 5 (и выше).

Например, с GCC6.1.1 это работает так, как ожидается, дляискалеченногоназвания строки и вывода (если это возможно - не всегда).

const std::type_info& tifu128 = typeid(__float128); // OK.
//std::cout << tifu128.name() << std::endl; // On GCC, aborts (because not printable string).
//std::cout << typeid(__float128).name() << std::endl; // Aborts - string name cannot be output.
const std::type_info& tif128 = typeid(float128); // OK.
std::cout << tif128.name() << std::endl; // OK.
std::cout << typeid(float128).name() << std::endl; // OK.
const std::type_info& tpi = typeid(pi1); // OK GCC 6.1.1 (from GCC 5 according to http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43622)
std::cout << tpi.name() << std::endl; // Output mangled name:
// N5boost14multiprecision6numberINS0_8backends16float128_backendELNS0_26expression_template_optionE0EEE

PrevUpHomeNext

Статья Implementation of Float128 type раздела 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-20 01:05:33/0.0040669441223145/0