\hypertarget{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm}{\section{Evaluate\-Linear\-Algebra\-Unary\-Algorithm Class Reference}
\label{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm}\index{Evaluate\-Linear\-Algebra\-Unary\-Algorithm@{Evaluate\-Linear\-Algebra\-Unary\-Algorithm}}
}


Computes several unary operations on general matrices.  




{\ttfamily \#include $<$Evaluate\-Linear\-Algebra\-Unary\-Algo.\-h$>$}

Inheritance diagram for Evaluate\-Linear\-Algebra\-Unary\-Algorithm\-:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=3.938116cm]{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
enum \hyperlink{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a7215803e478cdd4bdf4f1b8087cae87b}{Operator} \{ \hyperlink{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a7215803e478cdd4bdf4f1b8087cae87ba6e03f275c09bc302b861e86c19ca70a1}{N\-E\-G\-A\-T\-E}, 
\hyperlink{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a7215803e478cdd4bdf4f1b8087cae87ba3416ba33b450af93f7e5944a20253e68}{T\-R\-A\-N\-S\-P\-O\-S\-E}, 
\hyperlink{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a7215803e478cdd4bdf4f1b8087cae87ba15648d5d0b52de2c9a6393c78035394e}{S\-C\-A\-L\-A\-R\-\_\-\-M\-U\-L\-T\-I\-P\-L\-Y}
 \}
\item 
typedef \\*
\hyperlink{namespace_s_c_i_run_1_1_core_1_1_datatypes_acf94600e0800b5ff125ef53de094d271}{S\-C\-I\-Run\-::\-Core\-::\-Datatypes\-::\-Dense\-Matrix\-Const\-Handle} \hyperlink{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a41b63fdb83a15741b2bf8a1de7f972b5}{Inputs}
\item 
typedef boost\-::tuple$<$ \hyperlink{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a7215803e478cdd4bdf4f1b8087cae87b}{Operator}, \\*
boost\-::optional$<$ double $>$ $>$ \hyperlink{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_ad1a398de01704d2d0b851a0d560c41c8}{Parameters}
\item 
typedef \\*
\hyperlink{namespace_s_c_i_run_1_1_core_1_1_datatypes_aa8a28fd7db3f72bf1d932025a4d900cc}{S\-C\-I\-Run\-::\-Core\-::\-Datatypes\-::\-Dense\-Matrix\-Handle} \hyperlink{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a9e742a106eaa6e231ae5e46afe21acaa}{Outputs}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_aa3642474194840ba95350b988b203495}{Evaluate\-Linear\-Algebra\-Unary\-Algorithm} ()
\item 
\hyperlink{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a9e742a106eaa6e231ae5e46afe21acaa}{Outputs} \hyperlink{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a7ad125661de83d055867c1cca2560073}{run} (const \hyperlink{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a41b63fdb83a15741b2bf8a1de7f972b5}{Inputs} \&matrix, const \hyperlink{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_ad1a398de01704d2d0b851a0d560c41c8}{Parameters} \&params) const 
\item 
\hyperlink{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_algorithm_output}{Algorithm\-Output} \hyperlink{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_ae2dbf4ad18790ed52b6ba5f2ce34561c}{run\-\_\-generic} (const \hyperlink{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_algorithm_input}{Algorithm\-Input} \&input) const 
\end{DoxyCompactItemize}
\subsection*{Additional Inherited Members}


\subsection{Detailed Description}
Computes several unary operations on general matrices. 


\begin{DoxyTemplParams}{Template Parameters}
{\em \-\_\-\-Matrix\-Type} & the type of the matrix of which we are computing the eigendecomposition; this is expected to be an instantiation of the \hyperlink{class_s_c_i_run_1_1_matrix}{Matrix} class template. Currently, only real matrices are supported.\\
\hline
\end{DoxyTemplParams}
The eigenvalues and eigenvectors of a matrix $ A $ are scalars $ \lambda $ and vectors $ v $ such that $ Av = \lambda v $. If $ D $ is a diagonal matrix with the eigenvalues on the diagonal, and $ V $ is a matrix with the eigenvectors as its columns, then $ A V = V D $. The matrix $ V $ is almost always invertible, in which case we have $ A = V D V^{-1} $. This is called the eigendecomposition.

Call the function compute() to compute the eigenvalues and eigenvectors of a given matrix. Alternatively, you can use the Eigen\-Solver(const Matrix\-Type\&, bool) constructor which computes the eigenvalues and eigenvectors at construction time. Once the eigenvalue and eigenvectors are computed, they can be retrieved with the \hyperlink{namespace_s_c_i_run_1_1_linear_algebra_a9e9a7b2cd42c0fd7e5f92831e5fa1696}{eigenvalues()} and \hyperlink{namespace_s_c_i_run_1_1_linear_algebra_a873b77268bbb2a7ded01fb4415686804}{eigenvectors()} functions. The pseudo\-Eigenvalue\-Matrix() and pseudo\-Eigenvectors() methods allow the construction of the pseudo-\/eigendecomposition.

The documentation for Eigen\-Solver(const Matrix\-Type\&, bool) contains an example of the typical use of this class.

\begin{DoxyNote}{Note}
The implementation is adapted from \href{http://math.nist.gov/javanumerics/jama/}{\tt J\-A\-M\-A} (public domain). Their code is based on E\-I\-S\-P\-A\-C\-K.
\end{DoxyNote}
\begin{DoxySeeAlso}{See Also}
\hyperlink{namespace_s_c_i_run_1_1_linear_algebra_a9e9a7b2cd42c0fd7e5f92831e5fa1696}{Matrix\-Base\-::eigenvalues()}, class Complex\-Eigen\-Solver, class Self\-Adjoint\-Eigen\-Solver 
\end{DoxySeeAlso}


\subsection{Member Typedef Documentation}
\hypertarget{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a41b63fdb83a15741b2bf8a1de7f972b5}{\index{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm@{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm}!Inputs@{Inputs}}
\index{Inputs@{Inputs}!SCIRun::Core::Algorithms::Math::EvaluateLinearAlgebraUnaryAlgorithm@{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm}}
\subsubsection[{Inputs}]{\setlength{\rightskip}{0pt plus 5cm}typedef {\bf S\-C\-I\-Run\-::\-Core\-::\-Datatypes\-::\-Dense\-Matrix\-Const\-Handle} {\bf Inputs}}}\label{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a41b63fdb83a15741b2bf8a1de7f972b5}
\hypertarget{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a9e742a106eaa6e231ae5e46afe21acaa}{\index{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm@{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm}!Outputs@{Outputs}}
\index{Outputs@{Outputs}!SCIRun::Core::Algorithms::Math::EvaluateLinearAlgebraUnaryAlgorithm@{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm}}
\subsubsection[{Outputs}]{\setlength{\rightskip}{0pt plus 5cm}typedef {\bf S\-C\-I\-Run\-::\-Core\-::\-Datatypes\-::\-Dense\-Matrix\-Handle} {\bf Outputs}}}\label{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a9e742a106eaa6e231ae5e46afe21acaa}
\hypertarget{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_ad1a398de01704d2d0b851a0d560c41c8}{\index{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm@{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm}!Parameters@{Parameters}}
\index{Parameters@{Parameters}!SCIRun::Core::Algorithms::Math::EvaluateLinearAlgebraUnaryAlgorithm@{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm}}
\subsubsection[{Parameters}]{\setlength{\rightskip}{0pt plus 5cm}typedef boost\-::tuple$<${\bf Operator}, boost\-::optional$<$double$>$ $>$ {\bf Parameters}}}\label{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_ad1a398de01704d2d0b851a0d560c41c8}


\subsection{Member Enumeration Documentation}
\hypertarget{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a7215803e478cdd4bdf4f1b8087cae87b}{\index{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm@{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm}!Operator@{Operator}}
\index{Operator@{Operator}!SCIRun::Core::Algorithms::Math::EvaluateLinearAlgebraUnaryAlgorithm@{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm}}
\subsubsection[{Operator}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf Operator}}}\label{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a7215803e478cdd4bdf4f1b8087cae87b}
\begin{Desc}
\item[Enumerator]\par
\begin{description}
\index{N\-E\-G\-A\-T\-E@{N\-E\-G\-A\-T\-E}!S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm@{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm}}\index{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm@{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm}!N\-E\-G\-A\-T\-E@{N\-E\-G\-A\-T\-E}}\item[{\em 
\hypertarget{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a7215803e478cdd4bdf4f1b8087cae87ba6e03f275c09bc302b861e86c19ca70a1}{N\-E\-G\-A\-T\-E}\label{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a7215803e478cdd4bdf4f1b8087cae87ba6e03f275c09bc302b861e86c19ca70a1}
}]\index{T\-R\-A\-N\-S\-P\-O\-S\-E@{T\-R\-A\-N\-S\-P\-O\-S\-E}!S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm@{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm}}\index{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm@{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm}!T\-R\-A\-N\-S\-P\-O\-S\-E@{T\-R\-A\-N\-S\-P\-O\-S\-E}}\item[{\em 
\hypertarget{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a7215803e478cdd4bdf4f1b8087cae87ba3416ba33b450af93f7e5944a20253e68}{T\-R\-A\-N\-S\-P\-O\-S\-E}\label{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a7215803e478cdd4bdf4f1b8087cae87ba3416ba33b450af93f7e5944a20253e68}
}]\index{S\-C\-A\-L\-A\-R\-\_\-\-M\-U\-L\-T\-I\-P\-L\-Y@{S\-C\-A\-L\-A\-R\-\_\-\-M\-U\-L\-T\-I\-P\-L\-Y}!S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm@{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm}}\index{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm@{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm}!S\-C\-A\-L\-A\-R\-\_\-\-M\-U\-L\-T\-I\-P\-L\-Y@{S\-C\-A\-L\-A\-R\-\_\-\-M\-U\-L\-T\-I\-P\-L\-Y}}\item[{\em 
\hypertarget{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a7215803e478cdd4bdf4f1b8087cae87ba15648d5d0b52de2c9a6393c78035394e}{S\-C\-A\-L\-A\-R\-\_\-\-M\-U\-L\-T\-I\-P\-L\-Y}\label{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a7215803e478cdd4bdf4f1b8087cae87ba15648d5d0b52de2c9a6393c78035394e}
}]\end{description}
\end{Desc}


