<reponame>Yiping-Steven/dvo_code_and_doc<gh_stars>0
\hypertarget{classdvo_1_1core_1_1_math_sse}{}\section{dvo\+:\+:core\+:\+:Math\+Sse$<$ Enabled, Num\+Type $>$ Class Template Reference}
\label{classdvo_1_1core_1_1_math_sse}\index{dvo\+::core\+::\+Math\+Sse$<$ Enabled, Num\+Type $>$@{dvo\+::core\+::\+Math\+Sse$<$ Enabled, Num\+Type $>$}}


{\ttfamily \#include $<$math\+\_\+sse.\+h$>$}

\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$$>$ }\\void \mbox{\hyperlink{classdvo_1_1core_1_1_math_sse_a5d8a137703df78832e1cfb591b290cb0}{add\+Outer\+Product}} (Eigen\+::\+Matrix$<$ float, 6, 6 $>$ \&mat, const Eigen\+::\+Matrix$<$ float, 6, 1 $>$ \&vec, const float \&scale)
\item 
{\footnotesize template$<$$>$ }\\void \mbox{\hyperlink{classdvo_1_1core_1_1_math_sse_a8403622e21ba348610e4ca96d7c1915c}{add\+Outer\+Product}} (Eigen\+::\+Matrix$<$ double, 6, 6 $>$ \&mat, const Eigen\+::\+Matrix$<$ double, 6, 1 $>$ \&vec, const double \&scale)
\item 
{\footnotesize template$<$$>$ }\\void \mbox{\hyperlink{classdvo_1_1core_1_1_math_sse_a942e37dc174d6ed03a48fcb9e9b53b88}{add}} (Eigen\+::\+Matrix$<$ float, 6, 1 $>$ \&vec, const Eigen\+::\+Matrix$<$ float, 6, 1 $>$ \&other, const float \&scale)
\item 
{\footnotesize template$<$$>$ }\\void \mbox{\hyperlink{classdvo_1_1core_1_1_math_sse_a569d441b55c932cf1220a93ef5f155f3}{add}} (Eigen\+::\+Matrix$<$ double, 6, 1 $>$ \&vec, const Eigen\+::\+Matrix$<$ double, 6, 1 $>$ \&other, const double \&scale)
\item 
{\footnotesize template$<$$>$ }\\void \mbox{\hyperlink{classdvo_1_1core_1_1_math_sse_a5d8a137703df78832e1cfb591b290cb0}{add\+Outer\+Product}} (Eigen\+::\+Matrix$<$ float, 6, 6 $>$ \&mat, const Eigen\+::\+Matrix$<$ float, 6, 1 $>$ \&vec, const float \&scale)
\item 
{\footnotesize template$<$$>$ }\\void \mbox{\hyperlink{classdvo_1_1core_1_1_math_sse_a8403622e21ba348610e4ca96d7c1915c}{add\+Outer\+Product}} (Eigen\+::\+Matrix$<$ double, 6, 6 $>$ \&mat, const Eigen\+::\+Matrix$<$ double, 6, 1 $>$ \&vec, const double \&scale)
\item 
{\footnotesize template$<$$>$ }\\void \mbox{\hyperlink{classdvo_1_1core_1_1_math_sse_a942e37dc174d6ed03a48fcb9e9b53b88}{add}} (Eigen\+::\+Matrix$<$ float, 6, 1 $>$ \&vec, const Eigen\+::\+Matrix$<$ float, 6, 1 $>$ \&other, const float \&scale)
\item 
{\footnotesize template$<$$>$ }\\void \mbox{\hyperlink{classdvo_1_1core_1_1_math_sse_a569d441b55c932cf1220a93ef5f155f3}{add}} (Eigen\+::\+Matrix$<$ double, 6, 1 $>$ \&vec, const Eigen\+::\+Matrix$<$ double, 6, 1 $>$ \&other, const double \&scale)
\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static void \mbox{\hyperlink{classdvo_1_1core_1_1_math_sse_af3aa0fc81f7709b6f12e3d771741e469}{add\+Outer\+Product}} (Eigen\+::\+Matrix$<$ \mbox{\hyperlink{namespacedvo_1_1core_ab9c199d221775a923e2549ad7e15c323}{Num\+Type}}, 6, 6 $>$ \&mat, const Eigen\+::\+Matrix$<$ \mbox{\hyperlink{namespacedvo_1_1core_ab9c199d221775a923e2549ad7e15c323}{Num\+Type}}, 6, 1 $>$ \&vec, const \mbox{\hyperlink{namespacedvo_1_1core_ab9c199d221775a923e2549ad7e15c323}{Num\+Type}} \&scale)
\item 
static void \mbox{\hyperlink{classdvo_1_1core_1_1_math_sse_a762ff763ee60cc18d6e5bc9197b601a5}{add}} (Eigen\+::\+Matrix$<$ \mbox{\hyperlink{namespacedvo_1_1core_ab9c199d221775a923e2549ad7e15c323}{Num\+Type}}, 6, 1 $>$ \&vec, const Eigen\+::\+Matrix$<$ \mbox{\hyperlink{namespacedvo_1_1core_ab9c199d221775a923e2549ad7e15c323}{Num\+Type}}, 6, 1 $>$ \&other, const \mbox{\hyperlink{namespacedvo_1_1core_ab9c199d221775a923e2549ad7e15c323}{Num\+Type}} \&scale)
\end{DoxyCompactItemize}


