Boost logo

Boost :

Subject: Re: [boost] [lexical_cast][math] can't unconditionally call math::changesign with long double
From: John Maddock (boost.regex_at_[hidden])
Date: 2013-02-24 04:16:01

>>> lexical_cast is using math::changesign with long double regardless of
>>> whether BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS is defined or not. This
>>> is causing Boost.Test build problems (see here
>>> ).
>>> I'm pretty sure this is a bug in lexical_cast, so I've opened a ticket:
> So, portable way of changing sign is just to multiply on -1 ?

Doesn't work for NaN's if you care about that (probably not in this case?)

> And math::isnan I shall change to value != value ?

That doesn't always work, actually it quite often doesn't work, especially
in release mode.

> And math::isinf to something like value >= numeric_limits<>::max?

Make that fabs(value) > numeric_limits<>::max and it should work - unless of
course the system has no (reliable) long double math functions in which case
fabs(double) may be called rather than a true fabs(long double), and you may
get spurious overflow (finite long double treated as non-finite double).

Fun isn't it? :-(


Boost list run by bdawes at, gregod at, cpdaniel at, john at