Boost C++ Libraries: Ticket #9087: [boost math] error: no operator "=" matches these operands in roots.hpp (297) https://svn.boost.org/trac10/ticket/9087 <p> I have just installed the Intel 14 C++ compiler and are now unable to build with boost math (everything was fine with previous Intel updates). Wish I can be more helpful but I have only the following error log to share (notice that I am not using the default policies though) ... and this is so even with revision 85588 trunk: </p> <p> --- included log --- </p> <p> /usr/local/include/boost/math/tools/roots.hpp(297): error: no operator "=" matches these operands </p> <blockquote> <p> operand types are: std::tuple&lt;long double &amp;, long double &amp;, long double &amp;&gt; = std::tuple&lt;long double, long double, long double&gt; </p> </blockquote> <blockquote> <p> boost::math::tie(f0, f1, f2) = f(result); </p> <blockquote> <p> <sup> </sup></p> </blockquote> <p> detected during: </p> <blockquote> <p> instantiation of "T boost::math::tools::halley_iterate(F, T, T, T, int, uintmax_t={unsigned long} &amp;) [with F=boost::math::detail::gamma_p_inverse_func&lt;long double, boost::math::policies::policy&lt;boost::math::policies::domain_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::pole_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::overflow_error&lt;boost::math::policies::ignore_error&gt;, </p> <blockquote> <p> boost::math::policies::evaluation_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::rounding_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::promote_float&lt;false&gt;, boost::math::policies::promote_double&lt;false&gt;, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy&gt;&gt;, T=long double]" at line 502 of "/usr/local/include/boost/math/special_functions/detail/igamma_inverse.hpp" </p> </blockquote> <p> instantiation of "T boost::math::detail::gamma_q_inv_imp(T, T, const Policy &amp;) [with T=long double, Policy=boost::math::policies::policy&lt;boost::math::policies::domain_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::pole_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::overflow_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::evaluation_error&lt;boost::math::policies::ignore_error&gt;, </p> <blockquote> <p> boost::math::policies::rounding_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::promote_float&lt;false&gt;, boost::math::policies::promote_double&lt;false&gt;, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy&gt;]" at line 528 of "/usr/local/include/boost/math/special_functions/detail/igamma_inverse.hpp" </p> </blockquote> <p> instantiation of "boost::math::tools::promote_args&lt;T1, T2, float, float, float, float&gt;::type boost::math::gamma_q_inv(T1, T2, const Policy &amp;) [with T1=long double, T2=long double, Policy=boost::math::policies::policy&lt;boost::math::policies::domain_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::pole_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::overflow_error&lt;boost::math::policies::ignore_error&gt;, </p> <blockquote> <p> boost::math::policies::evaluation_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::rounding_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::promote_float&lt;false&gt;, boost::math::policies::promote_double&lt;false&gt;, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy&gt;]" at line 325 of "/usr/local/include/boost/math/special_functions/detail/ibeta_inverse.hpp" </p> </blockquote> <p> instantiation of "T boost::math::detail::temme_method_3_ibeta_inverse(T, T, T, T, const Policy &amp;) [with T=long double, Policy=boost::math::policies::policy&lt;boost::math::policies::domain_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::pole_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::overflow_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::evaluation_error&lt;boost::math::policies::ignore_error&gt;, </p> <blockquote> <p> boost::math::policies::rounding_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::promote_float&lt;false&gt;, boost::math::policies::promote_double&lt;false&gt;, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy&gt;]" at line 598 of "/usr/local/include/boost/math/special_functions/detail/ibeta_inverse.hpp" </p> </blockquote> <p> instantiation of "T boost::math::detail::ibeta_inv_imp(T, T, T, T, const Policy &amp;, T *) [with T=long double, Policy=boost::math::policies::policy&lt;boost::math::policies::domain_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::pole_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::overflow_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::evaluation_error&lt;boost::math::policies::ignore_error&gt;, </p> <blockquote> <p> boost::math::policies::rounding_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::promote_float&lt;false&gt;, boost::math::policies::promote_double&lt;false&gt;, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy&gt;]" at line 852 of "/usr/local/include/boost/math/special_functions/detail/ibeta_inverse.hpp" </p> </blockquote> <p> instantiation of "boost::math::tools::promote_args&lt;T1, T2, T3, T4, float, float&gt;::type boost::math::ibeta_inv(T1, T2, T3, T4 *, const Policy &amp;) [with T1=double, T2=double, T3=double, T4=double, Policy=psu::dist::psu_boost_policy]" at line 487 of "/usr/local/include/boost/math/distributions/beta.hpp" instantiation of "<a class="missing wiki">RealType</a> boost::math::quantile(const boost::math::beta_distribution&lt;<a class="missing wiki">RealType</a>, Policy&gt; &amp;, const <a class="missing wiki">RealType</a> &amp;) [with <a class="missing wiki">RealType</a>=double, Policy=psu::dist::psu_boost_policy]" at line 114 of "../../../psu/boost/beta.cc" </p> </blockquote> </blockquote> <p> /usr/local/include/boost/math/tools/roots.hpp(297): error: no operator "=" matches these operands </p> <blockquote> <p> operand types are: std::tuple&lt;long double &amp;, long double &amp;, long double &amp;&gt; = std::tuple&lt;long double, long double, long double&gt; </p> </blockquote> <blockquote> <p> boost::math::tie(f0, f1, f2) = f(result); </p> <blockquote> <p> <sup> </sup></p> </blockquote> <p> detected during: </p> <blockquote> <p> instantiation of "T boost::math::tools::halley_iterate(F, T, T, T, int, uintmax_t={unsigned long} &amp;) [with F=boost::math::detail::ibeta_roots&lt;long double, boost::math::policies::policy&lt;boost::math::policies::domain_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::pole_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::overflow_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::evaluation_error&lt;boost::math::policies::ignore_error&gt;, </p> <blockquote> <p> boost::math::policies::rounding_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::promote_float&lt;false&gt;, boost::math::policies::promote_double&lt;false&gt;, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy&gt;&gt;, T=long double]" at line 803 of "/usr/local/include/boost/math/special_functions/detail/ibeta_inverse.hpp" </p> </blockquote> <p> instantiation of "T boost::math::detail::ibeta_inv_imp(T, T, T, T, const Policy &amp;, T *) [with T=long double, Policy=boost::math::policies::policy&lt;boost::math::policies::domain_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::pole_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::overflow_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::evaluation_error&lt;boost::math::policies::ignore_error&gt;, </p> <blockquote> <p> boost::math::policies::rounding_error&lt;boost::math::policies::ignore_error&gt;, boost::math::policies::promote_float&lt;false&gt;, boost::math::policies::promote_double&lt;false&gt;, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy&gt;]" at line 852 of "/usr/local/include/boost/math/special_functions/detail/ibeta_inverse.hpp" </p> </blockquote> <p> instantiation of "boost::math::tools::promote_args&lt;T1, T2, T3, T4, float, float&gt;::type boost::math::ibeta_inv(T1, T2, T3, T4 *, const Policy &amp;) [with T1=double, T2=double, T3=double, T4=double, Policy=psu::dist::psu_boost_policy]" at line 487 of "/usr/local/include/boost/math/distributions/beta.hpp" instantiation of "<a class="missing wiki">RealType</a> boost::math::quantile(const boost::math::beta_distribution&lt;<a class="missing wiki">RealType</a>, Policy&gt; &amp;, const <a class="missing wiki">RealType</a> &amp;) [with <a class="missing wiki">RealType</a>=double, Policy=psu::dist::psu_boost_policy]" at line 114 of "../../../psu/boost/beta.cc" </p> </blockquote> </blockquote> <p> --- end of included log --- </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/9087 Trac 1.4.3 anonymous Sun, 08 Sep 2013 11:11:37 GMT <link>https://svn.boost.org/trac10/ticket/9087#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/9087#comment:1</guid> <description> <p> It looks to be OK with Intel 14 on Win32... this is in C++11 mode right? Can you try the reduced test case: </p> <pre class="wiki">#include &lt;tuple&gt; std::tuple&lt;double, double&gt; f() { return std::make_tuple(1.0, 2.0); } int main() { double a, b; std::tie(a, b) = f(); } </pre><p> Thanks, John. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>John Maddock</dc:creator> <pubDate>Sun, 08 Sep 2013 16:58:10 GMT</pubDate> <title>status changed; resolution set https://svn.boost.org/trac10/ticket/9087#comment:2 https://svn.boost.org/trac10/ticket/9087#comment:2 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">fixed</span> </li> </ul> <p> Update: I managed to get Intel-14 on Linux installed and the above test case compiles OK, but fails if you increase the tuple to 3 arguments. Filed as Intel issue 6000026407. </p> <p> A workaround is to define BOOST_NO_CXX11_HDR_TUPLE - that's the fix I've committed to Boost.Config. </p> Ticket anonymous Mon, 09 Sep 2013 06:28:12 GMT <link>https://svn.boost.org/trac10/ticket/9087#comment:3 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/9087#comment:3</guid> <description> <p> Dear John, </p> <p> Thank you very much for locating the problem and putting out a workaround! And I am sorry to have made you work over the weekend! Thank you! </p> <p> With best regards, HS </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Tue, 10 Sep 2013 11:12:58 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/9087#comment:4 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/9087#comment:4</guid> <description> <p> I've heard back from Intel - the test case works when Intel C++ 14 is on top of gcc-4.7.2 but not 4.6. </p> <p> HTH, John. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Thu, 12 Sep 2013 20:22:31 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/9087#comment:5 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/9087#comment:5</guid> <description> <p> Dear John, </p> <p> Thank you very much for the information. I actually have another issue (see code below) using -std=c++11 on the non_central_chi_squared: </p> <p> terminate called after throwing an instance of 'boost::exception_detail::clone_impl&lt;boost::exception_detail::error_info_injector&lt;boost::math::evaluation_error&gt; &gt;' </p> <blockquote> <p> what(): Error in function boost::math::tools::bracket_and_solve_root&lt;e&gt;: Unable to bracket root, last nearest value was 1.65974387253907228676e-331 Abort (core dumped) </p> </blockquote> <p> which I built with Intel 13 and GCC 4.6.3: </p> <pre class="wiki">icpc --version icpc (ICC) 13.1.3 20130607 g++ --version g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 </pre><p> The current trunk (revision 85656) also fails ... 5.39163355658688321214e+330 was the last nearest value though. </p> <p> So I decided to go ahead and upgrade to Intel 14 (again) and the GCC toolchain (to 4.7): </p> <pre class="wiki">icpc --version icpc (ICC) 14.0.0 20130728 g++ --version g++ (Ubuntu/Linaro 4.7.3-2ubuntu1~12.04) 4.7.3 </pre><p> I have no problem building my original case now. However, I am unable to link ... got this "undefined reference to `<span class="underline">builtin_signbit'" message. </span></p> <p> Interestingly, the example </p> <pre class="wiki"> #include &lt;cstdio&gt; #include &lt;boost/math/distributions.hpp&gt; int main() { boost::math::non_central_chi_squared_distribution&lt;&gt; _dist( 3.0, 1.0 ); std::printf( " \nquantile(non_central_chi_squared(3,1),0.1) = %f\n", boost::math::quantile( _dist, 0.1 ) ); return 0; } </pre><p> which gave me that runtime exception above, also fails to build with the same message: undefined reference to `<span class="underline">builtin_signbit'. </span></p> <p> Do you have any insight here? Maybe this is a problem with the Intel compiler again. :( </p> <p> With best regards, HS </p> </description> <category>Ticket</category> </item> <item> <dc:creator>John Maddock</dc:creator> <pubDate>Sun, 15 Sep 2013 10:43:12 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/9087#comment:6 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/9087#comment:6</guid> <description> <p> As the error message indicates it means Intel haven't implemented that GCC builtin yet. If you have an Intel support account, I suggest you file a bug report. Otherwise I might get around to it eventually.... </p> </description> <category>Ticket</category> </item> <item> <dc:creator>John Maddock</dc:creator> <pubDate>Sat, 28 Sep 2013 16:19:56 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/9087#comment:7 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/9087#comment:7</guid> <description> <p> (In <a class="changeset" href="https://svn.boost.org/trac10/changeset/85987" title="Merge accumulated patches from Trunk. Refs #8384, Refs #8855, refs ...">[85987]</a>) Merge accumulated patches from Trunk. Refs <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8384" title="#8384: Feature Requests: Make shared_ptr movable (closed: invalid)">#8384</a>, Refs <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8855" title="#8855: Bugs: [math] GCC 4.8+ warns unused local typedef... (closed: fixed)">#8855</a>, refs <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/9107" title="#9107: Bugs: unused parameter warning in fraction with clang (closed: fixed)">#9107</a>, refs <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/9109" title="#9109: Bugs: Warning in bessel with -Wshadow (closed: fixed)">#9109</a>, refs <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8333" title="#8333: Bugs: [math] PGI 11.3 problems (sph_bessel.cpp, sph_bessel.cpp) (closed: fixed)">#8333</a>, refs <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8621" title="#8621: Bugs: erf function gives wrong results with pgcpp - PGI 10.4 (closed: fixed)">#8621</a>, refs <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8732" title="#8732: Bugs: Need to protect calls against C99 math macro expansion (closed: fixed)">#8732</a>, refs <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8733" title="#8733: Feature Requests: Testing for unprotected references to C99 math macros (closed: fixed)">#8733</a>, refs <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8837" title="#8837: Bugs: boost::math::students_t quantile() fails for huge degrees of freedom (closed: fixed)">#8837</a>, refs <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8940" title="#8940: Bugs: Argument promotion fails dependent libs on platforms not supporting ... (closed: fixed)">#8940</a>, refs <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/9042" title="#9042: Bugs: boost::math, cdf(complement(normal_distribution&lt;&gt;(...)) fails to catch ... (closed: fixed)">#9042</a>, refs <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/9087" title="#9087: Support Requests: [boost math] error: no operator &#34;=&#34; matches these operands in ... (closed: fixed)">#9087</a>, refs <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/9104" title="#9104: Bugs: boost::math::ellint_2 bug in x86_64 double precision (closed: fixed)">#9104</a>, refs <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/9126" title="#9126: Bugs: Logistic distribution pdf() and cdf(complement()) fail to catch ... (closed: fixed)">#9126</a>. </p> </description> <category>Ticket</category> </item> </channel> </rss>