\subsection{Constructor \& Destructor Documentation}
\hypertarget{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_aa3642474194840ba95350b988b203495}{\index{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm@{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm}!Evaluate\-Linear\-Algebra\-Unary\-Algorithm@{Evaluate\-Linear\-Algebra\-Unary\-Algorithm}}
\index{Evaluate\-Linear\-Algebra\-Unary\-Algorithm@{Evaluate\-Linear\-Algebra\-Unary\-Algorithm}!SCIRun::Core::Algorithms::Math::EvaluateLinearAlgebraUnaryAlgorithm@{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm}}
\subsubsection[{Evaluate\-Linear\-Algebra\-Unary\-Algorithm}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Evaluate\-Linear\-Algebra\-Unary\-Algorithm} (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_aa3642474194840ba95350b988b203495}


\subsection{Member Function Documentation}
\hypertarget{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a7ad125661de83d055867c1cca2560073}{\index{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm@{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm}!run@{run}}
\index{run@{run}!SCIRun::Core::Algorithms::Math::EvaluateLinearAlgebraUnaryAlgorithm@{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm}}
\subsubsection[{run}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Evaluate\-Linear\-Algebra\-Unary\-Algorithm\-::\-Outputs} run (
\begin{DoxyParamCaption}
\item[{const {\bf Inputs} \&}]{matrix, }
\item[{const {\bf Parameters} \&}]{params}
\end{DoxyParamCaption}
) const}}\label{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_a7ad125661de83d055867c1cca2560073}
\begin{DoxyRefDesc}{Todo}
\item[\hyperlink{todo__todo000061}{Todo}]\-: absolutely need matrix move semantics here!!!!!!! \end{DoxyRefDesc}
\hypertarget{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_ae2dbf4ad18790ed52b6ba5f2ce34561c}{\index{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm@{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm}!run\-\_\-generic@{run\-\_\-generic}}
\index{run\-\_\-generic@{run\-\_\-generic}!SCIRun::Core::Algorithms::Math::EvaluateLinearAlgebraUnaryAlgorithm@{S\-C\-I\-Run\-::\-Core\-::\-Algorithms\-::\-Math\-::\-Evaluate\-Linear\-Algebra\-Unary\-Algorithm}}
\subsubsection[{run\-\_\-generic}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Algorithm\-Output} run\-\_\-generic (
\begin{DoxyParamCaption}
\item[{const {\bf Algorithm\-Input} \&}]{input}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_math_1_1_evaluate_linear_algebra_unary_algorithm_ae2dbf4ad18790ed52b6ba5f2ce34561c}


Implements \hyperlink{class_s_c_i_run_1_1_core_1_1_algorithms_1_1_algorithm_interface_abf1160cbc2d53c212909224c08e98c08}{Algorithm\-Interface}.



The documentation for this class was generated from the following files\-:\begin{DoxyCompactItemize}
\item 
Core/\-Algorithms/\-Math/\hyperlink{_evaluate_linear_algebra_unary_algo_8h}{Evaluate\-Linear\-Algebra\-Unary\-Algo.\-h}\item 
Core/\-Algorithms/\-Math/\hyperlink{_evaluate_linear_algebra_unary_algo_8cc}{Evaluate\-Linear\-Algebra\-Unary\-Algo.\-cc}\end{DoxyCompactItemize}
