頭文件包含

訪問這個庫的最簡單的方法是包含主頭文件:

#include <boost/numeric/interval.hpp>

這個頭文件包含所有其它所有的頭文件(除了列為擴展的頭文件). 然而,你或許不想訪問庫中所有的函數,因此這個頁面作為整個庫的結構的提示. <boost/numeric/interval.hpp> 是唯一的直接位於 boost/numeric的頭文件; 所有其它的頭文件位於boost/numeric/interval 子目錄下. 每一次這份文檔引用interval/something.hpp, 它是指<boost/numeric/interval/something.hpp>.

請注意:下面所有的頭文件都是相互獨立的,如果可能的話,它們可以被預編譯(當然,對於那些支持預編譯的編譯器來說).

函數定義

下面的頭文件包含區間類的定義,以及所有的友元函數和運算符.

interval/interval.hpp

這個頭文件包含區間類的定義和聲明,同時這個類是模板化的,在這個頭文件中,默認的模板參數是不可用的,這個頭文件並沒有提供區間類針對浮點類型 (interval<float>, interval<double>interval<long double>)的默認特化 . 因此除非你使用自己的策略, 這個頭文件本身沒有什麼作用.

interval/utility.hpp

這個頭文件包含所有的不對基本數字類型有任何的算術性質預期的函數,它們僅僅期望邊界是有序的, 這一點不應當使你感到驚訝,因為它是整個庫的基本要求,在這個頭文件中,你可以訪問的定義和相 關的函數: lower, upper, checked_lower, checked_upper, median, width, widen. 同樣也有集合類型的函數: in, zero_in, empty, subset, proper_subset, overlap, singleton, equal, intersect, hull, bisect. 最後也定義了 abs, min, and max

interval/arith.hpp

這裡定義的是二元運算符+, -, *, / 和一元運算符-.

interval/arith2.hpp

這個頭文件定義了函數fmod, square, sqrt, pow, and root.

interval/arith3.hpp

第三個算術頭文件,它提供函數 add, sub, mul, 和 div. 這些函數的基類型是基本的數字類型.

interval/transc.hpp

這是最後一個包含數學函數的頭文件,它提供下面的函數: cos, sin, tan, acos, asin, atan, cosh, sinh, tanh, acosh, asinh, atanh, exp, 和 log.

策略

下面的頭文件定義了一些策略,在你使用默認策略的情況下需要它們.

interval/rounded_arith.hpp

這個頭文件定義了三個針對於算術函數的捨入策略: rounded_arith_std, rounded_arith_opp, rounded_arith_exact.

interval/rounded_transc.hpp

這個頭文件定義了三個針對於超越函數的捨入策略: rounded_transc_std, rounded_transc_opp, rounded_transc_exact. 它們與rounded_arith.hpp是分開的,這是因為捨入策略的超越部分可能不如它們的算術部分有用 .

interval/hw_rounding.hpp

這裡是針對於基本浮點類型的捨入策略. 這種策略依賴於處理器; 並且允許用戶代碼的可移植性,它們只定義了依賴於硬件所提供的可用的函數的一個通用的子集,它們是捨入策略的基本函數 .

interval/checking.hpp

這個頭文件提供了預定義的檢查策略: checking_base, checking_no_empty, checking_no_nan, checking_catch_nan, checking_strict.

interval/policies.hpp

這裡定義了操作策略的輔助函數. 包含policies (使用默認策略時這個頭文件是必需的), change_rounding, change_checking, unprotect, 等等.

比較

interval/compare.hpp

這個頭文件包含下面所有的頭文件,它們提供了一些預定義的比較名字空間.

interval/compare/certain.hpp

這個頭文件定義了compare::certain.

interval/compare/possible.hpp

這個頭文件定義了compare::possible.

interval/compare/explicit.hpp

這個頭文件定義了明確的比較函數cerlt, posge, 等等 .

interval/compare/lexicographic.hpp

這個頭文件提供compare::lexicographic.

interval/compare/set.hpp

這個頭文件提供compare::set.

擴展

下面的頭文件沒有被interval.hpp 所包含而且不會一直提供可期望的兼容性.

interval/io.hpp

這個頭文件定義了基本流運算符<<>>. 它們應當僅被用作第一種方式並且稍後被用戶定制的類型替換

interval/limits.hpp

提供了一個適合於區間類型的std::numeric_limits的特化

interval/compare/tribool.hpp

這個頭文件提供了一個特地適用於三態布爾值的比較名字空間.

interval/ext/integer.hpp

這個頭文件提供了區間和整數之間的混合操作.通過將一個整數轉換為基本的數字類型來完. 因為這種比較並非一直正確 (對於一個的大的 int值可能無法精確的轉換為 float值), 這個頭文件並不會自動地被包含,用戶應當確保這種行為與它所想要的是一致的(如果僅僅是某些區間乘2, 包含這個頭文件可以是件好事 ).

interval/ext/x86_fast_rounding_control.hpp

這個頭文件定義了一個新的捨入策略,允許繞過X86處理器的精度問題 (因此來加速運算). 然而,它只是一個部分的解決方案,當存在下溢和上溢的可能性時不應當使用這種捨入策略 .


 

Valid HTML 4.01 Transitional

Revised 2006-12-24

Copyright © 2002 Guillaume Melquiond, Sylvain Pion, Hervé Brönnimann, Polytechnic University
Copyright © 2003-2006 Guillaume Melquiond, ENS Lyon

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)