Повышение мультиточности не удается, потому что реализация сложных пытается привести к удвоению во внутренних функциях, таких как _Isinf или _Isnan

Мне нужна BSD-подобная лицензионная библиотека C (++) с поддержкой точных чисел, поэтому я попытался повысить ее.

Сбой следующего кода:

#include <boost/multiprecision/cpp_dec_float.hpp>
#include <complex>

using namespace boost::multiprecision;
std::complex<cpp_dec_float_50>(1.0, 2.0) / std::complex<cpp_dec_float_50>(1.0, 2.0)

в Visual Studio 2012 с ошибкой C2440, потому что реализация сложных пытается привести к удвоению во внутренних функциях, таких как _Isinf или _Isnan.

Это ошибка с моей стороны? Как я могу это исправить? Есть ли лучшие библиотеки?

5

Решение

Из C ++ 11 26,4 / 2:

Эффект создания шаблона комплекса для любого другого типа
чем float, double или long double не указано.

Таким образом, вы не можете надежно использовать std::complex с другими типами, но, возможно, повышение имеет complex тип, который работает с cpp_dec_float_50,

3

Другие решения

GCC 4.7 позволит вам использовать расширенные мультиточные поплавки с std::complex<>,

1

По вопросам рекламы [email protected]