⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 octonion.hpp

📁 support vector clustering for vc++
💻 HPP
📖 第 1 页 / 共 5 页
字号:
                d = dt;
                e = et;
                f = ft;
                g = gt;
                h = ht;
                
                return(*this);
            }
            
            
            octonion<T> &            operator *= (T const & rhs)
            {
                T    at = a * rhs;    // exception guard
                T    bt = b * rhs;    // exception guard
                T    ct = c * rhs;    // exception guard
                T    dt = d * rhs;    // exception guard
                T    et = e * rhs;    // exception guard
                T    ft = f * rhs;    // exception guard
                T    gt = g * rhs;    // exception guard
                T    ht = h * rhs;    // exception guard
                
                a = at;
                b = bt;
                c = ct;
                d = dt;
                e = et;
                f = ft;
                g = gt;
                h = ht;
                
                return(*this);
            }
            
            
            octonion<T> &            operator *= (::std::complex<T> const & rhs)
            {
                T    ar = rhs.real();
                T    br = rhs.imag();
                
                T    at = +a*ar-b*br;
                T    bt = +a*br+b*ar;
                T    ct = +c*ar+d*br;
                T    dt = -c*br+d*ar;
                T    et = +e*ar+f*br;
                T    ft = -e*br+f*ar;
                T    gt = +g*ar-h*br;
                T    ht = +g*br+h*ar;
                
                a = at;
                b = bt;
                c = ct;
                d = dt;
                e = et;
                f = ft;
                g = gt;
                h = ht;
                
                return(*this);
            }
            
            
            octonion<T> &            operator *= (::boost::math::quaternion<T> const & rhs)
            {
                T    ar = rhs.R_component_1();
                T    br = rhs.R_component_2();
                T    cr = rhs.R_component_2();
                T    dr = rhs.R_component_2();
                
                T    at = +a*ar-b*br-c*cr-d*dr;
                T    bt = +a*br+b*ar+c*dr-d*cr;
                T    ct = +a*cr-b*dr+c*ar+d*br;
                T    dt = +a*dr+b*cr-c*br+d*ar;
                T    et = +e*ar+f*br+g*cr+h*dr;
                T    ft = -e*br+f*ar-g*dr+h*cr;
                T    gt = -e*cr+f*dr+g*ar-h*br;
                T    ht = -e*dr-f*cr+g*br+h*ar;
                
                a = at;
                b = bt;
                c = ct;
                d = dt;
                e = et;
                f = ft;
                g = gt;
                h = ht;
                
                return(*this);
            }
            
            
            template<typename X>
            octonion<T> &            operator *= (octonion<X> const & rhs)
            {
                T    ar = static_cast<T>(rhs.R_component_1());
                T    br = static_cast<T>(rhs.R_component_2());
                T    cr = static_cast<T>(rhs.R_component_3());
                T    dr = static_cast<T>(rhs.R_component_4());
                T    er = static_cast<T>(rhs.R_component_5());
                T    fr = static_cast<T>(rhs.R_component_6());
                T    gr = static_cast<T>(rhs.R_component_7());
                T    hr = static_cast<T>(rhs.R_component_8());
                
                T    at = +a*ar-b*br-c*cr-d*dr-e*er-f*fr-g*gr-h*hr;
                T    bt = +a*br+b*ar+c*dr-d*cr+e*fr-f*er-g*hr+h*gr;
                T    ct = +a*cr-b*dr+c*ar+d*br+e*gr+f*hr-g*er-h*fr;
                T    dt = +a*dr+b*cr-c*br+d*ar+e*hr-f*gr+g*fr-h*er;
                T    et = +a*er-b*fr-c*gr-d*hr+e*ar+f*br+g*cr+h*dr;
                T    ft = +a*fr+b*er-c*hr+d*gr-e*br+f*ar-g*dr+h*cr;
                T    gt = +a*gr+b*hr+c*er-d*fr-e*cr+f*dr+g*ar-h*br;
                T    ht = +a*hr-b*gr+c*fr+d*er-e*dr-f*cr+g*br+h*ar;
                
                a = at;
                b = bt;
                c = ct;
                d = dt;
                e = et;
                f = ft;
                g = gt;
                h = ht;
                
                return(*this);
            }
            
            
            octonion<T> &            operator /= (T const & rhs)
            {
                T    at = a / rhs;    // exception guard
                T    bt = b / rhs;    // exception guard
                T    ct = c / rhs;    // exception guard
                T    dt = d / rhs;    // exception guard
                T    et = e / rhs;    // exception guard
                T    ft = f / rhs;    // exception guard
                T    gt = g / rhs;    // exception guard
                T    ht = h / rhs;    // exception guard
                
                a = at;
                b = bt;
                c = ct;
                d = dt;
                e = et;
                f = ft;
                g = gt;
                h = ht;
                
                return(*this);
            }
            
            
            octonion<T> &            operator /= (::std::complex<T> const & rhs)
            {
                T    ar = rhs.real();
                T    br = rhs.imag();
                
                T    denominator = ar*ar+br*br;
                
                T    at = (+a*ar-b*br)/denominator;
                T    bt = (-a*br+b*ar)/denominator;
                T    ct = (+c*ar-d*br)/denominator;
                T    dt = (+c*br+d*ar)/denominator;
                T    et = (+e*ar-f*br)/denominator;
                T    ft = (+e*br+f*ar)/denominator;
                T    gt = (+g*ar+h*br)/denominator;
                T    ht = (+g*br+h*ar)/denominator;
                
                a = at;
                b = bt;
                c = ct;
                d = dt;
                e = et;
                f = ft;
                g = gt;
                h = ht;
                
                return(*this);
            }
            
            
            octonion<T> &            operator /= (::boost::math::quaternion<T> const & rhs)
            {
                T    ar = rhs.R_component_1();
                T    br = rhs.R_component_2();
                T    cr = rhs.R_component_2();
                T    dr = rhs.R_component_2();
                
                T    denominator = ar*ar+br*br+cr*cr+dr*dr;
                
                T    at = (+a*ar+b*br+c*cr+d*dr)/denominator;
                T    bt = (-a*br+b*ar-c*dr+d*cr)/denominator;
                T    ct = (-a*cr+b*dr+c*ar-d*br)/denominator;
                T    dt = (-a*dr-b*cr+c*br+d*ar)/denominator;
                T    et = (+e*ar-f*br-g*cr-h*dr)/denominator;
                T    ft = (+e*br+f*ar+g*dr-h*cr)/denominator;
                T    gt = (+e*cr-f*dr+g*ar+h*br)/denominator;
                T    ht = (+e*dr+f*cr-g*br+h*ar)/denominator;
                
                a = at;
                b = bt;
                c = ct;
                d = dt;
                e = et;
                f = ft;
                g = gt;
                h = ht;
                
                return(*this);
            }
            
            
            template<typename X>
            octonion<T> &            operator /= (octonion<X> const & rhs)
            {
                T    ar = static_cast<T>(rhs.R_component_1());

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -