Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

hypot

template <class T1, class T2>
calculated-result-type hypot(T1 x, T2 y);

template <class T1, class T2, class Policy>
calculated-result-type hypot(T1 x, T2 y, const Policy&);

作用: 的方式計算來避免過度的下溢和上溢。

當T1和T2是不同類型的時候,函數返回值的類型使用返回值推導法則:來確定.

最後一個策略 參數是可選的並且可以用來控制函數的行為: 如何處理錯誤, 使用哪種層次的精度等等. 參見策略文檔瞭解更多信息。

當計算時,很容易導致中間結果的下溢和上溢, 即便結果是完全可以表示的.

實現

這個函數是偶函數且關於x和y對稱, 因此首先假設x,y > 0x > y (如果不是這種情況的話,我們可以對這些參數進行排列).

那麼如果x * ε >= y 我們可以簡單的返回 x.

否則的話,結果由下面的方程給出:


PrevUpHomeNext