72e469da0a
[CI SKIP]
685 lines
18 KiB
HTML
685 lines
18 KiB
HTML
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
|
<title>Compilers</title>
|
|
<link rel="stylesheet" href="../math.css" type="text/css">
|
|
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
|
|
<link rel="home" href="../index.html" title="Math Toolkit 2.11.0">
|
|
<link rel="up" href="../overview.html" title="Chapter 1. Overview">
|
|
<link rel="prev" href="error_handling.html" title="Error Handling">
|
|
<link rel="next" href="config_macros.html" title="Configuration Macros">
|
|
</head>
|
|
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
|
<table cellpadding="2" width="100%"><tr>
|
|
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
|
|
<td align="center"><a href="../../../../../index.html">Home</a></td>
|
|
<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
|
|
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
|
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
|
<td align="center"><a href="../../../../../more/index.htm">More</a></td>
|
|
</tr></table>
|
|
<hr>
|
|
<div class="spirit-nav">
|
|
<a accesskey="p" href="error_handling.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="config_macros.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
|
|
</div>
|
|
<div class="section">
|
|
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
|
<a name="math_toolkit.compilers_overview"></a><a class="link" href="compilers_overview.html" title="Compilers">Compilers</a>
|
|
</h2></div></div></div>
|
|
<p>
|
|
This section contains some information about how various compilers work with
|
|
this library. It is not comprehensive and updated experiences are always welcome.
|
|
Some effort has been made to suppress unhelpful warnings but it is difficult
|
|
to achieve this on all systems.
|
|
</p>
|
|
<div class="table">
|
|
<a name="math_toolkit.compilers_overview.supported_tested_compilers"></a><p class="title"><b>Table 1.9. Supported/Tested Compilers</b></p>
|
|
<div class="table-contents"><table class="table" summary="Supported/Tested Compilers">
|
|
<colgroup>
|
|
<col>
|
|
<col>
|
|
<col>
|
|
<col>
|
|
</colgroup>
|
|
<thead><tr>
|
|
<th>
|
|
<p>
|
|
Platform
|
|
</p>
|
|
</th>
|
|
<th>
|
|
<p>
|
|
Compiler
|
|
</p>
|
|
</th>
|
|
<th>
|
|
<p>
|
|
Has long double support
|
|
</p>
|
|
</th>
|
|
<th>
|
|
<p>
|
|
Notes
|
|
</p>
|
|
</th>
|
|
</tr></thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
Windows
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
MSVC 7.1 and later
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Yes
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
All tests OK.
|
|
</p>
|
|
<p>
|
|
We aim to keep our headers warning free at level 4 with this compiler.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
Windows
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Intel 8.1 and later
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Yes
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
All tests OK.
|
|
</p>
|
|
<p>
|
|
We aim to keep our headers warning free at level 4 with this compiler.
|
|
However, The tests cases tend to generate a lot of warnings relating
|
|
to numeric underflow of the test data: these are harmless.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
Windows
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
GNU Mingw32 C++
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Yes
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
All tests OK.
|
|
</p>
|
|
<p>
|
|
We aim to keep our headers warning free with -Wall with this compiler.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
Windows
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
GNU Cygwin C++
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
No
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
All tests OK.
|
|
</p>
|
|
<p>
|
|
We aim to keep our headers warning free with -Wall with this compiler.
|
|
</p>
|
|
<p>
|
|
Long double support has been disabled because there are no native
|
|
long double C std library functions available.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
Windows
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Borland C++ 5.8.2 (Developer studio 2006)
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
No
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
We have only partial compatibility with this compiler:
|
|
</p>
|
|
<p>
|
|
Long double support has been disabled because the native long double
|
|
C standard library functions really only forward to the double versions.
|
|
This can result in unpredictable behaviour when using the long double
|
|
overloads: for example <code class="computeroutput"><span class="identifier">sqrtl</span></code>
|
|
applied to a finite value, can result in an infinite result.
|
|
</p>
|
|
<p>
|
|
Some functions still fail to compile, there are no known workarounds
|
|
at present.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
Windows 7/Netbeans 7.2
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Clang 3.1
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Yes
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Spot examples OK. Expect all tests to compile and run OK.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
Linux
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
GNU C++ 3.4 and later
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Yes
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
All tests OK.
|
|
</p>
|
|
<p>
|
|
We aim to keep our headers warning free with -Wall with this compiler.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
Linux
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Clang 3.2
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Yes
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
All tests OK.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
Linux
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Intel C++ 10.0 and later
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Yes
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
All tests OK.
|
|
</p>
|
|
<p>
|
|
We aim to keep our headers warning free with -Wall with this compiler.
|
|
However, The tests cases tend to generate a lot of warnings relating
|
|
to numeric underflow of the test data: these are harmless.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
Linux
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Intel C++ 8.1 and 9.1
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
No
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
All tests OK.
|
|
</p>
|
|
<p>
|
|
Long double support has been disabled with these compiler releases
|
|
because calling the standard library long double math functions can
|
|
result in a segfault. The issue is Linux distribution and glibc version
|
|
specific and is Intel bug report #409291. Fully up to date releases
|
|
of Intel 9.1 (post version l_cc_c_9.1.046) shouldn't have this problem.
|
|
If you need long double support with this compiler, then comment
|
|
out the define of BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS at line
|
|
55 of <a href="../../../../../boost/math/tools/config.hpp" target="_top">boost/math/tools/config.hpp</a>.
|
|
</p>
|
|
<p>
|
|
We aim to keep our headers warning free with -Wall with this compiler.
|
|
However, The tests cases tend to generate a lot of warnings relating
|
|
to numeric underflow of the test data: these are harmless.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
Linux
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
QLogic PathScale 3.0
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Yes
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Some tests involving conceptual checks fail to build, otherwise there
|
|
appear to be no issues.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
Linux
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Sun Studio 12
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Yes
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Some tests involving function overload resolution fail to build,
|
|
these issues should be rarely encountered in practice.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
Solaris
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Sun Studio 12
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Yes
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Some tests involving function overload resolution fail to build,
|
|
these issues should be rarely encountered in practice.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
Solaris
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
GNU C++ 4.x
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Yes
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
All tests OK.
|
|
</p>
|
|
<p>
|
|
We aim to keep our headers warning free with -Wall with this compiler.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
HP Tru64
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Compaq C++ 7.1
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Yes
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
All tests OK.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
HP-UX Itanium
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
HP aCC 6.x
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Yes
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
All tests OK.
|
|
</p>
|
|
<p>
|
|
Unfortunately this compiler emits quite a few warnings from libraries
|
|
upon which we depend (TR1, Array etc).
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
HP-UX PA-RISC
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
GNU C++ 3.4
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
No
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
All tests OK.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
Apple Mac OS X, Intel
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Darwin/GNU C++ 4.x
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Yes
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
All tests OK.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
Apple Mac OS X, PowerPC
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Darwin/GNU C++ 4.x
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
No
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
All tests OK.
|
|
</p>
|
|
<p>
|
|
Long double support has been disabled on this platform due to the
|
|
rather strange nature of Darwin's 106-bit long double implementation.
|
|
It should be possible to make this work if someone is prepared to
|
|
offer assistance.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
Apple Mac OS X,
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Clang 3.2
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Yes
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
All tests expected to be OK.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
IBM AIX
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
IBM xlc 5.3
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Yes
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
All tests pass except for our fpclassify tests which fail due to
|
|
a bug in <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>, the bug effects
|
|
the test code, not fpclassify itself. The IBM compiler group are
|
|
aware of the problem.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table></div>
|
|
</div>
|
|
<br class="table-break"><div class="table">
|
|
<a name="math_toolkit.compilers_overview.unsupported_compilers"></a><p class="title"><b>Table 1.10. Unsupported Compilers</b></p>
|
|
<div class="table-contents"><table class="table" summary="Unsupported Compilers">
|
|
<colgroup>
|
|
<col>
|
|
<col>
|
|
</colgroup>
|
|
<thead><tr>
|
|
<th>
|
|
<p>
|
|
Platform
|
|
</p>
|
|
</th>
|
|
<th>
|
|
<p>
|
|
Compiler
|
|
</p>
|
|
</th>
|
|
</tr></thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
Windows
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Borland C++ 5.9.2 (Borland Developer Studio 2007)
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
Windows
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
MSVC 6 and 7
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table></div>
|
|
</div>
|
|
<br class="table-break"><p>
|
|
If your compiler or platform is not listed above, please try running the regression
|
|
tests: cd into boost-root/libs/math/test and do a:
|
|
</p>
|
|
<pre class="programlisting"><span class="identifier">bjam</span> <span class="identifier">mytoolset</span>
|
|
</pre>
|
|
<p>
|
|
where "mytoolset" is the name of the <a href="http://www.boost.org/doc/html/bbv2.html" target="_top">Boost.Build</a>
|
|
toolset used for your compiler. The chances are that <span class="bold"><strong>many
|
|
of the accuracy tests will fail at this stage</strong></span> - don't panic - the
|
|
default acceptable error tolerances are quite tight, especially for long double
|
|
types with an extended exponent range (these cause more extreme test cases
|
|
to be executed for some functions). You will need to cast an eye over the output
|
|
from the failing tests and make a judgement as to whether the error rates are
|
|
acceptable or not.
|
|
</p>
|
|
</div>
|
|
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
|
<td align="left"></td>
|
|
<td align="right"><div class="copyright-footer">Copyright © 2006-2019 Nikhar
|
|
Agrawal, Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos,
|
|
Hubert Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Matthew Pulver, Johan
|
|
Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg,
|
|
Daryle Walker and Xiaogang Zhang<p>
|
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
|
</p>
|
|
</div></td>
|
|
</tr></table>
|
|
<hr>
|
|
<div class="spirit-nav">
|
|
<a accesskey="p" href="error_handling.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../overview.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="config_macros.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
|
|
</div>
|
|
</body>
|
|
</html>
|