<div dir="ltr">Paul, Boost,<div><br></div><div>Thanks for the quick reply! </div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><span style="font-family:calibri,sans-serif;color:rgb(31,73,125)">I haven’t looked into this in detail, but I think not,</span><span style="font-family:calibri,sans-serif;color:rgb(31,73,125)"><br></span><span style="font-family:calibri,sans-serif;color:rgb(31,73,125)">but Boost.Math does<br></span><span style="font-family:calibri,sans-serif;color:rgb(31,73,125)"> <br></span><span style="font-family:calibri,sans-serif;color:rgb(31,73,125)">#include <boost/math/special_functions/modf.hpp><br></span><span style="font-family:calibri,sans-serif;color:rgb(31,73,125)"> <br></span><span style="font-family:calibri,sans-serif;color:rgb(31,73,125)">You might also need to add this to your local function(s) to aid Argument Dependant Lookup (ADL).<br></span><span style="font-family:calibri,sans-serif;color:rgb(31,73,125)"> <br></span><span style="font-family:calibri,sans-serif;color:rgb(31,73,125)">BOOST_MATH_STD_USING</span></blockquote><p class="gmail-MsoNormal">Boost.Math and the BOOST_MATH_STD_USING solved the modf problem, so long as I include and using before including Karma. </p></div><div>Since the compiler got past that, it generated a new error, related to log10, floor, and int comparison. I've had errors related to log10, floor, and ceil in the context of Eigen before. /u/ggael resolved them by explicit casting in certain places, see e.g. <a href="https://forum.kde.org/viewtopic.php?f=74&t=133404&p=359710#p359710">https://forum.kde.org/viewtopic.php?f=74&t=133404&p=359710#p359710</a></div><div class="gmail_extra"><br></div><div class="gmail_extra">Here's the new error message:</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra"><div class="gmail_extra"><font face="monospace, monospace" size="1">In file included from test/generating/mpfr_float.cpp:27:</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">In file included from ./include/bertini2/io/generators.hpp:44:</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">In file included from /usr/local/include/boost/spirit/include/karma.hpp:16:</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">In file included from /usr/local/include/boost/spirit/home/karma.hpp:15:</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">In file included from /usr/local/include/boost/spirit/home/karma/numeric.hpp:16:</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">In file included from /usr/local/include/boost/spirit/home/karma/numeric/real.hpp:32:</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">/usr/local/include/boost/spirit/home/karma/numeric/real_policies.hpp:263:39: error: incompatible operand types ('int' and 'typename</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> enable_if_c<number_category<detail::expression<function, log10_funct<mpfr_float_backend<0, allocate_dynamic> >, number<mpfr_float_backend<0,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> allocate_dynamic>, boost::multiprecision::expression_template_option::et_on>, void, void> >::value == number_kind_floating_point,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> detail::expression<detail::function, detail::floor_funct<typename detail::backend_type<detail::expression<function,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> log10_funct<mpfr_float_backend<0, allocate_dynamic> >, number<mpfr_float_backend<0, allocate_dynamic>,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::expression_template_option::et_on>, void, void> >::type>, detail::expression<function, log10_funct<mpfr_float_backend<0,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> allocate_dynamic> >, number<mpfr_float_backend<0, allocate_dynamic>, boost::multiprecision::expression_template_option::et_on>, void, void> ></font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> >::type' (aka 'boost::multiprecision::detail::expression<boost::multiprecision::detail::function,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::detail::floor_funct<boost::multiprecision::backends::mpfr_float_backend<0, allocate_dynamic> >,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::detail::expression<boost::multiprecision::detail::function,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::detail::log10_funct<boost::multiprecision::backends::mpfr_float_backend<0, allocate_dynamic> >,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<0, allocate_dynamic>,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::expression_template_option::et_on>, void, void>, void, void>'))</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> (traits::test_zero(n) ? 0 : floor(log10(n))) + 1;</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> ^ ~ ~~~~~~~~~~~~~~~</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">/usr/local/include/boost/spirit/home/karma/numeric/detail/real_utils.hpp:170:24: note: in instantiation of function template specialization</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> 'boost::spirit::karma::real_policies<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<0, allocate_dynamic>,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::expression_template_option::et_on></font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> >::fraction_part<boost::spirit::karma::detail::output_iterator<std::__1::back_insert_iterator<std::__1::basic_string<char> >, mpl_::int_<0>,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::spirit::unused_type> >' requested here</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> r = r && p.fraction_part(sink, long_frac_part, prec, precision);</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> ^</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">/usr/local/include/boost/spirit/home/karma/numeric/real_policies.hpp:94:30: note: in instantiation of function template specialization</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> 'boost::spirit::karma::real_inserter<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<0, allocate_dynamic>,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::expression_template_option::et_on>, bertini::generators::BertiniNumPolicy<mpfr_float>, boost::spirit::unused_type,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::spirit::unused_type>::call_n<boost::spirit::karma::detail::output_iterator<std::__1::back_insert_iterator<std::__1::basic_string<char> >,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> mpl_::int_<0>, boost::spirit::unused_type>, boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<0, allocate_dynamic>,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::expression_template_option::et_on> >' requested here</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> return Inserter::call_n(sink, n, p);</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> ^</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">/usr/local/include/boost/spirit/home/karma/numeric/detail/real_utils.hpp:56:31: note: in instantiation of function template specialization</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> 'boost::spirit::karma::real_policies<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<0, allocate_dynamic>,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::expression_template_option::et_on></font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> >::call<boost::spirit::karma::real_inserter<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<0, allocate_dynamic>,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::expression_template_option::et_on>, bertini::generators::BertiniNumPolicy<mpfr_float>, boost::spirit::unused_type,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::spirit::unused_type>, boost::spirit::karma::detail::output_iterator<std::__1::back_insert_iterator<std::__1::basic_string<char> >,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> mpl_::int_<0>, boost::spirit::unused_type>, bertini::generators::BertiniNumPolicy<mpfr_float> >' requested here</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> return p.template call<real_inserter>(sink, n, p);</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> ^</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">/usr/local/include/boost/spirit/home/karma/numeric/real.hpp:192:35: note: in instantiation of function template specialization</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> 'boost::spirit::karma::real_inserter<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<0, allocate_dynamic>,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::expression_template_option::et_on>, bertini::generators::BertiniNumPolicy<mpfr_float>, boost::spirit::unused_type,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::spirit::unused_type>::call<boost::spirit::karma::detail::output_iterator<std::__1::back_insert_iterator<std::__1::basic_string<char> >,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> mpl_::int_<0>, boost::spirit::unused_type>, boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<0, allocate_dynamic>,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::expression_template_option::et_on> >' requested here</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> return inserter_type::call(sink, traits::extract_from<T>(attr, context), p_) &&</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> ^</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">/usr/local/include/boost/spirit/home/karma/generate.hpp:69:45: note: in instantiation of function template specialization</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> 'boost::spirit::karma::any_real_generator<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<0, allocate_dynamic>,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::expression_template_option::et_on>, bertini::generators::BertiniNumPolicy<mpfr_float>, boost::spirit::unused_type,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::spirit::unused_type>::generate<boost::spirit::karma::detail::output_iterator<std::__1::back_insert_iterator<std::__1::basic_string<char> >,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> mpl_::int_<0>, boost::spirit::unused_type>, boost::spirit::context<boost::fusion::cons<const</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<0, allocate_dynamic>,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::expression_template_option::et_on> &, boost::fusion::nil_>, boost::spirit::locals<mpl_::na, mpl_::na, mpl_::na, mpl_::na,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na> >, boost::spirit::unused_type,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<0, allocate_dynamic>,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::expression_template_option::et_on> >' requested here</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> return compile<karma::domain>(expr).generate(sink, context, unused, attr);</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> ^</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">/usr/local/include/boost/spirit/home/karma/generate.hpp:91:23: note: in instantiation of function template specialization</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> 'boost::spirit::karma::generate<std::__1::back_insert_iterator<std::__1::basic_string<char> >, mpl_::int_<0>,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::spirit::karma::real_generator<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<0, allocate_dynamic>,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::expression_template_option::et_on>, bertini::generators::BertiniNumPolicy<mpfr_float> >,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<0, allocate_dynamic>,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::expression_template_option::et_on> >' requested here</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> return karma::generate(sink, expr, attr);</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> ^</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">./include/bertini2/io/generators.hpp:153:21: note: in instantiation of function template specialization</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> 'boost::spirit::karma::generate<std::__1::back_insert_iterator<std::__1::basic_string<char> >,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::spirit::karma::real_generator<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<0, allocate_dynamic>,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::expression_template_option::et_on>, bertini::generators::BertiniNumPolicy<mpfr_float> >,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<0, allocate_dynamic>,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> boost::multiprecision::expression_template_option::et_on> >' requested here</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> return generate(sink,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> ^</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">test/generating/mpfr_float.cpp:53:47: note: in instantiation of function template specialization</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> 'bertini::generators::Classic::generate<std::__1::back_insert_iterator<std::__1::basic_string<char> > >' requested here</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1"> BOOST_CHECK(bertini::generators::Classic::generate(sink, z));</font></div><div><br></div></div><div class="gmail_extra"><font face="monospace, monospace" size="1"><br></font></div><div class="gmail_quote"><div>Any help with this one would be greatly appreciated. It feels beyond my diagnosis. It feels to me like I might should feed mpfr_float into Fusion to adapt it, so I can use the type directly with Karma. Here's the generator code so far:</div><div><br></div><div><div><font face="monospace, monospace" size="1">template <typename Num></font></div><div><font face="monospace, monospace" size="1">struct BertiniNumPolicy : public karma::real_policies<Num></font></div><div><font face="monospace, monospace" size="1">{</font></div><div><font face="monospace, monospace" size="1"> // we want the numbers always to be in scientific format</font></div><div><font face="monospace, monospace" size="1"> static int floatfield(Num n) { return std::ios_base::scientific; }</font></div><div><font face="monospace, monospace" size="1"><br></font></div><div><font face="monospace, monospace" size="1"> static unsigned int precision(Num) {</font></div><div><font face="monospace, monospace" size="1"> return std::numeric_limits<Num>::max_digits10;</font></div><div><font face="monospace, monospace" size="1"> }</font></div><div><font face="monospace, monospace" size="1">};</font></div><div><font face="monospace, monospace" size="1"><br></font></div><div><font face="monospace, monospace" size="1">template<></font></div><div><font face="monospace, monospace" size="1">struct BertiniNumPolicy<mpfr_float> : public karma::real_policies<mpfr_float></font></div><div><font face="monospace, monospace" size="1">{</font></div><div><font face="monospace, monospace" size="1"> // we want the numbers always to be in scientific format</font></div><div><font face="monospace, monospace" size="1"> static int floatfield(mpfr_float n) { return std::ios_base::scientific; }</font></div><div><font face="monospace, monospace" size="1"><br></font></div><div><font face="monospace, monospace" size="1"> static unsigned int precision(mpfr_float const& x) {</font></div><div><font face="monospace, monospace" size="1"> return x.precision();</font></div><div><font face="monospace, monospace" size="1"> }</font></div><div><font face="monospace, monospace" size="1">};</font></div></div><div><font face="monospace, monospace" size="1"><br></font></div><div><font face="monospace, monospace" size="1"><br></font></div><div><div><font face="monospace, monospace" size="1">template<typename Num></font></div><div><font face="monospace, monospace" size="1">using FullPrec = boost::spirit::karma::real_generator<Num, BertiniNumPolicy<Num> >;</font></div><div><font face="monospace, monospace" size="1"><br></font></div><div><font face="monospace, monospace" size="1">FullPrec<double> const full_prec_d = FullPrec<double>();</font></div><div><font face="monospace, monospace" size="1">FullPrec<mpfr_float> const full_prec_mp = FullPrec<mpfr_float>();</font></div></div><div><font face="monospace, monospace" size="1"><br></font></div><div><font face="monospace, monospace" size="1"><br></font></div><div><div><font face="monospace, monospace" size="1">template <typename OutputIterator></font></div><div><font face="monospace, monospace" size="1">static bool generate(OutputIterator sink, mpfr_float const& c)</font></div><div><font face="monospace, monospace" size="1">{</font></div><div><span style="font-family:monospace,monospace;font-size:x-small"> using boost::spirit::karma::generate;</span><br></div><div><font face="monospace, monospace" size="1"><br></font></div><div><font face="monospace, monospace" size="1"> return generate(sink,</font></div><div><font face="monospace, monospace" size="1"><br></font></div><div><font face="monospace, monospace" size="1"> // Begin grammar</font></div><div><font face="monospace, monospace" size="1"> (</font></div><div><font face="monospace, monospace" size="1"> full_prec_mp</font></div><div><font face="monospace, monospace" size="1"> ),</font></div><div><font face="monospace, monospace" size="1"> // End grammar</font></div><div><font face="monospace, monospace" size="1"><br></font></div><div><font face="monospace, monospace" size="1"> c // Data to output</font></div><div><font face="monospace, monospace" size="1"> );</font></div><div><font face="monospace, monospace" size="1">}</font></div></div><div><br></div><div>As a last question, I am unsure about the use of the a function parameter in my specialization <font face="monospace, monospace">BertiniNumPolicy<mpfr_float></font>, particularly the <font face="monospace, monospace">precision(mpfr_float)</font> function. In the documentation and examples I have seen for specializations, this function doesn't use the argument. Is it ok that it does, that it checks the actual precision of <font face="monospace, monospace">x</font>??? See above code. An alternate method for me might be to just use the <font face="monospace, monospace">str()</font> method provided by the number<...> from Multiprecision, but it seems like since this type is numeric, I'd like to be able to generate using the numeric generators from Karma.</div><div><br></div><div>Thanks again!</div><div><br></div><div>Daniel Brake</div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">---------- Forwarded message ----------<br>From: "Paul A. Bristow" <<a href="mailto:pbristow@hetp.u-net.com">pbristow@hetp.u-net.com</a>><br>To: <<a href="mailto:boost-users@lists.boost.org">boost-users@lists.boost.org</a>><br>Cc: <br>Date: Wed, 3 Aug 2016 10:00:20 +0100<br>Subject: Re: [Boost-users] multiprecision modf<br><div lang="EN-GB"><p class="gmail-MsoNormal"><span style="font-family:calibri,sans-serif;color:rgb(31,73,125)">I haven’t looked into this in detail, but I think not, <u></u><u></u></span></p><p class="gmail-MsoNormal"><span style="font-family:calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p><p class="gmail-MsoNormal"><span style="font-family:calibri,sans-serif;color:rgb(31,73,125)">but Boost.Math does<u></u><u></u></span></p><p class="gmail-MsoNormal"><span style="font-family:calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p><p class="gmail-MsoNormal"><span style="font-family:calibri,sans-serif;color:rgb(31,73,125)">#include <boost/math/special_functions/modf.hpp><u></u><u></u></span></p><p class="gmail-MsoNormal"><span style="font-family:calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p><p class="gmail-MsoNormal"><span style="font-family:calibri,sans-serif;color:rgb(31,73,125)">You might also need to add this to your local function(s) to aid Argument Dependant Lookup (ADL).<u></u><u></u></span></p><p class="gmail-MsoNormal"><span style="font-family:calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p><p class="gmail-MsoNormal"><span style="font-family:calibri,sans-serif;color:rgb(31,73,125)">BOOST_MATH_STD_USING<u></u><u></u></span></p><p class="gmail-MsoNormal"><span style="font-family:calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p><p class="gmail-MsoNormal"><span style="font-family:calibri,sans-serif;color:rgb(31,73,125)"><a href="http://www.boost.org/doc/libs/1_61_0/libs/math/doc/html/math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros" target="_blank">http://www.boost.org/doc/libs/1_61_0/libs/math/doc/html/math_toolkit/config_macros.html#math_toolkit.config_macros.boost_math_macros</a><u></u><u></u></span></p><p class="gmail-MsoNormal"><span style="font-family:calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p><p class="gmail-MsoNormal"><b><span style="font-size:10pt;font-family:arial,sans-serif;color:black;background-image:initial;background-color:white;background-position:initial;background-repeat:initial">Table 11. Boost.Math Macros</span></b><span style="font-family:calibri,sans-serif;color:rgb(31,73,125)"><u></u><u></u></span></p><p class="gmail-MsoNormal"><span style="font-family:calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p><p class="gmail-MsoNormal"><span style="font-size:10pt;font-family:arial,sans-serif;color:black;background-image:initial;background-color:white;background-position:initial;background-repeat:initial">“Provides<span> </span></span><span><span style="font-size:10pt;font-family:"courier new";color:rgb(0,0,170);background-image:initial;background-color:white;background-position:initial;background-repeat:initial">using</span></span><span><span style="font-size:10pt;font-family:arial,sans-serif;color:black;background-image:initial;background-color:white;background-position:initial;background-repeat:initial"> </span></span><span style="font-size:10pt;font-family:arial,sans-serif;color:black;background-image:initial;background-color:white;background-position:initial;background-repeat:initial">statements for many std:: (abs to sqrt) and boost::math (rounds, modf) functions. This allows these functions to be called unqualified so that if</span><a href="http://en.wikipedia.org/wiki/Argument-dependent_name_lookup" target="_blank"><span style="font-size:10pt;font-family:arial,sans-serif;color:rgb(156,90,156);background-image:initial;background-color:white;background-position:initial;background-repeat:initial">argument-dependent Argument Dependent Lookup</span></a><span><span style="font-size:10pt;font-family:arial,sans-serif;color:black;background-image:initial;background-color:white;background-position:initial;background-repeat:initial"> </span></span><span style="font-size:10pt;font-family:arial,sans-serif;color:black;background-image:initial;background-color:white;background-position:initial;background-repeat:initial">fails to find a suitable overload, then the std:: versions will also be considered.”<u></u><u></u></span></p><p class="gmail-MsoNormal"><span style="font-size:10pt;font-family:arial,sans-serif;color:black;background-image:initial;background-color:white;background-position:initial;background-repeat:initial"><u></u> <u></u></span></p><p class="gmail-MsoNormal"><span style="font-size:10pt;font-family:arial,sans-serif;color:black;background-image:initial;background-color:white;background-position:initial;background-repeat:initial">HTH<u></u><u></u></span></p><p class="gmail-MsoNormal"><span style="font-size:10pt;font-family:arial,sans-serif;color:black;background-image:initial;background-color:white;background-position:initial;background-repeat:initial"><u></u> <u></u></span></p><p class="gmail-MsoNormal"><span style="font-size:10pt;font-family:arial,sans-serif;color:black;background-image:initial;background-color:white;background-position:initial;background-repeat:initial">Paul</span></p></div></blockquote></div></div></div>