\doxysection{gko::\+experimental::\+reorder::\+Scaled\+Reordered\texorpdfstring{$<$}{<} Value\+Type, Index\+Type \texorpdfstring{$>$}{>} Class Template Reference}
\hypertarget{classgko_1_1experimental_1_1reorder_1_1ScaledReordered}{}\label{classgko_1_1experimental_1_1reorder_1_1ScaledReordered}\index{gko::experimental::reorder::ScaledReordered$<$ ValueType, IndexType $>$@{gko::experimental::reorder::ScaledReordered$<$ ValueType, IndexType $>$}}


Provides an interface to wrap reorderings like \doxylink{classgko_1_1experimental_1_1reorder_1_1Rcm}{Rcm} and diagonal scaling like equilibration around a \doxylink{classgko_1_1LinOp}{Lin\+Op} like e.\+g.  




{\ttfamily \+\#include $<$ginkgo/\+core/\+reorder/\+scaled\+\_\+reordered.\+hpp$>$}



Inheritance diagram for gko::\+experimental::\+reorder::\+Scaled\+Reordered\texorpdfstring{$<$}{<} Value\+Type, Index\+Type \texorpdfstring{$>$}{>}:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classgko_1_1experimental_1_1reorder_1_1ScaledReordered__inherit__graph}
\end{center}
\end{figure}


Collaboration diagram for gko::\+experimental::\+reorder::\+Scaled\+Reordered\texorpdfstring{$<$}{<} Value\+Type, Index\+Type \texorpdfstring{$>$}{>}:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classgko_1_1experimental_1_1reorder_1_1ScaledReordered__coll__graph}
\end{center}
\end{figure}
\doxysubsubsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \doxymbox{\hyperlink{structgko_1_1experimental_1_1reorder_1_1ScaledReordered_1_1parameters__type}{parameters\+\_\+type}}
\item 
class \doxymbox{\hyperlink{classgko_1_1experimental_1_1reorder_1_1ScaledReordered_1_1Factory}{Factory}}
\end{DoxyCompactItemize}
\doxysubsubsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1experimental_1_1reorder_1_1ScaledReordered_aba7440718469e518b1035a0873f14b49}\label{classgko_1_1experimental_1_1reorder_1_1ScaledReordered_aba7440718469e518b1035a0873f14b49} 
using {\bfseries value\+\_\+type} = Value\+Type
\item 
\Hypertarget{classgko_1_1experimental_1_1reorder_1_1ScaledReordered_a9a17c9bb1a785e6b3a1617d350b70efb}\label{classgko_1_1experimental_1_1reorder_1_1ScaledReordered_a9a17c9bb1a785e6b3a1617d350b70efb} 
using {\bfseries index\+\_\+type} = Index\+Type
\item 
using \doxymbox{\hyperlink{classgko_1_1experimental_1_1reorder_1_1ScaledReordered_a24ded70f3ab98cd8e1ca9ca343982570}{Reordering\+Base\+Factory}}
\end{DoxyCompactItemize}
\doxysubsection*{Public Types inherited from \doxymbox{\hyperlink{classgko_1_1EnablePolymorphicAssignment}{gko::\+\+Enable\+Polymorphic\+Assignment$<$ Scaled\+Reordered$<$ default\+\_\+precision, int32 $>$ $>$}}}
\begin{DoxyCompactItemize}
\item 
using {\bfseries result\+\_\+type}
\end{DoxyCompactItemize}
\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1experimental_1_1reorder_1_1ScaledReordered_abb5acb7fd7a9c369ee1965668946361e}\label{classgko_1_1experimental_1_1reorder_1_1ScaledReordered_abb5acb7fd7a9c369ee1965668946361e} 
std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ {\bfseries get\+\_\+system\+\_\+matrix} () const
\item 
\Hypertarget{classgko_1_1experimental_1_1reorder_1_1ScaledReordered_a3df9c30caeb62f1e86d09d0e9b6a8735}\label{classgko_1_1experimental_1_1reorder_1_1ScaledReordered_a3df9c30caeb62f1e86d09d0e9b6a8735} 
std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ {\bfseries get\+\_\+inner\+\_\+operator} () const
\item 
\Hypertarget{classgko_1_1experimental_1_1reorder_1_1ScaledReordered_a46228f43cebd03bf697462423c06578b}\label{classgko_1_1experimental_1_1reorder_1_1ScaledReordered_a46228f43cebd03bf697462423c06578b} 
const \doxymbox{\hyperlink{structgko_1_1experimental_1_1reorder_1_1ScaledReordered_1_1parameters__type}{parameters\+\_\+type}} \& {\bfseries get\+\_\+parameters} () const
\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1EnableLinOp}{gko::\+\+Enable\+Lin\+Op$<$ Scaled\+Reordered$<$ default\+\_\+precision, int32 $>$ $>$}}}
\begin{DoxyCompactItemize}
\item 
const Scaled\+Reordered$<$ \doxymbox{\hyperlink{namespacegko_a89637c833af7ae805802226d97cebebf}{default\+\_\+precision}}, \doxymbox{\hyperlink{namespacegko_a16bd14c10900eb804d784908d8aab5ab}{int32}} $>$ \texorpdfstring{$\ast$}{*} {\bfseries apply} (\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ b, \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ x) const
\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1EnablePolymorphicAssignment}{gko::\+\+Enable\+Polymorphic\+Assignment$<$ Scaled\+Reordered$<$ default\+\_\+precision, int32 $>$ $>$}}}
\begin{DoxyCompactItemize}
\item 
void {\bfseries convert\+\_\+to} (result\+\_\+type \texorpdfstring{$\ast$}{*}result) const override
\item 
void {\bfseries move\+\_\+to} (result\+\_\+type \texorpdfstring{$\ast$}{*}result) override
\end{DoxyCompactItemize}
\doxysubsubsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1experimental_1_1reorder_1_1ScaledReordered_a3f931505a1b4af6f23f3d3d301248385}\label{classgko_1_1experimental_1_1reorder_1_1ScaledReordered_a3f931505a1b4af6f23f3d3d301248385} 
static auto {\bfseries build} () -\/$>$ decltype(\doxymbox{\hyperlink{classgko_1_1EnableDefaultFactory_a1d077101d9e788e6c65f088612d14cc3}{Factory::\+create}}())
\end{DoxyCompactItemize}
\doxysubsubsection*{Friends}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1experimental_1_1reorder_1_1ScaledReordered_ae37afcab6586664510b758d12b3f149e}\label{classgko_1_1experimental_1_1reorder_1_1ScaledReordered_ae37afcab6586664510b758d12b3f149e} 
class {\bfseries Enable\+Lin\+Op$<$ Scaled\+Reordered, Lin\+Op $>$}
\item 
\Hypertarget{classgko_1_1experimental_1_1reorder_1_1ScaledReordered_a9104f1e9775d64e1d34cfa75dc494222}\label{classgko_1_1experimental_1_1reorder_1_1ScaledReordered_a9104f1e9775d64e1d34cfa75dc494222} 
class {\bfseries Enable\+Polymorphic\+Object$<$ Scaled\+Reordered, Lin\+Op $>$}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
\subsubsection*{template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$\newline
class gko::\+experimental::\+reorder::\+\+Scaled\+Reordered$<$ Value\+Type, Index\+Type $>$}
Provides an interface to wrap reorderings like \doxylink{classgko_1_1experimental_1_1reorder_1_1Rcm}{Rcm} and diagonal scaling like equilibration around a \doxylink{classgko_1_1LinOp}{Lin\+Op} like e.\+g. 

