\section{atlas::smithnormal Namespace Reference}
\label{namespaceatlas_1_1smithnormal}\index{atlas::smithnormal@{atlas::smithnormal}}


\subsection*{Functions}
\begin{CompactItemize}
\item 
template$<$typename C$>$ void {\bf add\-Multiple} (std::vector$<$ C $>$ \&, const std::vector$<$ C $>$ \&, const C \&)
\item 
template$<$typename C$>$ void {\bf block\-Reduce} (typename std::vector$<$ std::vector$<$ C $>$ $>$::iterator, {\bf matrix::Matrix}$<$ C $>$ \&)
\item 
template$<$typename C$>$ void {\bf block\-Shape} (typename std::vector$<$ std::vector$<$ C $>$ $>$::iterator, {\bf matrix::Matrix}$<$ C $>$ \&)
\item 
template$<$typename C$>$ void {\bf column\-Reduce} ({\bf matrix::Matrix}$<$ C $>$ \&, size\_\-t)
\item 
template$<$typename C$>$ {\bf matrix::Matrix}$<$ C $>$::index\_\-pair {\bf find\-Block\-Reduction} (const {\bf matrix::Matrix}$<$ C $>$ \&)
\item 
template$<$typename C$>$ {\bf matrix::Matrix}$<$ C $>$::index\_\-pair {\bf find\-Reduction} (const {\bf matrix::Matrix}$<$ C $>$ \&)
\item 
template$<$typename C$>$ bool {\bf has\-Block\-Reduction} (const {\bf matrix::Matrix}$<$ C $>$ \&)
\item 
template$<$typename C$>$ bool {\bf has\-Reduction} (const {\bf matrix::Matrix}$<$ C $>$ \&)
\item 
template$<$typename C$>$ void {\bf prepare\-Matrix} (typename std::vector$<$ std::vector$<$ C $>$ $>$::iterator, {\bf matrix::Matrix}$<$ C $>$ \&)
\item 
template$<$typename C$>$ void {\bf reduce} (typename std::vector$<$ std::vector$<$ C $>$ $>$::iterator, {\bf matrix::Matrix}$<$ C $>$ \&)
\item 
template$<$typename C$>$ void {\bf row\-Reduce} (typename std::vector$<$ std::vector$<$ C $>$ $>$::iterator, {\bf matrix::Matrix}$<$ C $>$ \&, size\_\-t)
\item 
template$<$typename C$>$ void {\bf smith\-Normal} (std::vector$<$ C $>$ \&, typename std::vector$<$ std::vector$<$ C $>$ $>$::iterator, const {\bf matrix::Matrix}$<$ C $>$ \&)
\item 
template$<$typename C$>$ void {\bf smith\-Normal} (std::vector$<$ C $>$ \&, typename std::vector$<$ std::vector$<$ C $>$ $>$::iterator, const std::vector$<$ std::vector$<$ C $>$ $>$ \&)
\item 
template$<$typename C$>$ void {\bf smith\-Step} (typename std::vector$<$ std::vector$<$ C $>$ $>$::iterator, {\bf matrix::Matrix}$<$ C $>$ \&)
\item 
template$<$typename C$>$ void {\bf block\-Reduce} ({\bf Matrix}$<$ C $>$ \&m)
\end{CompactItemize}


\subsection{Function Documentation}
\index{atlas::smithnormal@{atlas::smithnormal}!addMultiple@{addMultiple}}
\index{addMultiple@{addMultiple}!atlas::smithnormal@{atlas::smithnormal}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$typename C$>$ void atlas::smithnormal::add\-Multiple (std::vector$<$ C $>$ \&, const std::vector$<$ C $>$ \&, const C \&)}\label{namespaceatlas_1_1smithnormal_6c88d2bdfcb8dca73467bfdee59106f5}


\index{atlas::smithnormal@{atlas::smithnormal}!blockReduce@{blockReduce}}
\index{blockReduce@{blockReduce}!atlas::smithnormal@{atlas::smithnormal}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$typename C$>$ void atlas::smithnormal::block\-Reduce (Matrix$<$ C $>$ \& {\em m})}\label{namespaceatlas_1_1smithnormal_253097190072c6c0f1b25b0b3c73bcee}


\index{atlas::smithnormal@{atlas::smithnormal}!blockReduce@{blockReduce}}
\index{blockReduce@{blockReduce}!atlas::smithnormal@{atlas::smithnormal}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$typename C$>$ void atlas::smithnormal::block\-Reduce (typename std::vector$<$ std::vector$<$ C $>$ $>$::iterator, matrix::Matrix$<$ C $>$ \&)}\label{namespaceatlas_1_1smithnormal_3992601d679da8e84499f3b456909c51}


\index{atlas::smithnormal@{atlas::smithnormal}!blockShape@{blockShape}}
\index{blockShape@{blockShape}!atlas::smithnormal@{atlas::smithnormal}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$typename C$>$ void atlas::smithnormal::block\-Shape (typename std::vector$<$ std::vector$<$ C $>$ $>$::iterator, matrix::Matrix$<$ C $>$ \&)}\label{namespaceatlas_1_1smithnormal_ca2c300d0a072e282a3d37a388011866}


\index{atlas::smithnormal@{atlas::smithnormal}!columnReduce@{columnReduce}}
\index{columnReduce@{columnReduce}!atlas::smithnormal@{atlas::smithnormal}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$typename C$>$ void atlas::smithnormal::column\-Reduce (matrix::Matrix$<$ C $>$ \&, size\_\-t)}\label{namespaceatlas_1_1smithnormal_bea7a90f8a6da11ab0571b88274cec12}


\index{atlas::smithnormal@{atlas::smithnormal}!findBlockReduction@{findBlockReduction}}
\index{findBlockReduction@{findBlockReduction}!atlas::smithnormal@{atlas::smithnormal}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$typename C$>$ {\bf Matrix}$<$ C $>$::index\_\-pair atlas::smithnormal::find\-Block\-Reduction (const matrix::Matrix$<$ C $>$ \&)}\label{namespaceatlas_1_1smithnormal_7147ef22c0209184b391c08a8310e599}


\index{atlas::smithnormal@{atlas::smithnormal}!findReduction@{findReduction}}
\index{findReduction@{findReduction}!atlas::smithnormal@{atlas::smithnormal}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$typename C$>$ {\bf Matrix}$<$ C $>$::index\_\-pair atlas::smithnormal::find\-Reduction (const matrix::Matrix$<$ C $>$ \&)}\label{namespaceatlas_1_1smithnormal_26d20ea9ddba7b9093797c1decb0942b}


\index{atlas::smithnormal@{atlas::smithnormal}!hasBlockReduction@{hasBlockReduction}}
\index{hasBlockReduction@{hasBlockReduction}!atlas::smithnormal@{atlas::smithnormal}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$typename C$>$ bool atlas::smithnormal::has\-Block\-Reduction (const matrix::Matrix$<$ C $>$ \&)}\label{namespaceatlas_1_1smithnormal_3a607f6cb9247a3893ae9cea894012c4}


\index{atlas::smithnormal@{atlas::smithnormal}!hasReduction@{hasReduction}}
\index{hasReduction@{hasReduction}!atlas::smithnormal@{atlas::smithnormal}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$typename C$>$ bool atlas::smithnormal::has\-Reduction (const matrix::Matrix$<$ C $>$ \&)}\label{namespaceatlas_1_1smithnormal_012cf2a4ce454fd9bbde3cac3b2747ff}


\index{atlas::smithnormal@{atlas::smithnormal}!prepareMatrix@{prepareMatrix}}
\index{prepareMatrix@{prepareMatrix}!atlas::smithnormal@{atlas::smithnormal}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$typename C$>$ void atlas::smithnormal::prepare\-Matrix (typename std::vector$<$ std::vector$<$ C $>$ $>$::iterator, matrix::Matrix$<$ C $>$ \&)}\label{namespaceatlas_1_1smithnormal_5612ac70e1638cf1de9494d3b3788000}


\index{atlas::smithnormal@{atlas::smithnormal}!reduce@{reduce}}
\index{reduce@{reduce}!atlas::smithnormal@{atlas::smithnormal}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$typename C$>$ void atlas::smithnormal::reduce (typename std::vector$<$ std::vector$<$ C $>$ $>$::iterator, matrix::Matrix$<$ C $>$ \&)}\label{namespaceatlas_1_1smithnormal_2dae41430641a9588302e38f437ed557}


\index{atlas::smithnormal@{atlas::smithnormal}!rowReduce@{rowReduce}}
\index{rowReduce@{rowReduce}!atlas::smithnormal@{atlas::smithnormal}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$typename C$>$ void atlas::smithnormal::row\-Reduce (typename std::vector$<$ std::vector$<$ C $>$ $>$::iterator, matrix::Matrix$<$ C $>$ \&, size\_\-t)}\label{namespaceatlas_1_1smithnormal_6919bdeec635931346a8c86866cd32c0}


\index{atlas::smithnormal@{atlas::smithnormal}!smithNormal@{smithNormal}}
\index{smithNormal@{smithNormal}!atlas::smithnormal@{atlas::smithnormal}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$typename C$>$ void atlas::smithnormal::smith\-Normal (std::vector$<$ C $>$ \&, typename std::vector$<$ std::vector$<$ C $>$ $>$::iterator, const std::vector$<$ std::vector$<$ C $>$ $>$ \&)}\label{namespaceatlas_1_1smithnormal_2f12ab120ad07931fba2323e377009f1}


\index{atlas::smithnormal@{atlas::smithnormal}!smithNormal@{smithNormal}}
\index{smithNormal@{smithNormal}!atlas::smithnormal@{atlas::smithnormal}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$typename C$>$ void atlas::smithnormal::smith\-Normal (std::vector$<$ C $>$ \&, typename std::vector$<$ std::vector$<$ C $>$ $>$::iterator, const matrix::Matrix$<$ C $>$ \&)}\label{namespaceatlas_1_1smithnormal_2618ed82170a2b02168e59bd93108803}


\index{atlas::smithnormal@{atlas::smithnormal}!smithStep@{smithStep}}
\index{smithStep@{smithStep}!atlas::smithnormal@{atlas::smithnormal}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$typename C$>$ void atlas::smithnormal::smith\-Step (typename std::vector$<$ std::vector$<$ C $>$ $>$::iterator, matrix::Matrix$<$ C $>$ \&)}\label{namespaceatlas_1_1smithnormal_4db0a84aed226ef00b07a4a88abbc4b7}


