Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

策略具有有意義的缺省值(Policies Have Sensible Defaults)

大多數時間你都會忽略策略框架(policy framework),對於這些策略,缺省的行為如下,如果這些缺省的策略適合你的工作,那麼現在你可以停止閱讀了!

(定義域錯誤)Domain Error

拋出std::domain_error 異常。

Pole Error

當一個函數在 pole 處計算時發生:拋出std::domain_error 異常。

溢出錯誤(Overflow Error)

拋出std::overflow_error 異常。

下溢錯誤(Underflow)

忽略下溢錯誤並返回0。

Denormalised Result

忽略結果為 denormalised 的事實,並返回結果。

捨入錯誤(Rounding Error)

拋出boost::math::rounding_error 錯誤。

內部計算錯誤(Internal Evaluation Error)

拋出boost::math::evaluation_error 異常。

未定義結果錯誤(Indeterminate Result Error)

返回依據函數中出錯錯誤位置的結果。

float 到 double的提升 (Promotion of float to double)

缺省行為 - 給出完全的浮點精度結果。

double 到 long double的提升 (Promotion of double to long double)

如果long double比double提供更高的精度,那麼這就是缺省的行為。

使用的逼近精度(Precision of Approximation Used)

缺省情況下將會使用一個逼近方法來針對結果的類型產生最低水平的誤差。

離散分位點的行為(Behaviour of Discrete Quantiles)

缺省情況下,分位點函數將會返回一個向外捨入( rounded outwards)的整數結果。也就是說下分位點向下捨入(整數小於0.5的地方),而上分位點向上捨入(概率大於0.5的地方)。這種方式確保,當需要一個%X的分位點時,至少要求的區域會在中心區域,不超過要求的區域在尾部區域。

這種方式可以被改變,使得分位點函數的捨入方式可以不同,或者甚至使用策略返回一個浮點數結果。在使用離散分佈的分位點函數之前,強烈推薦你閱讀理解離散分佈的分位點參考文檔 如何對這些離散分佈改變所使用的策略。

而且,如果你定義你自己的策略類型,對於那些沒有明確設置的策略都將使用缺省的策略,所以,給定:

using namespace boost::math::policies;
//
// 定義一個在遇到溢出時設置::errno 的策略,
// 並在內部不進行從 double 到 long double 的類型提升:
//
typedef policy<domain_error<errno_on_error>, promote_double<false> > mypolicy;

然後mypolicy 定義了一個僅僅是溢出錯誤處理和double精確度提升與缺省設置不同的策略。


PrevUpHomeNext