a sparse direct solver.

Reorderings can be useful for reducing fill-\/in in the numerical factorization phase of direct solvers, diagonal scaling can help improve the numerical stability by reducing the condition number of the system matrix.

With a permutation matrix P, a row scaling R and a column scaling C, the inner operator is applied to the system matrix P\texorpdfstring{$\ast$}{*}\+R\texorpdfstring{$\ast$}{*}\+A\texorpdfstring{$\ast$}{*}\+C\texorpdfstring{$\ast$}{*}\+P\texorpdfstring{$^\wedge$}{\string^}T instead of A. Instead of A\texorpdfstring{$\ast$}{*}x = b, the inner operator attempts to solve the equivalent linear system P\texorpdfstring{$\ast$}{*}\+R\texorpdfstring{$\ast$}{*}\+A\texorpdfstring{$\ast$}{*}\+C\texorpdfstring{$\ast$}{*}\+P\texorpdfstring{$^\wedge$}{\string^}\+T\texorpdfstring{$\ast$}{*}y = P\texorpdfstring{$\ast$}{*}\+R\texorpdfstring{$\ast$}{*}b and retrieves the solution x = C\texorpdfstring{$\ast$}{*}\+P\texorpdfstring{$^\wedge$}{\string^}\+T\texorpdfstring{$\ast$}{*}y. Note:\+ The inner system matrix is computed from a clone of A, so the original system matrix is not changed.


\begin{DoxyTemplParams}{Template Parameters}
{\em Value\+Type} & Type of the values of all matrices used in this class \\
\hline
{\em Index\+Type} & Type of the indices of all matrices used in this class \\
\hline
\end{DoxyTemplParams}


\label{doc-typedef-members}
\Hypertarget{classgko_1_1experimental_1_1reorder_1_1ScaledReordered_doc-typedef-members}
\doxysubsection{Member Typedef Documentation}
\Hypertarget{classgko_1_1experimental_1_1reorder_1_1ScaledReordered_a24ded70f3ab98cd8e1ca9ca343982570}\index{gko::experimental::reorder::ScaledReordered$<$ ValueType, IndexType $>$@{gko::experimental::reorder::ScaledReordered$<$ ValueType, IndexType $>$}!ReorderingBaseFactory@{ReorderingBaseFactory}}
\index{ReorderingBaseFactory@{ReorderingBaseFactory}!gko::experimental::reorder::ScaledReordered$<$ ValueType, IndexType $>$@{gko::experimental::reorder::ScaledReordered$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{ReorderingBaseFactory}{ReorderingBaseFactory}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1reorder_1_1ScaledReordered_a24ded70f3ab98cd8e1ca9ca343982570} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
using \doxymbox{\hyperlink{classgko_1_1experimental_1_1reorder_1_1ScaledReordered}{gko::\+experimental::\+reorder::\+\+Scaled\+Reordered}}$<$ Value\+Type, Index\+Type $>$::\+\+Reordering\+Base\+Factory}

{\bfseries Initial value:\+}
\begin{DoxyCode}{0}
\DoxyCodeLine{}
\DoxyCodeLine{\doxymbox{\hyperlink{classgko_1_1AbstractFactory}{AbstractFactory<gko::reorder::ReorderingBase<IndexType>}},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1reorder_1_1ReorderingBaseArgs}{gko::reorder::ReorderingBaseArgs}}>}

\end{DoxyCode}


The documentation for this class was generated from the following file:\+\begin{DoxyCompactItemize}
\item 
ginkgo/\+core/\+reorder/\+scaled\+\_\+reordered.\+hpp\end{DoxyCompactItemize}
