Boost C++ Libraries: Ticket #13508: Errors compiling float128.h on windows with icc 17.0 and MSVC 14.11 toolchain https://svn.boost.org/trac10/ticket/13508 <p> The example code from the help here <a class="ext-link" href="https://www.boost.org/doc/libs/1_66_0/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/float128.html"><span class="icon">​</span>https://www.boost.org/doc/libs/1_66_0/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/float128.html</a> cannot be compiled on windows using intel compiler version 17.0.6 and MSVC v14.11 toolchain. The errors reported are: </p> <pre class="wiki">1&gt;G:\Libraries\boost_1_66_0\boost/multiprecision/float128.hpp(487): error : identifier "fmaq" is undefined 1&gt; result.value() = fmaq(a.value(), b.value(), c.value()); 1&gt; ^ 1&gt; 1&gt;G:\Libraries\boost_1_66_0\boost/multiprecision/float128.hpp(492): error : the global scope has no "signbitq" 1&gt; return ::signbitq(arg.value()); 1&gt; ^ 1&gt; 1&gt;G:\Libraries\boost_1_66_0\boost/multiprecision/float128.hpp(556): error : the global scope has no "copysignq" 1&gt; return ::copysignq(a.backend().value(), b.backend().value()); 1&gt; ^ 1&gt; 1&gt;G:\Libraries\boost_1_66_0\boost/multiprecision/float128.hpp(561): error : identifier "remainderq" is undefined 1&gt; result.value() = remainderq(a.value(), b.value()); 1&gt; ^ 1&gt; 1&gt;G:\Libraries\boost_1_66_0\boost/multiprecision/float128.hpp(565): error : identifier "remquoq" is undefined 1&gt; result.value() = remquoq(a.value(), b.value(), pi); 1&gt; ^ </pre><p> Please note that newer MSVC toolchain versions seem to break the intel compiler (and the default version for MS2017 is newer), while for icc 18.0 one needs to remove -Za or the /permissive- options as they also need to problems with the compilation. </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/13508 Trac 1.4.3 John Maddock Mon, 02 Apr 2018 17:19:00 GMT <link>https://svn.boost.org/trac10/ticket/13508#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/13508#comment:1</guid> <description> <p> Unfortunately, that configuration has dropped off our testing radar... can you tell me if the patch below fixes things? </p> <pre class="wiki"> include/boost/multiprecision/float128.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/boost/multiprecision/float128.hpp b/include/boost/multiprecision/float128.hpp index a729523..095634f 100644 --- a/include/boost/multiprecision/float128.hpp +++ b/include/boost/multiprecision/float128.hpp @@ -482,15 +482,16 @@ inline void eval_atan2(float128_backend&amp; result, const float128_backend&amp; a, cons { result.value() = atan2q(a.value(), b.value()); } +#ifndef BOOST_MP_USE_QUAD inline void eval_multiply_add(float128_backend&amp; result, const float128_backend&amp; a, const float128_backend&amp; b, const float128_backend&amp; c) { result.value() = fmaq(a.value(), b.value(), c.value()); } - inline int eval_signbit BOOST_PREVENT_MACRO_SUBSTITUTION(const float128_backend&amp; arg) { return ::signbitq(arg.value()); } +#endif inline std::size_t hash_value(const float128_backend&amp; val) { @@ -550,6 +551,7 @@ inline std::size_t hash_value(const float128_backend&amp; val) return log1pq(arg.backend().value()); } +#ifndef BOOST_MP_USE_QUAD template &lt;multiprecision::expression_template_option ExpressionTemplates&gt; inline boost::multiprecision::number&lt;boost::multiprecision::backends::float128_backend, ExpressionTemplates&gt; copysign BOOST_PREVENT_MACRO_SUBSTITUTION(const boost::multiprecision::number&lt;boost::multiprecision::backends::float128_backend, ExpressionTemplates&gt;&amp; a, const boost::multiprecision::number&lt;boost::multiprecision::backends::float128_backend, ExpressionTemplates&gt;&amp; b) { @@ -564,6 +566,7 @@ inline std::size_t hash_value(const float128_backend&amp; val) { result.value() = remquoq(a.value(), b.value(), pi); } +#endif } // namespace multiprecision </pre> </description> <category>Ticket</category> </item> <item> <author>Metodi Nikolov <metodi.nikolov@…></author> <pubDate>Tue, 03 Apr 2018 11:27:01 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/13508#comment:2 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/13508#comment:2</guid> <description> <p> Hi, </p> <p> yes, I can confirm that the patch fixes the errors I was seeing. (side note, in the spirit of full transparency, I couldn't get git to apply the patch, almost sure it is because of copying from the web to a file and windows messing the line endings. The four inclusions were done by hand) </p> <p> Thanks a lot. </p> <p> Best, </p> </description> <category>Ticket</category> </item> <item> <dc:creator>John Maddock</dc:creator> <pubDate>Tue, 03 Apr 2018 17:28:26 GMT</pubDate> <title>status changed; resolution set https://svn.boost.org/trac10/ticket/13508#comment:3 https://svn.boost.org/trac10/ticket/13508#comment:3 <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> Thanks, fixed in develop. </p> Ticket