Subject: Re: [boost] MS VC10 std::numeric_limits<float>::max_digits10 iswrong for float
From: Paul A. Bristow (pbristow_at_[hidden])
Date: 2011-06-08 12:45:23
> -----Original Message-----
> From: boost-bounces_at_[hidden] [mailto:boost-bounces_at_[hidden]] On Behalf Of John
> Sent: Wednesday, June 08, 2011 5:05 PM
> To: boost_at_[hidden]
> Subject: Re: [boost] MS VC10 std::numeric_limits<float>::max_digits10 iswrong for float
> > Assuming I am right, I think this means that we need yet another macro
> > (Groans and Cries of Oh No, not another!)
> > because
> > BOOST_NO_NUMERIC_LIMITS_LOWEST
> > not defined is no longer an indicator that
> > max_digits10 is available (and its values correct).
> > So do we need
> > BOOST_NO_NUMERIC_LIMITS_MAX_DIGITS10
> > which should be defined by default, and only undefined for those
> > libraries supporting C++0X std::numeric_limits with correct values
> > like recent GCC - and others (but not <= VC10)?
> > Views?
> Sigh.... I guess so. Care to submit a patch?
in dinkumware.hpp I think it should be
// C++0x headers implemented in 520 (as shipped by Microsoft)
(assuming 520 is the version shipped with VC10 and that VC11 will correct and bump _CPPLIB_VER ?)
Note _CPPLIB_VER <= rather than < 520 for other similar macros
#if !defined(_CPPLIB_VER) || _CPPLIB_VER <= 520
# define BOOST_NO_NUMERIC_LIMITS_ MAX_DIGITS10
but there are many other compilers' config files and I'm not clear which versions implement C++0X
and thus presumably max_digits10 - and if anyone else has had a mental aberration/fat finger?
What I'm expecting people to be able to write is something like
#ifdef BOOST_NO_NUMERIC_LIMITS_ MAX_DIGITS10
max_digits10 = 2 + std::numeric_limits<FPT>::digits * 3010/10000;
max_digits10 = std::numeric_limits<FPT>::max_digits10;
--- Paul A. Bristow, Prizet Farmhouse, Kendal LA8 8AB UK +44 1539 561830 07714330204 pbristow_at_[hidden]
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk