
-----Original Message----- From: boost-bounces@lists.boost.org [mailto:boost-bounces@lists.boost.org] On Behalf Of Brandon Kohn Sent: 10 October 2008 16:37 To: boost@lists.boost.org Subject: Re: [boost] [mp_int] new release -------------------------------------------------- From: "Kevin Sopp" <baraclese@googlemail.com> Sent: Friday, October 10, 2008 10:25 AM To: <boost@lists.boost.org> Subject: Re: [boost] [mp_int] new release
I've tried to use your simple "general use" example in your documentation with MS Visual studio 9.0 Sadly it fails to compile with an Internal compiler error :-( 1>Compiling... 1>demo_unbounded_int.cpp 1>i:\trunk\boost\mp_math\mp_int\detail\string_conversion_constants.hpp(44) : fatal error C1001: An internal error has occurred in the compiler. 1>(compiler file 'msc1.cpp', line 1411) 1> To work around this problem, try simplifying or changing the program near the locations listed above. 1>Please choose the Technical Support command on the Visual C++ 1> Help menu, or open the Technical Support help file for more information 1> i:\trunk\boost\mp_math\mp_int\detail\string_conversion_constants.hpp(47) : see reference to class template instantiation 'boost::mp_math::detail::max_power<MpInt,Base>' being compiled This is a bit of a showstopper ;-) Or am I doing something silly? Any suggestions about what to try changing? Thanks Paul --- Paul A Bristow Prizet Farmhouse, Kendal, Cumbria UK LA8 8AB +44 1539561830 & SMS, Mobile +44 7714 330204 & SMS pbristow@hetp.u-net.com PS
I'll also need these for sure so it would be nice if they were added to the next release:
template <> class numeric_limits< boost::mp_math::mp_int<> > { private: typedef boost::mp_math::mp_int<> Type; public: static const bool is_specialized = true; static const int digits = 0; static const int digits10 = 0; static const bool is_signed = true; static const bool is_integer = true; static const bool is_exact = true; static const int radix = 2; static const int min_exponent = 0; static const int min_exponent10 = 0; static const int max_exponent = 0; static const int max_exponent10 = 0; static const bool has_infinity = false; static const bool has_quiet_NaN = false; static const bool has_signaling_NaN = false; static const float_denorm_style has_denorm = denorm_absent; static const bool has_denorm_loss = false; static const bool is_iec559 = false; static const bool is_bounded = false; static const bool is_modulo = false; static const bool traps = false; static const bool tinyness_before = false; static const float_round_style round_style = round_toward_zero; static Type min() { return static_cast<Type>(0); } static Type max() { return static_cast<Type>(0); }
static Type epsilon() { return static_cast<Type>(1); }
static Type round_error() { return static_cast<Type>(1); }
static Type infinity() { return static_cast<Type>(0); }
static Type quiet_NaN() { return static_cast<Type>(0); }
static Type denorm_min() { return static_cast<Type>(1); } }; } // namespace std