\subsection{Member Function Documentation}
\mbox{\Hypertarget{classdvo_1_1core_1_1_math_sse_a762ff763ee60cc18d6e5bc9197b601a5}\label{classdvo_1_1core_1_1_math_sse_a762ff763ee60cc18d6e5bc9197b601a5}} 
\index{dvo\+::core\+::\+Math\+Sse@{dvo\+::core\+::\+Math\+Sse}!add@{add}}
\index{add@{add}!dvo\+::core\+::\+Math\+Sse@{dvo\+::core\+::\+Math\+Sse}}
\subsubsection{\texorpdfstring{add()}{add()}\hspace{0.1cm}{\footnotesize\ttfamily [1/5]}}
{\footnotesize\ttfamily template$<$int Enabled, typename Num\+Type $>$ \\
static void \mbox{\hyperlink{classdvo_1_1core_1_1_math_sse}{dvo\+::core\+::\+Math\+Sse}}$<$ Enabled, \mbox{\hyperlink{namespacedvo_1_1core_ab9c199d221775a923e2549ad7e15c323}{Num\+Type}} $>$\+::add (\begin{DoxyParamCaption}\item[{Eigen\+::\+Matrix$<$ \mbox{\hyperlink{namespacedvo_1_1core_ab9c199d221775a923e2549ad7e15c323}{Num\+Type}}, 6, 1 $>$ \&}]{vec,  }\item[{const Eigen\+::\+Matrix$<$ \mbox{\hyperlink{namespacedvo_1_1core_ab9c199d221775a923e2549ad7e15c323}{Num\+Type}}, 6, 1 $>$ \&}]{other,  }\item[{const \mbox{\hyperlink{namespacedvo_1_1core_ab9c199d221775a923e2549ad7e15c323}{Num\+Type}} \&}]{scale }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}

\mbox{\Hypertarget{classdvo_1_1core_1_1_math_sse_a942e37dc174d6ed03a48fcb9e9b53b88}\label{classdvo_1_1core_1_1_math_sse_a942e37dc174d6ed03a48fcb9e9b53b88}} 
\index{dvo\+::core\+::\+Math\+Sse@{dvo\+::core\+::\+Math\+Sse}!add@{add}}
\index{add@{add}!dvo\+::core\+::\+Math\+Sse@{dvo\+::core\+::\+Math\+Sse}}
\subsubsection{\texorpdfstring{add()}{add()}\hspace{0.1cm}{\footnotesize\ttfamily [2/5]}}
{\footnotesize\ttfamily template$<$$>$ \\
void \mbox{\hyperlink{classdvo_1_1core_1_1_math_sse}{dvo\+::core\+::\+Math\+Sse}}$<$ \mbox{\hyperlink{structdvo_1_1core_1_1_sse_a4fd9b55a1ec035f837cc78f33d45a9adadefbacd4d80d2e8ba64c1583a4fda95a}{Sse\+::\+Enabled}}, float $>$\+::add (\begin{DoxyParamCaption}\item[{Eigen\+::\+Matrix$<$ float, 6, 1 $>$ \&}]{vec,  }\item[{const Eigen\+::\+Matrix$<$ float, 6, 1 $>$ \&}]{other,  }\item[{const float \&}]{scale }\end{DoxyParamCaption})}

\mbox{\Hypertarget{classdvo_1_1core_1_1_math_sse_a569d441b55c932cf1220a93ef5f155f3}\label{classdvo_1_1core_1_1_math_sse_a569d441b55c932cf1220a93ef5f155f3}} 
\index{dvo\+::core\+::\+Math\+Sse@{dvo\+::core\+::\+Math\+Sse}!add@{add}}
\index{add@{add}!dvo\+::core\+::\+Math\+Sse@{dvo\+::core\+::\+Math\+Sse}}
\subsubsection{\texorpdfstring{add()}{add()}\hspace{0.1cm}{\footnotesize\ttfamily [3/5]}}
{\footnotesize\ttfamily template$<$$>$ \\
void \mbox{\hyperlink{classdvo_1_1core_1_1_math_sse}{dvo\+::core\+::\+Math\+Sse}}$<$ \mbox{\hyperlink{structdvo_1_1core_1_1_sse_a4fd9b55a1ec035f837cc78f33d45a9adadefbacd4d80d2e8ba64c1583a4fda95a}{Sse\+::\+Enabled}}, double $>$\+::add (\begin{DoxyParamCaption}\item[{Eigen\+::\+Matrix$<$ double, 6, 1 $>$ \&}]{vec,  }\item[{const Eigen\+::\+Matrix$<$ double, 6, 1 $>$ \&}]{other,  }\item[{const double \&}]{scale }\end{DoxyParamCaption})}

\mbox{\Hypertarget{classdvo_1_1core_1_1_math_sse_a942e37dc174d6ed03a48fcb9e9b53b88}\label{classdvo_1_1core_1_1_math_sse_a942e37dc174d6ed03a48fcb9e9b53b88}} 
\index{dvo\+::core\+::\+Math\+Sse@{dvo\+::core\+::\+Math\+Sse}!add@{add}}
\index{add@{add}!dvo\+::core\+::\+Math\+Sse@{dvo\+::core\+::\+Math\+Sse}}
\subsubsection{\texorpdfstring{add()}{add()}\hspace{0.1cm}{\footnotesize\ttfamily [4/5]}}
{\footnotesize\ttfamily template$<$$>$ \\
void \mbox{\hyperlink{classdvo_1_1core_1_1_math_sse}{dvo\+::core\+::\+Math\+Sse}}$<$ \mbox{\hyperlink{structdvo_1_1core_1_1_sse_a4fd9b55a1ec035f837cc78f33d45a9adadefbacd4d80d2e8ba64c1583a4fda95a}{Sse\+::\+Enabled}}, float $>$\+::add (\begin{DoxyParamCaption}\item[{Eigen\+::\+Matrix$<$ float, 6, 1 $>$ \&}]{vec,  }\item[{const Eigen\+::\+Matrix$<$ float, 6, 1 $>$ \&}]{other,  }\item[{const float \&}]{scale }\end{DoxyParamCaption})}

\mbox{\Hypertarget{classdvo_1_1core_1_1_math_sse_a569d441b55c932cf1220a93ef5f155f3}\label{classdvo_1_1core_1_1_math_sse_a569d441b55c932cf1220a93ef5f155f3}} 
\index{dvo\+::core\+::\+Math\+Sse@{dvo\+::core\+::\+Math\+Sse}!add@{add}}
\index{add@{add}!dvo\+::core\+::\+Math\+Sse@{dvo\+::core\+::\+Math\+Sse}}
\subsubsection{\texorpdfstring{add()}{add()}\hspace{0.1cm}{\footnotesize\ttfamily [5/5]}}
{\footnotesize\ttfamily template$<$$>$ \\
void \mbox{\hyperlink{classdvo_1_1core_1_1_math_sse}{dvo\+::core\+::\+Math\+Sse}}$<$ \mbox{\hyperlink{structdvo_1_1core_1_1_sse_a4fd9b55a1ec035f837cc78f33d45a9adadefbacd4d80d2e8ba64c1583a4fda95a}{Sse\+::\+Enabled}}, double $>$\+::add (\begin{DoxyParamCaption}\item[{Eigen\+::\+Matrix$<$ double, 6, 1 $>$ \&}]{vec,  }\item[{const Eigen\+::\+Matrix$<$ double, 6, 1 $>$ \&}]{other,  }\item[{const double \&}]{scale }\end{DoxyParamCaption})}

\mbox{\Hypertarget{classdvo_1_1core_1_1_math_sse_af3aa0fc81f7709b6f12e3d771741e469}\label{classdvo_1_1core_1_1_math_sse_af3aa0fc81f7709b6f12e3d771741e469}} 
\index{dvo\+::core\+::\+Math\+Sse@{dvo\+::core\+::\+Math\+Sse}!add\+Outer\+Product@{add\+Outer\+Product}}
\index{add\+Outer\+Product@{add\+Outer\+Product}!dvo\+::core\+::\+Math\+Sse@{dvo\+::core\+::\+Math\+Sse}}
\subsubsection{\texorpdfstring{add\+Outer\+Product()}{addOuterProduct()}\hspace{0.1cm}{\footnotesize\ttfamily [1/5]}}
{\footnotesize\ttfamily template$<$int Enabled, typename Num\+Type $>$ \\
static void \mbox{\hyperlink{classdvo_1_1core_1_1_math_sse}{dvo\+::core\+::\+Math\+Sse}}$<$ Enabled, \mbox{\hyperlink{namespacedvo_1_1core_ab9c199d221775a923e2549ad7e15c323}{Num\+Type}} $>$\+::add\+Outer\+Product (\begin{DoxyParamCaption}\item[{Eigen\+::\+Matrix$<$ \mbox{\hyperlink{namespacedvo_1_1core_ab9c199d221775a923e2549ad7e15c323}{Num\+Type}}, 6, 6 $>$ \&}]{mat,  }\item[{const Eigen\+::\+Matrix$<$ \mbox{\hyperlink{namespacedvo_1_1core_ab9c199d221775a923e2549ad7e15c323}{Num\+Type}}, 6, 1 $>$ \&}]{vec,  }\item[{const \mbox{\hyperlink{namespacedvo_1_1core_ab9c199d221775a923e2549ad7e15c323}{Num\+Type}} \&}]{scale }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}

\mbox{\Hypertarget{classdvo_1_1core_1_1_math_sse_a5d8a137703df78832e1cfb591b290cb0}\label{classdvo_1_1core_1_1_math_sse_a5d8a137703df78832e1cfb591b290cb0}} 
\index{dvo\+::core\+::\+Math\+Sse@{dvo\+::core\+::\+Math\+Sse}!add\+Outer\+Product@{add\+Outer\+Product}}
\index{add\+Outer\+Product@{add\+Outer\+Product}!dvo\+::core\+::\+Math\+Sse@{dvo\+::core\+::\+Math\+Sse}}
\subsubsection{\texorpdfstring{add\+Outer\+Product()}{addOuterProduct()}\hspace{0.1cm}{\footnotesize\ttfamily [2/5]}}
{\footnotesize\ttfamily template$<$$>$ \\
void \mbox{\hyperlink{classdvo_1_1core_1_1_math_sse}{dvo\+::core\+::\+Math\+Sse}}$<$ \mbox{\hyperlink{structdvo_1_1core_1_1_sse_a4fd9b55a1ec035f837cc78f33d45a9adadefbacd4d80d2e8ba64c1583a4fda95a}{Sse\+::\+Enabled}}, float $>$\+::add\+Outer\+Product (\begin{DoxyParamCaption}\item[{Eigen\+::\+Matrix$<$ float, 6, 6 $>$ \&}]{mat,  }\item[{const Eigen\+::\+Matrix$<$ float, 6, 1 $>$ \&}]{vec,  }\item[{const float \&}]{scale }\end{DoxyParamCaption})}

\mbox{\Hypertarget{classdvo_1_1core_1_1_math_sse_a5d8a137703df78832e1cfb591b290cb0}\label{classdvo_1_1core_1_1_math_sse_a5d8a137703df78832e1cfb591b290cb0}} 
\index{dvo\+::core\+::\+Math\+Sse@{dvo\+::core\+::\+Math\+Sse}!add\+Outer\+Product@{add\+Outer\+Product}}
\index{add\+Outer\+Product@{add\+Outer\+Product}!dvo\+::core\+::\+Math\+Sse@{dvo\+::core\+::\+Math\+Sse}}
\subsubsection{\texorpdfstring{add\+Outer\+Product()}{addOuterProduct()}\hspace{0.1cm}{\footnotesize\ttfamily [3/5]}}
{\footnotesize\ttfamily template$<$$>$ \\
void \mbox{\hyperlink{classdvo_1_1core_1_1_math_sse}{dvo\+::core\+::\+Math\+Sse}}$<$ \mbox{\hyperlink{structdvo_1_1core_1_1_sse_a4fd9b55a1ec035f837cc78f33d45a9adadefbacd4d80d2e8ba64c1583a4fda95a}{Sse\+::\+Enabled}}, float $>$\+::add\+Outer\+Product (\begin{DoxyParamCaption}\item[{Eigen\+::\+Matrix$<$ float, 6, 6 $>$ \&}]{mat,  }\item[{const Eigen\+::\+Matrix$<$ float, 6, 1 $>$ \&}]{vec,  }\item[{const float \&}]{scale }\end{DoxyParamCaption})}

idea\+:

vec = \mbox{[}j0 j1 j2 j3 j4 j5\mbox{]}

vec $\ast$ vec.\+transpose() = \mbox{[} j0$\ast$j0 j0$\ast$j1 j0$\ast$j2 j0$\ast$j3 j0$\ast$j4 j0$\ast$j5 j1$\ast$j0 j1$\ast$j1 j1$\ast$j2 j1$\ast$j3 j1$\ast$j4 j1$\ast$j5 j2$\ast$j0 j2$\ast$j1 j2$\ast$j2 j2$\ast$j3 j2$\ast$j4 j2$\ast$j5 j3$\ast$j0 j3$\ast$j1 j3$\ast$j2 j3$\ast$j3 j3$\ast$j4 j3$\ast$j5 j4$\ast$j0 j4$\ast$j1 j4$\ast$j2 j4$\ast$j3 j4$\ast$j4 j4$\ast$j5 j5$\ast$j0 j5$\ast$j1 j5$\ast$j2 j5$\ast$j3 j5$\ast$j4 j5$\ast$j5 \mbox{]}

row multiplicators\+:

j0 $\ast$ \mbox{[}j0 j1 j2 j3 j4 j5\mbox{]} j1 $\ast$ \mbox{[}j0 j1 j2 j3 j4 j5\mbox{]} j2 $\ast$ \mbox{[}j0 j1 j2 j3 j4 j5\mbox{]} j3 $\ast$ \mbox{[}j0 j1 j2 j3 j4 j5\mbox{]} j4 $\ast$ \mbox{[}j0 j1 j2 j3 j4 j5\mbox{]} j5 $\ast$ \mbox{[}j0 j1 j2 j3 j4 j5\mbox{]}

substitute\+:

v1 = \mbox{[}j0 j1 j2 j3\mbox{]}, v2 = \mbox{[}j4 j5 j0 j1\mbox{]}, v3 = \mbox{[}j2 j3 j4 j5\mbox{]}

calculate\+:

\mbox{[}j0 j0 j0 j0\mbox{]} $\ast$ v1, \mbox{[}j0 j0 j1 j1\mbox{]} $\ast$ v2, \mbox{[}j1 j1 j1 j1\mbox{]} $\ast$ v3 \mbox{[}j2 j2 j2 j2\mbox{]} $\ast$ v1, \mbox{[}j2 j2 j3 j3\mbox{]} $\ast$ v2, \mbox{[}j3 j3 j3 j3\mbox{]} $\ast$ v3 \mbox{[}j4 j4 j4 j4\mbox{]} $\ast$ v1, \mbox{[}j4 j4 j5 j5\mbox{]} $\ast$ v2, \mbox{[}j5 j5 j5 j5\mbox{]} $\ast$ v3

the vectors for multiplication can be obtained by shuffling v1 and v2 (they are prescaled with scale to v1s and v2s)

after each multiplication add result to matrix\mbox{\Hypertarget{classdvo_1_1core_1_1_math_sse_a8403622e21ba348610e4ca96d7c1915c}\label{classdvo_1_1core_1_1_math_sse_a8403622e21ba348610e4ca96d7c1915c}} 
\index{dvo\+::core\+::\+Math\+Sse@{dvo\+::core\+::\+Math\+Sse}!add\+Outer\+Product@{add\+Outer\+Product}}
\index{add\+Outer\+Product@{add\+Outer\+Product}!dvo\+::core\+::\+Math\+Sse@{dvo\+::core\+::\+Math\+Sse}}
\subsubsection{\texorpdfstring{add\+Outer\+Product()}{addOuterProduct()}\hspace{0.1cm}{\footnotesize\ttfamily [4/5]}}
{\footnotesize\ttfamily template$<$$>$ \\
void \mbox{\hyperlink{classdvo_1_1core_1_1_math_sse}{dvo\+::core\+::\+Math\+Sse}}$<$ \mbox{\hyperlink{structdvo_1_1core_1_1_sse_a4fd9b55a1ec035f837cc78f33d45a9adadefbacd4d80d2e8ba64c1583a4fda95a}{Sse\+::\+Enabled}}, double $>$\+::add\+Outer\+Product (\begin{DoxyParamCaption}\item[{Eigen\+::\+Matrix$<$ double, 6, 6 $>$ \&}]{mat,  }\item[{const Eigen\+::\+Matrix$<$ double, 6, 1 $>$ \&}]{vec,  }\item[{const double \&}]{scale }\end{DoxyParamCaption})}

\mbox{\Hypertarget{classdvo_1_1core_1_1_math_sse_a8403622e21ba348610e4ca96d7c1915c}\label{classdvo_1_1core_1_1_math_sse_a8403622e21ba348610e4ca96d7c1915c}} 
\index{dvo\+::core\+::\+Math\+Sse@{dvo\+::core\+::\+Math\+Sse}!add\+Outer\+Product@{add\+Outer\+Product}}
\index{add\+Outer\+Product@{add\+Outer\+Product}!dvo\+::core\+::\+Math\+Sse@{dvo\+::core\+::\+Math\+Sse}}
\subsubsection{\texorpdfstring{add\+Outer\+Product()}{addOuterProduct()}\hspace{0.1cm}{\footnotesize\ttfamily [5/5]}}
{\footnotesize\ttfamily template$<$$>$ \\
void \mbox{\hyperlink{classdvo_1_1core_1_1_math_sse}{dvo\+::core\+::\+Math\+Sse}}$<$ \mbox{\hyperlink{structdvo_1_1core_1_1_sse_a4fd9b55a1ec035f837cc78f33d45a9adadefbacd4d80d2e8ba64c1583a4fda95a}{Sse\+::\+Enabled}}, double $>$\+::add\+Outer\+Product (\begin{DoxyParamCaption}\item[{Eigen\+::\+Matrix$<$ double, 6, 6 $>$ \&}]{mat,  }\item[{const Eigen\+::\+Matrix$<$ double, 6, 1 $>$ \&}]{vec,  }\item[{const double \&}]{scale }\end{DoxyParamCaption})}



The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
dvo\+\_\+core/include/dvo/core/\mbox{\hyperlink{math__sse_8h}{math\+\_\+sse.\+h}}\end{DoxyCompactItemize}
