![]() |
Home | Libraries | People | FAQ | More |
template<typename T> octonion<T> operator + (octonion<T> const & o);
這個一元 正號 運算符僅僅是將 八元數 o 返回.
template<typename T> octonion<T> operator - (octonion<T> const & o);
這個一元 負號 運算符返回 八元數 o 的相反數.
template<typename T> octonion<T> operator + (T const & lhs, octonion<T> const & rhs); template<typename T> octonion<T> operator + (octonion<T> const & lhs, T const & rhs); template<typename T> octonion<T> operator + (::std::complex<T> const & lhs, octonion<T> const & rhs); template<typename T> octonion<T> operator + (octonion<T> const & lhs, ::std::complex<T> const & rhs); template<typename T> octonion<T> operator + (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs); template<typename T> octonion<T> operator + (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs); template<typename T> octonion<T> operator + (octonion<T> const & lhs, octonion<T> const & rhs);
這個二元加法運算符返回八元數<T>(lhs) +=
rhs的結果.
template<typename T> octonion<T> operator - (T const & lhs, octonion<T> const & rhs); template<typename T> octonion<T> operator - (octonion<T> const & lhs, T const & rhs); template<typename T> octonion<T> operator - (::std::complex<T> const & lhs, octonion<T> const & rhs); template<typename T> octonion<T> operator - (octonion<T> const & lhs, ::std::complex<T> const & rhs); template<typename T> octonion<T> operator - (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs); template<typename T> octonion<T> operator - (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs); template<typename T> octonion<T> operator - (octonion<T> const & lhs, octonion<T> const & rhs);
這個二元減法運算符返回八元數<T>(lhs) -=
rhs的結果.
template<typename T> octonion<T> operator * (T const & lhs, octonion<T> const & rhs); template<typename T> octonion<T> operator * (octonion<T> const & lhs, T const & rhs); template<typename T> octonion<T> operator * (::std::complex<T> const & lhs, octonion<T> const & rhs); template<typename T> octonion<T> operator * (octonion<T> const & lhs, ::std::complex<T> const & rhs); template<typename T> octonion<T> operator * (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs); template<typename T> octonion<T> operator * (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs); template<typename T> octonion<T> operator * (octonion<T> const & lhs, octonion<T> const & rhs);
這個乘法運算符返回八元數<T>(lhs) *=
rhs的結果.
template<typename T> octonion<T> operator / (T const & lhs, octonion<T> const & rhs); template<typename T> octonion<T> operator / (octonion<T> const & lhs, T const & rhs); template<typename T> octonion<T> operator / (::std::complex<T> const & lhs, octonion<T> const & rhs); template<typename T> octonion<T> operator / (octonion<T> const & lhs, ::std::complex<T> const & rhs); template<typename T> octonion<T> operator / (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs); template<typename T> octonion<T> operator / (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs); template<typename T> octonion<T> operator / (octonion<T> const & lhs, octonion<T> const & rhs);
這個二元符法運算符返回八元數<T>(lhs) /=
rhs的結果. 除以 0 依然是一個錯誤...
template<typename T> bool operator == (T const & lhs, octonion<T> const & rhs); template<typename T> bool operator == (octonion<T> const & lhs, T const & rhs); template<typename T> bool operator == (::std::complex<T> const & lhs, octonion<T> const & rhs); template<typename T> bool operator == (octonion<T> const & lhs, ::std::complex<T> const & rhs); template<typename T> bool operator == (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs); template<typename T> bool operator == (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs); template<typename T> bool operator == (octonion<T> const & lhs, octonion<T> const & rhs);
當且僅當octonion<T>(lhs)
中的四個成員分別與
octonion<T>(rhs)
中的四個對應 的成員分別相等這個運算符返回 真. 與任何的浮點數一樣, 這本質上是沒有意義的.
(譯注:作者的意思是這樣的,從本質上來說,比較兩個八元數相等是
沒有意義的,因為,任意一個八元數的表示都是不絕對精確的,正是因為如此,判斷兩個不精確的量是否相等
本質上是沒有意義的,這一點類似於我們判斷兩個浮點數是否相等,因為對於任意一個浮點數,計算機都不可能
精確的表示出來,這一點由計算機的固有特性決定.正是因為計算機無法精確的表示出任意一個浮點數,
所以,判斷兩個浮點數是否相等本質上也是沒有意義的)
template<typename T> bool operator != (T const & lhs, octonion<T> const & rhs); template<typename T> bool operator != (octonion<T> const & lhs, T const & rhs); template<typename T> bool operator != (::std::complex<T> const & lhs, octonion<T> const & rhs); template<typename T> bool operator != (octonion<T> const & lhs, ::std::complex<T> const & rhs); template<typename T> bool operator != (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs); template<typename T> bool operator != (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs); template<typename T> bool operator != (octonion<T> const & lhs, octonion<T> const & rhs);
當且僅當octonion<T>(lhs) ==
octonion<T>(rhs) 為假
的時候這個運算符返回 真.與任何的浮點類型實體一樣, 這本質上是沒有意義.
template<typename T, typename charT, class traits> ::std::basic_istream<charT,traits> & operator >> (::std::basic_istream<charT,traits> & is, octonion<T> & o);
抽取一個八元數 o.
我們接受任何看起來合理的格式. 然而, 因為這樣會導致許多二義性,
我們決定放棄這些. 為了防止產生疑惑,僅僅支持從一串實數中抽取並構造一個八元數.
輸入值必須能夠轉換為T類型的值. 如果遇到了不合法的輸入, 將會調用函數
is.setstate(ios::failbit)
(該函數將會拋出異常 ios::failure
(27.4.5.3)).
返回 is.
template<typename T, typename charT, class traits> ::std::basic_ostream<charT,traits> & operator << (::std::basic_ostream<charT,traits> & os, octonion<T> const & o);
將八元數插入到o
輸出流 os中 就像它被實現為下面這樣:
template<typename T, typename charT, class traits> ::std::basic_ostream<charT,traits> & operator << ( ::std::basic_ostream<charT,traits> & os, octonion<T> const & o) { ::std::basic_ostringstream<charT,traits> s; s.flags(os.flags()); s.imbue(os.getloc()); s.precision(os.precision()); s << '(' << o.R_component_1() << ',' << o.R_component_2() << ',' << o.R_component_3() << ',' << o.R_component_4() << ',' << o.R_component_5() << ',' << o.R_component_6() << ',' << o.R_component_7() << ',' << o.R_component_8() << ')'; return os << s.str(); }