Boost logo

Boost :

Subject: Re: [boost] [complex] Feedback and Potential Review Manager
From: Christopher Kormanyos (e_float_at_[hidden])
Date: 2012-05-06 09:37:15


>> I implemented this but it seems to add limitations on the >> types usable. They now require to have an overloaded >> istream extraction operator and a specialization of >> std::numeric_limits. Those two limitations are reasonable >> but I am not certain that we want to impose such conditions >> on the template types. > The requirements are more subtle than that, the logic goes > something like this: > * If there's a numeric_limits specialization: >  * If the precision is less than a float/double/long double, >     and T is constructible from those types, then construct >     from float/double/long double. >  * If the precision is < 100 decimal places: >      * If T is constructible from a const char* then construct >         the constant that way. >      * Use the iostream operator to stream the constant in >         (we could arguably use a trait to check whether this >         is supported before using it as well). >  * Precision > 100 digits - calculate the constant and >     cache the result. > * No numeric_limits - use boost::math::tools::digits<T>() to >    check runtime precision and pick either construct-from >    string or calculate the constant. > There's also a trait class that can be specialized for some type T > to override the above logic. > So you don't have to have either numeric_limits or an > iostream operator, but you have to have *something* > that allows us to get the constant in there. > HTH, John. Thank you, John. @Matthieu: But I believe that this refinement of boost::math::constants is only available in the trunk. So if you would like to take advantage of this policy on mathematical constants, you have to test your <boost/math/complex/complex.hpp> with-respect-to the trunk. Otherwise, you need to make a workaround via providing your own template specializations of pi(), ln2(), ln_10() for now. This is what I did in my code from yesterday for my fixed-point class. Best regards, Chris.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk