<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 &lt;boost/math/special_functions/modf.hpp&gt;<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&#39;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&amp;t=133404&amp;p=359710#p359710">https://forum.kde.org/viewtopic.php?f=74&amp;t=133404&amp;p=359710#p359710</a></div><div class="gmail_extra"><br></div><div class="gmail_extra">Here&#39;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 (&#39;int&#39; and &#39;typename</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      enable_if_c&lt;number_category&lt;detail::expression&lt;function, log10_funct&lt;mpfr_float_backend&lt;0, allocate_dynamic&gt; &gt;, number&lt;mpfr_float_backend&lt;0,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      allocate_dynamic&gt;, boost::multiprecision::expression_template_option::et_on&gt;, void, void&gt; &gt;::value == number_kind_floating_point,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      detail::expression&lt;detail::function, detail::floor_funct&lt;typename detail::backend_type&lt;detail::expression&lt;function,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      log10_funct&lt;mpfr_float_backend&lt;0, allocate_dynamic&gt; &gt;, number&lt;mpfr_float_backend&lt;0, allocate_dynamic&gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::expression_template_option::et_on&gt;, void, void&gt; &gt;::type&gt;, detail::expression&lt;function, log10_funct&lt;mpfr_float_backend&lt;0,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      allocate_dynamic&gt; &gt;, number&lt;mpfr_float_backend&lt;0, allocate_dynamic&gt;, boost::multiprecision::expression_template_option::et_on&gt;, void, void&gt; &gt;</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      &gt;::type&#39; (aka &#39;boost::multiprecision::detail::expression&lt;boost::multiprecision::detail::function,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::detail::floor_funct&lt;boost::multiprecision::backends::mpfr_float_backend&lt;0, allocate_dynamic&gt; &gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::detail::expression&lt;boost::multiprecision::detail::function,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::detail::log10_funct&lt;boost::multiprecision::backends::mpfr_float_backend&lt;0, allocate_dynamic&gt; &gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::number&lt;boost::multiprecision::backends::mpfr_float_backend&lt;0, allocate_dynamic&gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::expression_template_option::et_on&gt;, void, void&gt;, void, void&gt;&#39;))</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">      &#39;boost::spirit::karma::real_policies&lt;boost::multiprecision::number&lt;boost::multiprecision::backends::mpfr_float_backend&lt;0, allocate_dynamic&gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::expression_template_option::et_on&gt;</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      &gt;::fraction_part&lt;boost::spirit::karma::detail::output_iterator&lt;std::__1::back_insert_iterator&lt;std::__1::basic_string&lt;char&gt; &gt;, mpl_::int_&lt;0&gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::spirit::unused_type&gt; &gt;&#39; requested here</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">            r = r &amp;&amp; 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">      &#39;boost::spirit::karma::real_inserter&lt;boost::multiprecision::number&lt;boost::multiprecision::backends::mpfr_float_backend&lt;0, allocate_dynamic&gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::expression_template_option::et_on&gt;, bertini::generators::BertiniNumPolicy&lt;mpfr_float&gt;, boost::spirit::unused_type,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::spirit::unused_type&gt;::call_n&lt;boost::spirit::karma::detail::output_iterator&lt;std::__1::back_insert_iterator&lt;std::__1::basic_string&lt;char&gt; &gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      mpl_::int_&lt;0&gt;, boost::spirit::unused_type&gt;, boost::multiprecision::number&lt;boost::multiprecision::backends::mpfr_float_backend&lt;0, allocate_dynamic&gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::expression_template_option::et_on&gt; &gt;&#39; 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">      &#39;boost::spirit::karma::real_policies&lt;boost::multiprecision::number&lt;boost::multiprecision::backends::mpfr_float_backend&lt;0, allocate_dynamic&gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::expression_template_option::et_on&gt;</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      &gt;::call&lt;boost::spirit::karma::real_inserter&lt;boost::multiprecision::number&lt;boost::multiprecision::backends::mpfr_float_backend&lt;0, allocate_dynamic&gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::expression_template_option::et_on&gt;, bertini::generators::BertiniNumPolicy&lt;mpfr_float&gt;, boost::spirit::unused_type,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::spirit::unused_type&gt;, boost::spirit::karma::detail::output_iterator&lt;std::__1::back_insert_iterator&lt;std::__1::basic_string&lt;char&gt; &gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      mpl_::int_&lt;0&gt;, boost::spirit::unused_type&gt;, bertini::generators::BertiniNumPolicy&lt;mpfr_float&gt; &gt;&#39; requested here</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">            return p.template call&lt;real_inserter&gt;(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">      &#39;boost::spirit::karma::real_inserter&lt;boost::multiprecision::number&lt;boost::multiprecision::backends::mpfr_float_backend&lt;0, allocate_dynamic&gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::expression_template_option::et_on&gt;, bertini::generators::BertiniNumPolicy&lt;mpfr_float&gt;, boost::spirit::unused_type,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::spirit::unused_type&gt;::call&lt;boost::spirit::karma::detail::output_iterator&lt;std::__1::back_insert_iterator&lt;std::__1::basic_string&lt;char&gt; &gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      mpl_::int_&lt;0&gt;, boost::spirit::unused_type&gt;, boost::multiprecision::number&lt;boost::multiprecision::backends::mpfr_float_backend&lt;0, allocate_dynamic&gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::expression_template_option::et_on&gt; &gt;&#39; requested here</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">            return inserter_type::call(sink, traits::extract_from&lt;T&gt;(attr, context), p_) &amp;&amp;</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">      &#39;boost::spirit::karma::any_real_generator&lt;boost::multiprecision::number&lt;boost::multiprecision::backends::mpfr_float_backend&lt;0, allocate_dynamic&gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::expression_template_option::et_on&gt;, bertini::generators::BertiniNumPolicy&lt;mpfr_float&gt;, boost::spirit::unused_type,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::spirit::unused_type&gt;::generate&lt;boost::spirit::karma::detail::output_iterator&lt;std::__1::back_insert_iterator&lt;std::__1::basic_string&lt;char&gt; &gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      mpl_::int_&lt;0&gt;, boost::spirit::unused_type&gt;, boost::spirit::context&lt;boost::fusion::cons&lt;const</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::number&lt;boost::multiprecision::backends::mpfr_float_backend&lt;0, allocate_dynamic&gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::expression_template_option::et_on&gt; &amp;, boost::fusion::nil_&gt;, boost::spirit::locals&lt;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&gt; &gt;, boost::spirit::unused_type,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::number&lt;boost::multiprecision::backends::mpfr_float_backend&lt;0, allocate_dynamic&gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::expression_template_option::et_on&gt; &gt;&#39; requested here</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">        return compile&lt;karma::domain&gt;(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">      &#39;boost::spirit::karma::generate&lt;std::__1::back_insert_iterator&lt;std::__1::basic_string&lt;char&gt; &gt;, mpl_::int_&lt;0&gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::spirit::karma::real_generator&lt;boost::multiprecision::number&lt;boost::multiprecision::backends::mpfr_float_backend&lt;0, allocate_dynamic&gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::expression_template_option::et_on&gt;, bertini::generators::BertiniNumPolicy&lt;mpfr_float&gt; &gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::number&lt;boost::multiprecision::backends::mpfr_float_backend&lt;0, allocate_dynamic&gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::expression_template_option::et_on&gt; &gt;&#39; 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">      &#39;boost::spirit::karma::generate&lt;std::__1::back_insert_iterator&lt;std::__1::basic_string&lt;char&gt; &gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::spirit::karma::real_generator&lt;boost::multiprecision::number&lt;boost::multiprecision::backends::mpfr_float_backend&lt;0, allocate_dynamic&gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::expression_template_option::et_on&gt;, bertini::generators::BertiniNumPolicy&lt;mpfr_float&gt; &gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::number&lt;boost::multiprecision::backends::mpfr_float_backend&lt;0, allocate_dynamic&gt;,</font></div><div class="gmail_extra"><font face="monospace, monospace" size="1">      boost::multiprecision::expression_template_option::et_on&gt; &gt;&#39; 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">      &#39;bertini::generators::Classic::generate&lt;std::__1::back_insert_iterator&lt;std::__1::basic_string&lt;char&gt; &gt; &gt;&#39; 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&#39;s the generator code so far:</div><div><br></div><div><div><font face="monospace, monospace" size="1">template &lt;typename Num&gt;</font></div><div><font face="monospace, monospace" size="1">struct BertiniNumPolicy : public karma::real_policies&lt;Num&gt;</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&lt;Num&gt;::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&lt;&gt;</font></div><div><font face="monospace, monospace" size="1">struct BertiniNumPolicy&lt;mpfr_float&gt;  : public karma::real_policies&lt;mpfr_float&gt;</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&amp; 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&lt;typename Num&gt;</font></div><div><font face="monospace, monospace" size="1">using FullPrec = boost::spirit::karma::real_generator&lt;Num, BertiniNumPolicy&lt;Num&gt; &gt;;</font></div><div><font face="monospace, monospace" size="1"><br></font></div><div><font face="monospace, monospace" size="1">FullPrec&lt;double&gt; const full_prec_d = FullPrec&lt;double&gt;();</font></div><div><font face="monospace, monospace" size="1">FullPrec&lt;mpfr_float&gt; const full_prec_mp = FullPrec&lt;mpfr_float&gt;();</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 &lt;typename OutputIterator&gt;</font></div><div><font face="monospace, monospace" size="1">static bool generate(OutputIterator sink, mpfr_float const&amp; 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&lt;mpfr_float&gt;</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&#39;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&lt;...&gt; from Multiprecision, but it seems like since this type is numeric, I&#39;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: &quot;Paul A. Bristow&quot; &lt;<a href="mailto:pbristow@hetp.u-net.com">pbristow@hetp.u-net.com</a>&gt;<br>To: &lt;<a href="mailto:boost-users@lists.boost.org">boost-users@lists.boost.org</a>&gt;<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 &lt;boost/math/special_functions/modf.hpp&gt;<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:&quot;courier new&quot;;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>