I recently tested boost::polygon to perform complex Boolean unions of polygonal data with overlapping segments and many intersections to one point. I had to change the default high_precision_type<int>::type to multiprecision::int128_t because it defaults to long double. I wanted to capture 30 bits of an int. I suspect that this code was written back when long double was actually a long double by Visual Studio's MSVC compiler and not an euphemism for double.
Has anyone encountered a similar issue?
This is how the high precision integer operations can be overwritten by the user
namespace boost::polygon {
template<> struct high_precision_type<int64_t>
{
using type = multiprecision::int128_t;
};
template<> struct high_precision_type<int>
{
using type = multiprecision::int128_t;
};
}