Imported Upstream version 1.72.0
[platform/upstream/boost.git] / libs / math / doc / html / math_toolkit / compilers_overview.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
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.11.0">
8 <link rel="up" href="../overview.html" title="Chapter&#160;1.&#160;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&#160;1.9.&#160;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&#160;1.10.&#160;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 &#169; 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&#229;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>