__float128 является (факультативно) компилятором, поставляемым аппаратным типом, это C-ish расширение на C++ и есть только минимальная поддержка для него в обычном C++ (без потоков IO или нумерные_limits поддержка, имена функций в libquadmath все имеют разные названия для std:: и т.д.) Таким образом, вы можете программировать тип __float128 непосредственно, но это сложнее.
Тип float128 использует __float128 и делает его C++ и общий код дружественным, со всем обычным стандартом iostream, numeric_limits, комплекс в namspace std:: доступен, так настоятельно рекомендуется для использования C++.
Убедитесь, что вы объявляете переменные с правильным типом, здесь float128.
Убедитесь, что если вы переходите переменную к функции, то она отбрасывается на float128.
Убедитесь, что вы объявляете литералы правильным суффиксом - иначе они будут рассматриваться как тип ДП с катастрофической потерей точности. Поэтому убедитесь, что у них есть Q suffix для 128-битных литров с плавающей точкой.
Все функции std-библиотеки, функции смат, плюс все константы, и специальные функции от Boost. Математика должна работать.
Убедитесь, что функции std lib называются неквалифицированными, чтобы правильная перегрузка была найдена через Argument Dependent Lookup (ADL). Так напишите квадрат (измеримо) и не std::sqrt(измеримо).
В общем, постарайтесь не переосмысливать вещи - используя константы от Boost. Математика, вероятно, менее подвержена ошибкам, чем объявление собственной, также специальные функции и т.д.
Некоторые примеры того, что может пойти ужасно и безмолвно неправильно, на float128_example.cpp.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.