\doxysection{mc64.\+hpp}
\hypertarget{mc64_8hpp_source}{}\label{mc64_8hpp_source}\index{ginkgo/core/reorder/mc64.hpp@{ginkgo/core/reorder/mc64.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\_MC64\_HPP\_}}
\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#define\ GKO\_PUBLIC\_CORE\_REORDER\_MC64\_HPP\_}}
\DoxyCodeLine{00007\ }
\DoxyCodeLine{00008\ }
\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ <limits>}}
\DoxyCodeLine{00010\ \textcolor{preprocessor}{\#include\ <memory>}}
\DoxyCodeLine{00011\ }
\DoxyCodeLine{00012\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/abstract\_factory.hpp>}}
\DoxyCodeLine{00013\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/composition.hpp>}}
\DoxyCodeLine{00014\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/dim.hpp>}}
\DoxyCodeLine{00015\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/lin\_op.hpp>}}
\DoxyCodeLine{00016\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/polymorphic\_object.hpp>}}
\DoxyCodeLine{00017\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/types.hpp>}}
\DoxyCodeLine{00018\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/utils.hpp>}}
\DoxyCodeLine{00019\ \textcolor{preprocessor}{\#include\ <ginkgo/core/matrix/csr.hpp>}}
\DoxyCodeLine{00020\ \textcolor{preprocessor}{\#include\ <ginkgo/core/matrix/diagonal.hpp>}}
\DoxyCodeLine{00021\ \textcolor{preprocessor}{\#include\ <ginkgo/core/matrix/identity.hpp>}}
\DoxyCodeLine{00022\ \textcolor{preprocessor}{\#include\ <ginkgo/core/matrix/permutation.hpp>}}
\DoxyCodeLine{00023\ \textcolor{preprocessor}{\#include\ <ginkgo/core/matrix/sparsity\_csr.hpp>}}
\DoxyCodeLine{00024\ \textcolor{preprocessor}{\#include\ <ginkgo/core/reorder/reordering\_base.hpp>}}
\DoxyCodeLine{00025\ }
\DoxyCodeLine{00026\ }
\DoxyCodeLine{00027\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko}{gko}}\ \{}
\DoxyCodeLine{00028\ \textcolor{keyword}{namespace\ }experimental\ \{}
\DoxyCodeLine{00034\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko_1_1experimental_1_1reorder}{reorder}}\ \{}
\DoxyCodeLine{00035\ }
\DoxyCodeLine{00036\ }
\DoxyCodeLine{00044\ \textcolor{keyword}{enum\ class}\ \doxymbox{\hyperlink{namespacegko_1_1experimental_1_1reorder_abb527d05639fb24776a2ee02b66dc174}{mc64\_strategy}}\ \{\ max\_diagonal\_product,\ max\_diagonal\_sum\ \};}
\DoxyCodeLine{00045\ }
\DoxyCodeLine{00046\ }
\DoxyCodeLine{00076\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType\ =\ default\_precision,\ \textcolor{keyword}{typename}\ IndexType\ =\ \textcolor{keywordtype}{int}32>}
\DoxyCodeLine{00077\ \textcolor{keyword}{class\ }Mc64\ final}
\DoxyCodeLine{00078\ \ \ \ \ :\ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1EnablePolymorphicObject}{EnablePolymorphicObject}}<Mc64<ValueType,\ IndexType>,\ LinOpFactory>,}
\DoxyCodeLine{00079\ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1EnablePolymorphicAssignment}{EnablePolymorphicAssignment}}<Mc64<ValueType,\ IndexType>>\ \{}
\DoxyCodeLine{00080\ \ \ \ \ GKO\_ASSERT\_SUPPORTED\_VALUE\_AND\_INDEX\_TYPE;}
\DoxyCodeLine{00081\ }
\DoxyCodeLine{00082\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00083\ \ \ \ \ \textcolor{keyword}{struct\ }\doxymbox{\hyperlink{structgko_1_1experimental_1_1reorder_1_1Mc64_1_1parameters__type}{parameters\_type}};}
\DoxyCodeLine{00084\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1EnablePolymorphicObject}{EnablePolymorphicObject}}<Mc64<ValueType,\ IndexType>,}
\DoxyCodeLine{00085\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1LinOpFactory}{LinOpFactory}}>;}
\DoxyCodeLine{00086\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1enable__parameters__type}{enable\_parameters\_type}}<\doxymbox{\hyperlink{structgko_1_1experimental_1_1reorder_1_1Mc64_1_1parameters__type}{parameters\_type}},}
\DoxyCodeLine{00087\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Mc64<ValueType,\ IndexType>>;}
\DoxyCodeLine{00088\ }
\DoxyCodeLine{00089\ \ \ \ \ \textcolor{keyword}{using\ }value\_type\ =\ ValueType;}
\DoxyCodeLine{00090\ \ \ \ \ \textcolor{keyword}{using\ }index\_type\ =\ IndexType;}
\DoxyCodeLine{00091\ \ \ \ \ \textcolor{keyword}{using\ }result\_type\ =\ \doxymbox{\hyperlink{classgko_1_1Composition}{Composition<value\_type>}};}
\DoxyCodeLine{00092\ \ \ \ \ \textcolor{keyword}{using\ }matrix\_type\ =\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{matrix::Csr<value\_type,\ index\_type>}};}
\DoxyCodeLine{00093\ }
\DoxyCodeLine{00094\ \ \ \ \ \textcolor{keyword}{struct\ }\doxymbox{\hyperlink{structgko_1_1experimental_1_1reorder_1_1Mc64_1_1parameters__type}{parameters\_type}}}
\DoxyCodeLine{00095\ \ \ \ \ \ \ \ \ :\ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1enable__parameters__type}{enable\_parameters\_type}}<parameters\_type,\ Mc64>\ \{}
\DoxyCodeLine{00099\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_1_1experimental_1_1reorder_abb527d05639fb24776a2ee02b66dc174}{mc64\_strategy}}\ \doxymbox{\hyperlink{group__LinOp_ga49d4c09c39f06b22bebbbfd1d8bfe450}{GKO\_FACTORY\_PARAMETER\_SCALAR}}(}
\DoxyCodeLine{00100\ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1experimental_1_1reorder_1_1Mc64_1_1parameters__type_a3cd7884e4eee0eb261243f74f4bd097c}{strategy}},\ mc64\_strategy::max\_diagonal\_product);}
\DoxyCodeLine{00101\ }
\DoxyCodeLine{00106\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a107302a750bfa82a2107c77293f791c9}{remove\_complex<ValueType>}}\ \doxymbox{\hyperlink{group__LinOp_ga49d4c09c39f06b22bebbbfd1d8bfe450}{GKO\_FACTORY\_PARAMETER\_SCALAR}}(}
\DoxyCodeLine{00107\ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1experimental_1_1reorder_1_1Mc64_1_1parameters__type_a7e97cf72eced67c6920d8d24039e1436}{tolerance}},}
\DoxyCodeLine{00108\ \ \ \ \ \ \ \ \ \ \ \ \ 50\ *\ std::numeric\_limits<\doxymbox{\hyperlink{namespacegko_a107302a750bfa82a2107c77293f791c9}{remove\_complex<ValueType>}}>::epsilon());}
\DoxyCodeLine{00109\ \ \ \ \ \};}
\DoxyCodeLine{00110\ }
\DoxyCodeLine{00116\ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1experimental_1_1reorder_1_1Mc64_1_1parameters__type}{parameters\_type}}\&\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1reorder_1_1Mc64_aff576ccfb68ed94bd84774944d815053}{get\_parameters}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ parameters\_;\ \}}
\DoxyCodeLine{00117\ }
\DoxyCodeLine{00125\ \ \ \ \ std::unique\_ptr<result\_type>\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1reorder_1_1Mc64_af1d14e06e76327d95b5577bd944a077c}{generate}}(}
\DoxyCodeLine{00126\ \ \ \ \ \ \ \ \ std::shared\_ptr<const\ LinOp>\ system\_matrix)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00127\ }
\DoxyCodeLine{00129\ \ \ \ \ \textcolor{keyword}{static}\ \doxymbox{\hyperlink{structgko_1_1experimental_1_1reorder_1_1Mc64_1_1parameters__type}{parameters\_type}}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1reorder_1_1Mc64_acf4ff0eb6edb11ea44b9745ece9ded65}{build}}()\ \{\ \textcolor{keywordflow}{return}\ \{\};\ \}}
\DoxyCodeLine{00130\ }
\DoxyCodeLine{00131\ \textcolor{keyword}{private}:}
\DoxyCodeLine{00132\ \ \ \ \ \textcolor{keyword}{explicit}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1reorder_1_1Mc64}{Mc64}}(std::shared\_ptr<const\ Executor>\ exec,}
\DoxyCodeLine{00133\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ parameters\_type\&\ params\ =\ \{\});}
\DoxyCodeLine{00134\ }
\DoxyCodeLine{00135\ \ \ \ \ std::unique\_ptr<LinOp>\ generate\_impl(}
\DoxyCodeLine{00136\ \ \ \ \ \ \ \ \ std::shared\_ptr<const\ LinOp>\ system\_matrix)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00137\ }
\DoxyCodeLine{00138\ \ \ \ \ parameters\_type\ parameters\_;}
\DoxyCodeLine{00139\ \};}
\DoxyCodeLine{00140\ }
\DoxyCodeLine{00141\ }
\DoxyCodeLine{00142\ \}\ \ \textcolor{comment}{//\ namespace\ reorder}}
\DoxyCodeLine{00143\ \}\ \ \textcolor{comment}{//\ namespace\ experimental}}
\DoxyCodeLine{00144\ \}\ \ \textcolor{comment}{//\ namespace\ gko}}
\DoxyCodeLine{00145\ }
\DoxyCodeLine{00146\ }
\DoxyCodeLine{00147\ \textcolor{preprocessor}{\#endif\ \ }\textcolor{comment}{//\ GKO\_PUBLIC\_CORE\_REORDER\_MC64\_HPP\_}}

\end{DoxyCode}
