• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>Compilers</title>
5<link rel="stylesheet" href="../math.css" type="text/css">
6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7<link rel="home" href="../index.html" title="Math Toolkit 2.12.0">
8<link rel="up" href="../overview.html" title="Chapter 1. Overview">
9<link rel="prev" href="error_handling.html" title="Error Handling">
10<link rel="next" href="config_macros.html" title="Configuration Macros">
11</head>
12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13<table cellpadding="2" width="100%"><tr>
14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
15<td align="center"><a href="../../../../../index.html">Home</a></td>
16<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19<td align="center"><a href="../../../../../more/index.htm">More</a></td>
20</tr></table>
21<hr>
22<div class="spirit-nav">
23<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>
24</div>
25<div class="section">
26<div class="titlepage"><div><div><h2 class="title" style="clear: both">
27<a name="math_toolkit.compilers_overview"></a><a class="link" href="compilers_overview.html" title="Compilers">Compilers</a>
28</h2></div></div></div>
29<p>
30      This section contains some information about how various compilers work with
31      this library. It is not comprehensive and updated experiences are always welcome.
32      Some effort has been made to suppress unhelpful warnings but it is difficult
33      to achieve this on all systems.
34    </p>
35<div class="table">
36<a name="math_toolkit.compilers_overview.supported_tested_compilers"></a><p class="title"><b>Table 1.9. Supported/Tested Compilers</b></p>
37<div class="table-contents"><table class="table" summary="Supported/Tested Compilers">
38<colgroup>
39<col>
40<col>
41<col>
42<col>
43</colgroup>
44<thead><tr>
45<th>
46              <p>
47                Platform
48              </p>
49            </th>
50<th>
51              <p>
52                Compiler
53              </p>
54            </th>
55<th>
56              <p>
57                Has long double support
58              </p>
59            </th>
60<th>
61              <p>
62                Notes
63              </p>
64            </th>
65</tr></thead>
66<tbody>
67<tr>
68<td>
69              <p>
70                Windows
71              </p>
72            </td>
73<td>
74              <p>
75                MSVC 7.1 and later
76              </p>
77            </td>
78<td>
79              <p>
80                Yes
81              </p>
82            </td>
83<td>
84              <p>
85                All tests OK.
86              </p>
87              <p>
88                We aim to keep our headers warning free at level 4 with this compiler.
89              </p>
90            </td>
91</tr>
92<tr>
93<td>
94              <p>
95                Windows
96              </p>
97            </td>
98<td>
99              <p>
100                Intel 8.1 and later
101              </p>
102            </td>
103<td>
104              <p>
105                Yes
106              </p>
107            </td>
108<td>
109              <p>
110                All tests OK.
111              </p>
112              <p>
113                We aim to keep our headers warning free at level 4 with this compiler.
114                However, The tests cases tend to generate a lot of warnings relating
115                to numeric underflow of the test data: these are harmless.
116              </p>
117            </td>
118</tr>
119<tr>
120<td>
121              <p>
122                Windows
123              </p>
124            </td>
125<td>
126              <p>
127                GNU Mingw32 C++
128              </p>
129            </td>
130<td>
131              <p>
132                Yes
133              </p>
134            </td>
135<td>
136              <p>
137                All tests OK.
138              </p>
139              <p>
140                We aim to keep our headers warning free with -Wall with this compiler.
141              </p>
142            </td>
143</tr>
144<tr>
145<td>
146              <p>
147                Windows
148              </p>
149            </td>
150<td>
151              <p>
152                GNU Cygwin C++
153              </p>
154            </td>
155<td>
156              <p>
157                No
158              </p>
159            </td>
160<td>
161              <p>
162                All tests OK.
163              </p>
164              <p>
165                We aim to keep our headers warning free with -Wall with this compiler.
166              </p>
167              <p>
168                Long double support has been disabled because there are no native
169                long double C std library functions available.
170              </p>
171            </td>
172</tr>
173<tr>
174<td>
175              <p>
176                Windows
177              </p>
178            </td>
179<td>
180              <p>
181                Borland C++ 5.8.2 (Developer studio 2006)
182              </p>
183            </td>
184<td>
185              <p>
186                No
187              </p>
188            </td>
189<td>
190              <p>
191                We have only partial compatibility with this compiler:
192              </p>
193              <p>
194                Long double support has been disabled because the native long double
195                C standard library functions really only forward to the double versions.
196                This can result in unpredictable behaviour when using the long double
197                overloads: for example <code class="computeroutput"><span class="identifier">sqrtl</span></code>
198                applied to a finite value, can result in an infinite result.
199              </p>
200              <p>
201                Some functions still fail to compile, there are no known workarounds
202                at present.
203              </p>
204            </td>
205</tr>
206<tr>
207<td>
208              <p>
209                Windows 7/Netbeans 7.2
210              </p>
211            </td>
212<td>
213              <p>
214                Clang 3.1
215              </p>
216            </td>
217<td>
218              <p>
219                Yes
220              </p>
221            </td>
222<td>
223              <p>
224                Spot examples OK. Expect all tests to compile and run OK.
225              </p>
226            </td>
227</tr>
228<tr>
229<td>
230              <p>
231                Linux
232              </p>
233            </td>
234<td>
235              <p>
236                GNU C++ 3.4 and later
237              </p>
238            </td>
239<td>
240              <p>
241                Yes
242              </p>
243            </td>
244<td>
245              <p>
246                All tests OK.
247              </p>
248              <p>
249                We aim to keep our headers warning free with -Wall with this compiler.
250              </p>
251            </td>
252</tr>
253<tr>
254<td>
255              <p>
256                Linux
257              </p>
258            </td>
259<td>
260              <p>
261                Clang 3.2
262              </p>
263            </td>
264<td>
265              <p>
266                Yes
267              </p>
268            </td>
269<td>
270              <p>
271                All tests OK.
272              </p>
273            </td>
274</tr>
275<tr>
276<td>
277              <p>
278                Linux
279              </p>
280            </td>
281<td>
282              <p>
283                Intel C++ 10.0 and later
284              </p>
285            </td>
286<td>
287              <p>
288                Yes
289              </p>
290            </td>
291<td>
292              <p>
293                All tests OK.
294              </p>
295              <p>
296                We aim to keep our headers warning free with -Wall with this compiler.
297                However, The tests cases tend to generate a lot of warnings relating
298                to numeric underflow of the test data: these are harmless.
299              </p>
300            </td>
301</tr>
302<tr>
303<td>
304              <p>
305                Linux
306              </p>
307            </td>
308<td>
309              <p>
310                Intel C++ 8.1 and 9.1
311              </p>
312            </td>
313<td>
314              <p>
315                No
316              </p>
317            </td>
318<td>
319              <p>
320                All tests OK.
321              </p>
322              <p>
323                Long double support has been disabled with these compiler releases
324                because calling the standard library long double math functions can
325                result in a segfault. The issue is Linux distribution and glibc version
326                specific and is Intel bug report #409291. Fully up to date releases
327                of Intel 9.1 (post version l_cc_c_9.1.046) shouldn't have this problem.
328                If you need long double support with this compiler, then comment
329                out the define of BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS at line
330                55 of <a href="../../../../../boost/math/tools/config.hpp" target="_top">boost/math/tools/config.hpp</a>.
331              </p>
332              <p>
333                We aim to keep our headers warning free with -Wall with this compiler.
334                However, The tests cases tend to generate a lot of warnings relating
335                to numeric underflow of the test data: these are harmless.
336              </p>
337            </td>
338</tr>
339<tr>
340<td>
341              <p>
342                Linux
343              </p>
344            </td>
345<td>
346              <p>
347                QLogic PathScale 3.0
348              </p>
349            </td>
350<td>
351              <p>
352                Yes
353              </p>
354            </td>
355<td>
356              <p>
357                Some tests involving conceptual checks fail to build, otherwise there
358                appear to be no issues.
359              </p>
360            </td>
361</tr>
362<tr>
363<td>
364              <p>
365                Linux
366              </p>
367            </td>
368<td>
369              <p>
370                Sun Studio 12
371              </p>
372            </td>
373<td>
374              <p>
375                Yes
376              </p>
377            </td>
378<td>
379              <p>
380                Some tests involving function overload resolution fail to build,
381                these issues should be rarely encountered in practice.
382              </p>
383            </td>
384</tr>
385<tr>
386<td>
387              <p>
388                Solaris
389              </p>
390            </td>
391<td>
392              <p>
393                Sun Studio 12
394              </p>
395            </td>
396<td>
397              <p>
398                Yes
399              </p>
400            </td>
401<td>
402              <p>
403                Some tests involving function overload resolution fail to build,
404                these issues should be rarely encountered in practice.
405              </p>
406            </td>
407</tr>
408<tr>
409<td>
410              <p>
411                Solaris
412              </p>
413            </td>
414<td>
415              <p>
416                GNU C++ 4.x
417              </p>
418            </td>
419<td>
420              <p>
421                Yes
422              </p>
423            </td>
424<td>
425              <p>
426                All tests OK.
427              </p>
428              <p>
429                We aim to keep our headers warning free with -Wall with this compiler.
430              </p>
431            </td>
432</tr>
433<tr>
434<td>
435              <p>
436                HP Tru64
437              </p>
438            </td>
439<td>
440              <p>
441                Compaq C++ 7.1
442              </p>
443            </td>
444<td>
445              <p>
446                Yes
447              </p>
448            </td>
449<td>
450              <p>
451                All tests OK.
452              </p>
453            </td>
454</tr>
455<tr>
456<td>
457              <p>
458                HP-UX Itanium
459              </p>
460            </td>
461<td>
462              <p>
463                HP aCC 6.x
464              </p>
465            </td>
466<td>
467              <p>
468                Yes
469              </p>
470            </td>
471<td>
472              <p>
473                All tests OK.
474              </p>
475              <p>
476                Unfortunately this compiler emits quite a few warnings from libraries
477                upon which we depend (TR1, Array etc).
478              </p>
479            </td>
480</tr>
481<tr>
482<td>
483              <p>
484                HP-UX PA-RISC
485              </p>
486            </td>
487<td>
488              <p>
489                GNU C++ 3.4
490              </p>
491            </td>
492<td>
493              <p>
494                No
495              </p>
496            </td>
497<td>
498              <p>
499                All tests OK.
500              </p>
501            </td>
502</tr>
503<tr>
504<td>
505              <p>
506                Apple Mac OS X, Intel
507              </p>
508            </td>
509<td>
510              <p>
511                Darwin/GNU C++ 4.x
512              </p>
513            </td>
514<td>
515              <p>
516                Yes
517              </p>
518            </td>
519<td>
520              <p>
521                All tests OK.
522              </p>
523            </td>
524</tr>
525<tr>
526<td>
527              <p>
528                Apple Mac OS X, PowerPC
529              </p>
530            </td>
531<td>
532              <p>
533                Darwin/GNU C++ 4.x
534              </p>
535            </td>
536<td>
537              <p>
538                No
539              </p>
540            </td>
541<td>
542              <p>
543                All tests OK.
544              </p>
545              <p>
546                Long double support has been disabled on this platform due to the
547                rather strange nature of Darwin's 106-bit long double implementation.
548                It should be possible to make this work if someone is prepared to
549                offer assistance.
550              </p>
551            </td>
552</tr>
553<tr>
554<td>
555              <p>
556                Apple Mac OS X,
557              </p>
558            </td>
559<td>
560              <p>
561                Clang 3.2
562              </p>
563            </td>
564<td>
565              <p>
566                Yes
567              </p>
568            </td>
569<td>
570              <p>
571                All tests expected to be OK.
572              </p>
573            </td>
574</tr>
575<tr>
576<td>
577              <p>
578                IBM AIX
579              </p>
580            </td>
581<td>
582              <p>
583                IBM xlc 5.3
584              </p>
585            </td>
586<td>
587              <p>
588                Yes
589              </p>
590            </td>
591<td>
592              <p>
593                All tests pass except for our fpclassify tests which fail due to
594                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
595                the test code, not fpclassify itself. The IBM compiler group are
596                aware of the problem.
597              </p>
598            </td>
599</tr>
600</tbody>
601</table></div>
602</div>
603<br class="table-break"><div class="table">
604<a name="math_toolkit.compilers_overview.unsupported_compilers"></a><p class="title"><b>Table 1.10. Unsupported Compilers</b></p>
605<div class="table-contents"><table class="table" summary="Unsupported Compilers">
606<colgroup>
607<col>
608<col>
609</colgroup>
610<thead><tr>
611<th>
612              <p>
613                Platform
614              </p>
615            </th>
616<th>
617              <p>
618                Compiler
619              </p>
620            </th>
621</tr></thead>
622<tbody>
623<tr>
624<td>
625              <p>
626                Windows
627              </p>
628            </td>
629<td>
630              <p>
631                Borland C++ 5.9.2 (Borland Developer Studio 2007)
632              </p>
633            </td>
634</tr>
635<tr>
636<td>
637              <p>
638                Windows
639              </p>
640            </td>
641<td>
642              <p>
643                MSVC 6 and 7
644              </p>
645            </td>
646</tr>
647</tbody>
648</table></div>
649</div>
650<br class="table-break"><p>
651      If your compiler or platform is not listed above, please try running the regression
652      tests: cd into boost-root/libs/math/test and do a:
653    </p>
654<pre class="programlisting"><span class="identifier">bjam</span> <span class="identifier">mytoolset</span>
655</pre>
656<p>
657      where "mytoolset" is the name of the <a href="http://www.boost.org/doc/html/bbv2.html" target="_top">Boost.Build</a>
658      toolset used for your compiler. The chances are that <span class="bold"><strong>many
659      of the accuracy tests will fail at this stage</strong></span> - don't panic - the
660      default acceptable error tolerances are quite tight, especially for long double
661      types with an extended exponent range (these cause more extreme test cases
662      to be executed for some functions). You will need to cast an eye over the output
663      from the failing tests and make a judgement as to whether the error rates are
664      acceptable or not.
665    </p>
666</div>
667<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
668<td align="left"></td>
669<td align="right"><div class="copyright-footer">Copyright © 2006-2019 Nikhar
670      Agrawal, Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos,
671      Hubert Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Matthew Pulver, Johan
672      Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg,
673      Daryle Walker and Xiaogang Zhang<p>
674        Distributed under the Boost Software License, Version 1.0. (See accompanying
675        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>)
676      </p>
677</div></td>
678</tr></table>
679<hr>
680<div class="spirit-nav">
681<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>
682</div>
683</body>
684</html>
685