Boost C++ Libraries: Ticket #6459: long double functions not built on Linux ARM https://svn.boost.org/trac10/ticket/6459 <p> On Linux on ARM (with GNU libc in any case), the semantics of <span class="underline">NO_LONG_DOUBLE_MATH seem to be that there's no distinct bit width for variables of long double type. The prototypes of impacted functions (asinhl etc.) are still visible, but they are aliased to their "plain" variant. The syntax for "long double" was present since the first version of both C and C++ standards, so the prototypes are just always visible, and </span>NO_LONG_DOUBLE_MATH only determines whether long double has a distinct bit width, i.e. whether a distinct set of _implementations_ is necessary. </p> <p> On boost side, BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS seems to be defined on targets where compiler or system libraries are buggy or the syntax is missing altogether, but it's apparently also used in the same sense as above ("Dinkumware's std C lib doesn't have true long double precision"). </p> <p> I don't think it is right to omit long double functions just because long double doesn't provide the extra accuracy. I understand that you would want to skip this on targets where stuff gets miscompiled or similar. But ARM implementation is correct, it just happens to have "double" and "long double" of the same length. The code using long double can be compiled and works as expected. It seems correct to simply ignore the value of <span class="underline">NO_LONG_DOUBLE_MATH and build long double functions unless it's known-broken. </span></p> <p> It's possible that I don't see some other motivation, but I didn't really find much data about this. FWIW, the test_tr1.cpp passes on ARM. </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/6459 Trac 1.4.3 Petr Machata <pmachata@…> Fri, 27 Jan 2012 15:26:48 GMT attachment set https://svn.boost.org/trac10/ticket/6459 https://svn.boost.org/trac10/ticket/6459 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">boost-1.48.0-long-double.patch</span> </li> </ul> Ticket John Maddock Sat, 28 Jan 2012 19:13:47 GMT status changed; resolution set https://svn.boost.org/trac10/ticket/6459#comment:1 https://svn.boost.org/trac10/ticket/6459#comment:1 <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> (In <a class="changeset" href="https://svn.boost.org/trac10/changeset/76764" title="Don't be too quick to disable long double functions if ...">[76764]</a>) Don't be too quick to disable long double functions if <span class="underline">NO_LONG_DOUBLE_MATH is set by GLIBC. Fixes <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/6459" title="#6459: Bugs: long double functions not built on Linux ARM (closed: fixed)">#6459</a>. </span></p> Ticket