![]() |
Home | Libraries | People | FAQ | More |
這部分包含這個庫與各種編譯器一起使用的情況。這裡的總結並不是全面的,並且歡迎相關的信息更新。對消去一些無用的編譯warings做出了一些努力,但是很難在所有的平台上做到這一點。
表?支持的/測試的 編譯器
平台 |
編譯器 |
long double 支持 |
說明 |
---|---|---|---|
Windows |
MSVC 7.1 and later |
是 |
所有的測試都通過。 在這個編譯器中,我們在level 4的編譯設置下使得庫的頭文件不會產生warning. |
Windows |
Intel 8.1 and later |
是 |
所有的測試都通過。 我們在level 4的編譯設置下使得庫的頭文件不會產生warning。然而,測試數據產生了許多測試數據的數值溢出相關的warning:這些warning是無害的。 |
Windows |
GNU Mingw32 C++ |
是 |
所有的測試都通過。 在這個編譯器中,我們在-Wall的編譯設置下使得庫的頭文件不會產生warning. |
Windows |
GNU Cygwin C++ |
是 |
所有的測試都通過。 在這個編譯器中,我們在-Wall的編譯設置下使得庫的頭文件不會產生warning. Long double 支持被禁止了,因為沒有本地的(native)long double 版本的C std庫函數可用。 |
Windows |
Borland C++ 5.8.2 (Developer studio 2006) |
否 |
與這個編譯器我們只有部分的兼容性: Long double 支持被禁止,因為本地的(native)long double C標準庫函數實際上僅向前到(forward to)double版本。當使用long double重載版本時,這可能產生不可預測的結果:例如,將函數sqrtl 應用於有限值,但結果會是無限值。 一些函數仍然不能夠能夠編譯,當前沒有已知的 workarounds 。 |
Linux |
GNU C++ 3.4 and later |
是 |
所有的測試都通過。 在這個編譯器中,我們在-Wall的編譯設置下使得庫的頭文件不會產生warning. |
Linux |
Intel C++ 10.0 and later |
是 |
所有的測試都通過。 在這個編譯器中,我們在-Wall的編譯設置下使得庫的頭文件不會產生warning。然而,測試數據產生了許多測試數據的數值向下溢出相關的warning:這些warning是無害的。 |
Linux |
Intel C++ 8.1 and 9.1 |
否 |
所有的測試都通過。 Long double 支持被禁止,因為調用標準庫long double數學函數會導致segfault。這種問題是Linux發行版本和glibc版本特定的並且是Intel錯誤報告 #409291。 完整地更新到 Intel 9.1 (版本 l_cc_c_9.1.046) 就不會有這種問題。如果在這個編譯器上你需要long double支持,那麼將下面的代碼註釋掉:BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS 在頭文件 boost/math/tools/config.hpp中的第55行。 在這個編譯器中,我們在-Wall的編譯設置下使得庫的頭文件不會產生warning。然而,測試數據產生了許多測試數據的數值溢出相關的warning:這些warning是無害的。 |
Linux |
QLogic PathScale 3.0 |
是 |
一些涉及到概念檢查(conceptual check)的測試沒能成功編譯,這些問題在實際中應該很少遇到。 |
Linux |
Sun Studio 12 |
是 |
一些涉及到重載解析的測試沒能成功編譯,這些問題在實際中應該很少遇到。 |
Solaris |
Sun Studio 12 |
是 |
一些涉及到重載解析的測試沒能成功編譯,這些問題在實際中應該很少遇到。 |
Solaris |
GNU C++ 4.x |
是 |
所有的測試都通過。 在這個編譯器中,我們在-Wall的編譯設置下使得庫的頭文件不會產生warning. |
HP Tru64 |
Compaq C++ 7.1 |
是 |
所有的測試都通過。 |
HP-UX Itanium |
HP aCC 6.x |
是 |
所有的測試都通過。 不幸的是這個編譯器對於我們所依賴的庫(TR1, Array 等等).產生了很多warnings。 |
HP-UX PA-RISC |
GNU C++ 3.4 |
否 |
所有的測試都通過。 |
Apple Mac OS X, Intel |
Darwin/GNU C++ 4.x |
是 |
所有的測試都通過。 |
Apple Mac OS X, PowerPC |
Darwin/GNU C++ 4.x |
否 |
所有的測試都通過。 由於Darwin's 106-bit long double 實現的特殊性質,在這個平台上long double的支持被禁止了。如果有人準備提供幫助的話,應該可以在這個平台上通過。 |
IMB AIX |
IBM xlc 5.3 |
是 |
所有的測試都通過,除了 fpclassify 測試失敗,之是由於 |
如果你的編譯器沒有列舉在這裡,那麼請運行回歸測試(regression tests): 輸出命令cd 到 boost-root/libs/math/test 並輸入:
bjam mytoolset
其中"mytoolset" 是針對於你的編譯器的 Boost.Build 工具集的名字 。這裡的可能性是used 許多的精確度測試會在這個階段失敗 - 不要驚慌 -缺省的可接受誤差容許度太小了,尤其是對於具有擴展指數範圍(extended exponent range)的long double類型(這使得會對一些函數運行更極限的測試用例)。你需要注意失敗的測試情況並判斷誤差率是否是可接受的。