\doxysection{scaled\+\_\+reordered.\+hpp}
\hypertarget{scaled__reordered_8hpp_source}{}\label{scaled__reordered_8hpp_source}\index{ginkgo/core/reorder/scaled\_reordered.hpp@{ginkgo/core/reorder/scaled\_reordered.hpp}}

\begin{DoxyCode}{0}
\DoxyCodeLine{00001\ \textcolor{comment}{//\ SPDX-\/FileCopyrightText:\ 2017\ -\/\ 2025\ The\ Ginkgo\ authors}}
\DoxyCodeLine{00002\ \textcolor{comment}{//}}
\DoxyCodeLine{00003\ \textcolor{comment}{//\ SPDX-\/License-\/Identifier:\ BSD-\/3-\/Clause}}
\DoxyCodeLine{00004\ }
\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#ifndef\ GKO\_PUBLIC\_CORE\_REORDER\_SCALED\_REORDERED\_HPP\_}}
\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#define\ GKO\_PUBLIC\_CORE\_REORDER\_SCALED\_REORDERED\_HPP\_}}
\DoxyCodeLine{00007\ }
\DoxyCodeLine{00008\ }
\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/abstract\_factory.hpp>}}
\DoxyCodeLine{00010\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/executor.hpp>}}
\DoxyCodeLine{00011\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/lin\_op.hpp>}}
\DoxyCodeLine{00012\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/types.hpp>}}
\DoxyCodeLine{00013\ \textcolor{preprocessor}{\#include\ <ginkgo/core/matrix/dense.hpp>}}
\DoxyCodeLine{00014\ \textcolor{preprocessor}{\#include\ <ginkgo/core/matrix/diagonal.hpp>}}
\DoxyCodeLine{00015\ \textcolor{preprocessor}{\#include\ <ginkgo/core/matrix/identity.hpp>}}
\DoxyCodeLine{00016\ \textcolor{preprocessor}{\#include\ <ginkgo/core/matrix/permutation.hpp>}}
\DoxyCodeLine{00017\ \textcolor{preprocessor}{\#include\ <ginkgo/core/reorder/reordering\_base.hpp>}}
\DoxyCodeLine{00018\ }
\DoxyCodeLine{00019\ }
\DoxyCodeLine{00020\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko}{gko}}\ \{}
\DoxyCodeLine{00021\ \textcolor{keyword}{namespace\ }experimental\ \{}
\DoxyCodeLine{00022\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko_1_1experimental_1_1reorder}{reorder}}\ \{}
\DoxyCodeLine{00023\ }
\DoxyCodeLine{00024\ }
\DoxyCodeLine{00043\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType\ =\ default\_precision,\ \textcolor{keyword}{typename}\ IndexType\ =\ \textcolor{keywordtype}{int}32>}
\DoxyCodeLine{00044\ \textcolor{keyword}{class\ }ScaledReordered}
\DoxyCodeLine{00045\ \ \ \ \ :\ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}<ScaledReordered<ValueType,\ IndexType>>\ \{}
\DoxyCodeLine{00046\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}<ScaledReordered,\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}>;}
\DoxyCodeLine{00047\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1EnablePolymorphicObject}{EnablePolymorphicObject}}<ScaledReordered,\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}>;}
\DoxyCodeLine{00048\ \ \ \ \ GKO\_ASSERT\_SUPPORTED\_VALUE\_AND\_INDEX\_TYPE;}
\DoxyCodeLine{00049\ }
\DoxyCodeLine{00050\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00051\ \ \ \ \ \textcolor{keyword}{using\ }value\_type\ =\ ValueType;}
\DoxyCodeLine{00052\ \ \ \ \ \textcolor{keyword}{using\ }index\_type\ =\ IndexType;}
\DoxyCodeLine{00053\ \ \ \ \ \textcolor{keyword}{using\ }ReorderingBaseFactory\ =}
\DoxyCodeLine{00054\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1AbstractFactory}{AbstractFactory<gko::reorder::ReorderingBase<IndexType>}},}
\DoxyCodeLine{00055\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1reorder_1_1ReorderingBaseArgs}{gko::reorder::ReorderingBaseArgs}}>;}
\DoxyCodeLine{00056\ }
\DoxyCodeLine{00057\ \ \ \ \ std::shared\_ptr<const\ LinOp>\ get\_system\_matrix()\textcolor{keyword}{\ const}}
\DoxyCodeLine{00058\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00059\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ system\_matrix\_;}
\DoxyCodeLine{00060\ \ \ \ \ \}}
\DoxyCodeLine{00061\ }
\DoxyCodeLine{00062\ \ \ \ \ std::shared\_ptr<const\ LinOp>\ get\_inner\_operator()\textcolor{keyword}{\ const}}
\DoxyCodeLine{00063\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00064\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ inner\_operator\_;}
\DoxyCodeLine{00065\ \ \ \ \ \}}
\DoxyCodeLine{00066\ }
\DoxyCodeLine{00067\ \ \ \ \ \doxymbox{\hyperlink{group__LinOp_ga1fc8e9d8be0c9ad2d72bc1ddfc6d8358}{GKO\_CREATE\_FACTORY\_PARAMETERS}}(parameters,\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1reorder_1_1ScaledReordered_1_1Factory}{Factory}})}
\DoxyCodeLine{00068\ \ \ \ \ \{}
\DoxyCodeLine{00073\ \ \ \ \ \ \ \ \ std::shared\_ptr<const\ LinOpFactory>\ \doxymbox{\hyperlink{group__LinOp_ga49d4c09c39f06b22bebbbfd1d8bfe450}{GKO\_FACTORY\_PARAMETER\_SCALAR}}(}
\DoxyCodeLine{00074\ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1experimental_1_1reorder_1_1ScaledReordered_1_1parameters__type_a4bf6de12b75fa16983888b0647dc57a4}{inner\_operator}},\ \textcolor{keyword}{nullptr});}
\DoxyCodeLine{00075\ }
\DoxyCodeLine{00081\ \ \ \ \ \ \ \ \ std::shared\_ptr<const\ ReorderingBaseFactory>}
\DoxyCodeLine{00082\ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{group__LinOp_ga49d4c09c39f06b22bebbbfd1d8bfe450}{GKO\_FACTORY\_PARAMETER\_SCALAR}}(\doxymbox{\hyperlink{structgko_1_1experimental_1_1reorder_1_1ScaledReordered_1_1parameters__type_a3d6bee65ddbd57b2ba3e47ae100828bf}{reordering}},\ \textcolor{keyword}{nullptr});}
\DoxyCodeLine{00083\ }
\DoxyCodeLine{00087\ \ \ \ \ \ \ \ \ std::shared\_ptr<const\ matrix::Diagonal<value\_type>>}
\DoxyCodeLine{00088\ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{group__LinOp_ga49d4c09c39f06b22bebbbfd1d8bfe450}{GKO\_FACTORY\_PARAMETER\_SCALAR}}(\doxymbox{\hyperlink{structgko_1_1experimental_1_1reorder_1_1ScaledReordered_1_1parameters__type_a750986fc3820b0d0ced1de4732277971}{row\_scaling}},\ \textcolor{keyword}{nullptr});}
\DoxyCodeLine{00089\ }
\DoxyCodeLine{00093\ \ \ \ \ \ \ \ \ std::shared\_ptr<const\ matrix::Diagonal<value\_type>>}
\DoxyCodeLine{00094\ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{group__LinOp_ga49d4c09c39f06b22bebbbfd1d8bfe450}{GKO\_FACTORY\_PARAMETER\_SCALAR}}(\doxymbox{\hyperlink{structgko_1_1experimental_1_1reorder_1_1ScaledReordered_1_1parameters__type_af1b5ad8a23fc3b5e41394429f4eefd5d}{col\_scaling}},\ \textcolor{keyword}{nullptr});}
\DoxyCodeLine{00095\ \ \ \ \ \};}
\DoxyCodeLine{00096\ \ \ \ \ \doxymbox{\hyperlink{group__LinOp_ga8e0af90ec2414b768266f77cedffc309}{GKO\_ENABLE\_LIN\_OP\_FACTORY}}(ScaledReordered,\ parameters,\ Factory);}
\DoxyCodeLine{00097\ \ \ \ \ \doxymbox{\hyperlink{group__LinOp_ga521f65604cc4cf427dcb2ecfa49b757c}{GKO\_ENABLE\_BUILD\_METHOD}}(Factory);}
\DoxyCodeLine{00098\ }
\DoxyCodeLine{00099\ \textcolor{keyword}{protected}:}
\DoxyCodeLine{00103\ \ \ \ \ \textcolor{keyword}{explicit}\ ScaledReordered(std::shared\_ptr<const\ Executor>\ exec)}
\DoxyCodeLine{00104\ \ \ \ \ \ \ \ \ :\ \doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}<ScaledReordered>(\doxymbox{\hyperlink{namespacestd}{std}}::move(exec)),}
\DoxyCodeLine{00105\ \ \ \ \ \ \ \ \ \ \ permutation\_array\_\{exec\}}
\DoxyCodeLine{00106\ \ \ \ \ \{\}}
\DoxyCodeLine{00107\ }
\DoxyCodeLine{00108\ \ \ \ \ \textcolor{keyword}{explicit}\ ScaledReordered(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1reorder_1_1ScaledReordered_1_1Factory}{Factory}}*\ factory,}
\DoxyCodeLine{00109\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ std::shared\_ptr<const\ LinOp>\ system\_matrix)}
\DoxyCodeLine{00110\ \ \ \ \ \ \ \ \ :\ \doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}<ScaledReordered>(factory-\/>get\_executor(),}
\DoxyCodeLine{00111\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ system\_matrix-\/>get\_size()),}
\DoxyCodeLine{00112\ \ \ \ \ \ \ \ \ \ \ parameters\_\{factory-\/>get\_parameters()\},}
\DoxyCodeLine{00113\ \ \ \ \ \ \ \ \ \ \ permutation\_array\_\{factory-\/>get\_executor()\}}
\DoxyCodeLine{00114\ \ \ \ \ \{}
\DoxyCodeLine{00115\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ For\ now\ only\ support\ square\ matrices.}}
\DoxyCodeLine{00116\ \ \ \ \ \ \ \ \ GKO\_ASSERT\_IS\_SQUARE\_MATRIX(system\_matrix);}
\DoxyCodeLine{00117\ }
\DoxyCodeLine{00118\ \ \ \ \ \ \ \ \ \textcolor{keyword}{auto}\ exec\ =\ this-\/>get\_executor();}
\DoxyCodeLine{00119\ }
\DoxyCodeLine{00120\ \ \ \ \ \ \ \ \ system\_matrix\_\ =\ \doxymbox{\hyperlink{namespacegko_aa194e34282452493231ca7b01ffb5e64}{gko::clone}}(exec,\ system\_matrix);}
\DoxyCodeLine{00121\ }
\DoxyCodeLine{00122\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Scale\ the\ system\ matrix\ if\ scaling\ coefficients\ are\ provided}}
\DoxyCodeLine{00123\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (parameters\_.row\_scaling)\ \{}
\DoxyCodeLine{00124\ \ \ \ \ \ \ \ \ \ \ \ \ GKO\_ASSERT\_EQUAL\_DIMENSIONS(parameters\_.row\_scaling,}
\DoxyCodeLine{00125\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ system\_matrix\_);}
\DoxyCodeLine{00126\ \ \ \ \ \ \ \ \ \ \ \ \ row\_scaling\_\ =\ parameters\_.row\_scaling;}
\DoxyCodeLine{00127\ \ \ \ \ \ \ \ \ \ \ \ \ row\_scaling\_-\/>apply(system\_matrix\_,\ system\_matrix\_);}
\DoxyCodeLine{00128\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{00129\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (parameters\_.\doxymbox{\hyperlink{structgko_1_1experimental_1_1reorder_1_1ScaledReordered_1_1parameters__type_af1b5ad8a23fc3b5e41394429f4eefd5d}{col\_scaling}})\ \{}
\DoxyCodeLine{00130\ \ \ \ \ \ \ \ \ \ \ \ \ GKO\_ASSERT\_EQUAL\_DIMENSIONS(parameters\_.\doxymbox{\hyperlink{structgko_1_1experimental_1_1reorder_1_1ScaledReordered_1_1parameters__type_af1b5ad8a23fc3b5e41394429f4eefd5d}{col\_scaling}},}
\DoxyCodeLine{00131\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ system\_matrix\_);}
\DoxyCodeLine{00132\ \ \ \ \ \ \ \ \ \ \ \ \ col\_scaling\_\ =\ parameters\_.\doxymbox{\hyperlink{structgko_1_1experimental_1_1reorder_1_1ScaledReordered_1_1parameters__type_af1b5ad8a23fc3b5e41394429f4eefd5d}{col\_scaling}};}
\DoxyCodeLine{00133\ \ \ \ \ \ \ \ \ \ \ \ \ col\_scaling\_-\/>rapply(system\_matrix\_,\ system\_matrix\_);}
\DoxyCodeLine{00134\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{00135\ }
\DoxyCodeLine{00136\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ If\ a\ reordering\ factory\ is\ provided,\ generate\ the\ reordering\ and}}
\DoxyCodeLine{00137\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ permute\ the\ system\ matrix\ accordingly.}}
\DoxyCodeLine{00138\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (parameters\_.\doxymbox{\hyperlink{structgko_1_1experimental_1_1reorder_1_1ScaledReordered_1_1parameters__type_a3d6bee65ddbd57b2ba3e47ae100828bf}{reordering}})\ \{}
\DoxyCodeLine{00139\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{auto}\ reordering\ =\ parameters\_.\doxymbox{\hyperlink{structgko_1_1experimental_1_1reorder_1_1ScaledReordered_1_1parameters__type_a3d6bee65ddbd57b2ba3e47ae100828bf}{reordering}}-\/>generate(system\_matrix\_);}
\DoxyCodeLine{00140\ \ \ \ \ \ \ \ \ \ \ \ \ permutation\_array\_\ =\ reordering-\/>get\_permutation\_array();}
\DoxyCodeLine{00141\ \ \ \ \ \ \ \ \ \ \ \ \ system\_matrix\_\ =\ \doxymbox{\hyperlink{namespacegko_ae3e355a655feea026a7c46814d37a9c9}{as<Permutable<index\_type>}}>(system\_matrix\_)}
\DoxyCodeLine{00142\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -\/>permute(\&permutation\_array\_);}
\DoxyCodeLine{00143\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{00144\ }
\DoxyCodeLine{00145\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Generate\ the\ inner\ operator\ with\ the\ scaled\ and\ reordered\ system}}
\DoxyCodeLine{00146\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ matrix.\ If\ none\ is\ provided,\ use\ the\ Identity.}}
\DoxyCodeLine{00147\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (parameters\_.\doxymbox{\hyperlink{structgko_1_1experimental_1_1reorder_1_1ScaledReordered_1_1parameters__type_a4bf6de12b75fa16983888b0647dc57a4}{inner\_operator}})\ \{}
\DoxyCodeLine{00148\ \ \ \ \ \ \ \ \ \ \ \ \ inner\_operator\_\ =}
\DoxyCodeLine{00149\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ parameters\_.\doxymbox{\hyperlink{structgko_1_1experimental_1_1reorder_1_1ScaledReordered_1_1parameters__type_a4bf6de12b75fa16983888b0647dc57a4}{inner\_operator}}-\/>generate(system\_matrix\_);}
\DoxyCodeLine{00150\ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
\DoxyCodeLine{00151\ \ \ \ \ \ \ \ \ \ \ \ \ inner\_operator\_\ =\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Identity_a55417b971157946c8f5f4f8d30b11aba}{gko::matrix::Identity<value\_type>::create}}(}
\DoxyCodeLine{00152\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ exec,\ this-\/>get\_size()[0]);}
\DoxyCodeLine{00153\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{00154\ \ \ \ \ \}}
\DoxyCodeLine{00155\ }
\DoxyCodeLine{00156\ \ \ \ \ \textcolor{keywordtype}{void}\ apply\_impl(\textcolor{keyword}{const}\ LinOp*\ b,\ LinOp*\ x)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00157\ }
\DoxyCodeLine{00158\ \ \ \ \ \textcolor{keywordtype}{void}\ apply\_impl(\textcolor{keyword}{const}\ LinOp*\ alpha,\ \textcolor{keyword}{const}\ LinOp*\ b,\ \textcolor{keyword}{const}\ LinOp*\ beta,}
\DoxyCodeLine{00159\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ LinOp*\ x)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00160\ }
\DoxyCodeLine{00172\ \ \ \ \ \textcolor{keywordtype}{void}\ set\_cache\_to(\textcolor{keyword}{const}\ LinOp*\ b,\ \textcolor{keyword}{const}\ LinOp*\ x)\textcolor{keyword}{\ const}}
\DoxyCodeLine{00173\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00174\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (cache\_.inner\_b\ ==\ \textcolor{keyword}{nullptr}\ ||}
\DoxyCodeLine{00175\ \ \ \ \ \ \ \ \ \ \ \ \ cache\_.inner\_b-\/>get\_size()\ !=\ b-\/>get\_size())\ \{}
\DoxyCodeLine{00176\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keyword}{auto}\ size\ =\ b-\/>get\_size();}
\DoxyCodeLine{00177\ \ \ \ \ \ \ \ \ \ \ \ \ cache\_.inner\_b\ =}
\DoxyCodeLine{00178\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_ae198b3130d8966418047baa8dabe466c}{matrix::Dense<value\_type>::create}}(this-\/>get\_executor(),\ size);}
\DoxyCodeLine{00179\ \ \ \ \ \ \ \ \ \ \ \ \ cache\_.inner\_x\ =}
\DoxyCodeLine{00180\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_ae198b3130d8966418047baa8dabe466c}{matrix::Dense<value\_type>::create}}(this-\/>get\_executor(),\ size);}
\DoxyCodeLine{00181\ \ \ \ \ \ \ \ \ \ \ \ \ cache\_.intermediate\ =}
\DoxyCodeLine{00182\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_ae198b3130d8966418047baa8dabe466c}{matrix::Dense<value\_type>::create}}(this-\/>get\_executor(),\ size);}
\DoxyCodeLine{00183\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{00184\ \ \ \ \ \ \ \ \ cache\_.inner\_b-\/>copy\_from(b);}
\DoxyCodeLine{00185\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (inner\_operator\_-\/>apply\_uses\_initial\_guess())\ \{}
\DoxyCodeLine{00186\ \ \ \ \ \ \ \ \ \ \ \ \ cache\_.inner\_x-\/>copy\_from(x);}
\DoxyCodeLine{00187\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{00188\ \ \ \ \ \}}
\DoxyCodeLine{00189\ }
\DoxyCodeLine{00190\ \textcolor{keyword}{private}:}
\DoxyCodeLine{00191\ \ \ \ \ std::shared\_ptr<LinOp>\ system\_matrix\_\{\};}
\DoxyCodeLine{00192\ \ \ \ \ std::shared\_ptr<const\ LinOp>\ inner\_operator\_\{\};}
\DoxyCodeLine{00193\ \ \ \ \ std::shared\_ptr<const\ matrix::Diagonal<value\_type>>\ row\_scaling\_\{\};}
\DoxyCodeLine{00194\ \ \ \ \ std::shared\_ptr<const\ matrix::Diagonal<value\_type>>\ col\_scaling\_\{\};}
\DoxyCodeLine{00195\ \ \ \ \ array<index\_type>\ permutation\_array\_\{\};}
\DoxyCodeLine{00196\ }
\DoxyCodeLine{00207\ \ \ \ \ \textcolor{keyword}{mutable}\ \textcolor{keyword}{struct\ }cache\_struct\ \{}
\DoxyCodeLine{00208\ \ \ \ \ \ \ \ \ cache\_struct()\ =\ \textcolor{keywordflow}{default};}
\DoxyCodeLine{00209\ }
\DoxyCodeLine{00210\ \ \ \ \ \ \ \ \ \string~cache\_struct()\ =\ \textcolor{keywordflow}{default};}
\DoxyCodeLine{00211\ }
\DoxyCodeLine{00212\ \ \ \ \ \ \ \ \ cache\_struct(\textcolor{keyword}{const}\ cache\_struct\&)\ \{\}}
\DoxyCodeLine{00213\ }
\DoxyCodeLine{00214\ \ \ \ \ \ \ \ \ cache\_struct(cache\_struct\&\&)\ \{\}}
\DoxyCodeLine{00215\ }
\DoxyCodeLine{00216\ \ \ \ \ \ \ \ \ cache\_struct\&\ operator=(\textcolor{keyword}{const}\ cache\_struct\&)\ \{\ \textcolor{keywordflow}{return}\ *\textcolor{keyword}{this};\ \}}
\DoxyCodeLine{00217\ }
\DoxyCodeLine{00218\ \ \ \ \ \ \ \ \ cache\_struct\&\ operator=(cache\_struct\&\&)\ \{\ \textcolor{keywordflow}{return}\ *\textcolor{keyword}{this};\ \}}
\DoxyCodeLine{00219\ }
\DoxyCodeLine{00220\ \ \ \ \ \ \ \ \ std::unique\_ptr<matrix::Dense<value\_type>>\ inner\_b\{\};}
\DoxyCodeLine{00221\ \ \ \ \ \ \ \ \ std::unique\_ptr<matrix::Dense<value\_type>>\ inner\_x\{\};}
\DoxyCodeLine{00222\ \ \ \ \ \ \ \ \ std::unique\_ptr<matrix::Dense<value\_type>>\ intermediate\{\};}
\DoxyCodeLine{00223\ \ \ \ \ \}\ cache\_;}
\DoxyCodeLine{00224\ \};}
\DoxyCodeLine{00225\ }
\DoxyCodeLine{00226\ }
\DoxyCodeLine{00227\ \}\ \ \textcolor{comment}{//\ namespace\ reorder}}
\DoxyCodeLine{00228\ \}\ \ \textcolor{comment}{//\ namespace\ experimental}}
\DoxyCodeLine{00229\ \}\ \ \textcolor{comment}{//\ namespace\ gko}}
\DoxyCodeLine{00230\ }
\DoxyCodeLine{00231\ }
\DoxyCodeLine{00232\ \textcolor{preprocessor}{\#endif\ \ }\textcolor{comment}{//\ GKO\_PUBLIC\_CORE\_REORDER\_SCALED\_REORDERED\_HPP\_}}

\end{DoxyCode}
