\doxysection{permutation.\+hpp}
\hypertarget{permutation_8hpp_source}{}\label{permutation_8hpp_source}\index{ginkgo/core/matrix/permutation.hpp@{ginkgo/core/matrix/permutation.hpp}}

\begin{DoxyCode}{0}
\DoxyCodeLine{00001\ \textcolor{comment}{//\ SPDX-\/FileCopyrightText:\ 2017\ -\/\ 2024\ 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\_MATRIX\_PERMUTATION\_HPP\_}}
\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#define\ GKO\_PUBLIC\_CORE\_MATRIX\_PERMUTATION\_HPP\_}}
\DoxyCodeLine{00007\ }
\DoxyCodeLine{00008\ }
\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ <algorithm>}}
\DoxyCodeLine{00010\ \textcolor{preprocessor}{\#include\ <memory>}}
\DoxyCodeLine{00011\ \textcolor{preprocessor}{\#include\ <numeric>}}
\DoxyCodeLine{00012\ \textcolor{preprocessor}{\#include\ <vector>}}
\DoxyCodeLine{00013\ }
\DoxyCodeLine{00014\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/array.hpp>}}
\DoxyCodeLine{00015\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/exception.hpp>}}
\DoxyCodeLine{00016\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/exception\_helpers.hpp>}}
\DoxyCodeLine{00017\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/executor.hpp>}}
\DoxyCodeLine{00018\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/lin\_op.hpp>}}
\DoxyCodeLine{00019\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/types.hpp>}}
\DoxyCodeLine{00020\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/utils.hpp>}}
\DoxyCodeLine{00021\ }
\DoxyCodeLine{00022\ }
\DoxyCodeLine{00023\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko}{gko}}\ \{}
\DoxyCodeLine{00024\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko_1_1matrix}{matrix}}\ \{}
\DoxyCodeLine{00025\ }
\DoxyCodeLine{00026\ }
\DoxyCodeLine{00042\ \textcolor{keyword}{enum\ class}\ \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\_mode}}\ :\ \textcolor{keywordtype}{unsigned}\ \{}
\DoxyCodeLine{00044\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972a334c4a4c42fdb79d7ebc3e73b517e6f8}{none}}\ =\ 0b000u,}
\DoxyCodeLine{00046\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972adf347a373b8f92aa0ae3dd920a5ec2f6}{rows}}\ =\ 0b001u,}
\DoxyCodeLine{00048\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972a54ca84a794888fe8d92834787dfa935a}{columns}}\ =\ 0b010u,}
\DoxyCodeLine{00053\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972afeca3c730601be7fd57f1f0b668b4637}{symmetric}}\ =\ 0b011u,}
\DoxyCodeLine{00055\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972aa91c78e040f7b9d158f381e197f8beb4}{inverse}}\ =\ 0b100u,}
\DoxyCodeLine{00060\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972ae984283c0e504f8717eda53ea45edfeb}{inverse\_rows}}\ =\ 0b101u,}
\DoxyCodeLine{00065\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972abc8283157597e4f3b40d77a1986e19d0}{inverse\_columns}}\ =\ 0b110u,}
\DoxyCodeLine{00070\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972ac6667e92e242ff7c30861c4d218297ca}{inverse\_symmetric}}\ =\ 0b111u}
\DoxyCodeLine{00071\ \};}
\DoxyCodeLine{00072\ }
\DoxyCodeLine{00073\ }
\DoxyCodeLine{00075\ \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\_mode}}\ \doxymbox{\hyperlink{namespacegko_1_1matrix_a1351826db36482d9ad54f6ee6eab53f7}{operator|}}(\doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\_mode}}\ a,\ \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\_mode}}\ b);}
\DoxyCodeLine{00076\ }
\DoxyCodeLine{00077\ }
\DoxyCodeLine{00079\ \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\_mode}}\ \doxymbox{\hyperlink{namespacegko_1_1matrix_a2f46b084c07939752afa6eab0394f2e5}{operator\&}}(\doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\_mode}}\ a,\ \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\_mode}}\ b);}
\DoxyCodeLine{00080\ }
\DoxyCodeLine{00081\ }
\DoxyCodeLine{00083\ \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\_mode}}\ \doxymbox{\hyperlink{namespacegko_1_1matrix_ac03a0f9ce5a76b70bf035e75b1a9dbc8}{operator\string^}}(\doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\_mode}}\ a,\ \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\_mode}}\ b);}
\DoxyCodeLine{00084\ }
\DoxyCodeLine{00085\ }
\DoxyCodeLine{00087\ std::ostream\&\ \doxymbox{\hyperlink{namespacegko_1_1matrix_acb7d957294198bb4565dd5e153f22018}{operator<<}}(std::ostream\&\ stream,\ \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\_mode}}\ mode);}
\DoxyCodeLine{00088\ }
\DoxyCodeLine{00089\ }
\DoxyCodeLine{00090\ \textcolor{keyword}{using\ }mask\_type\ =\ \doxymbox{\hyperlink{namespacegko_a09ee89da532d8b1fa6fdecec2d20b9bf}{gko::uint64}};}
\DoxyCodeLine{00091\ }
\DoxyCodeLine{00092\ \textcolor{keyword}{static}\ \textcolor{keyword}{constexpr}\ mask\_type\ row\_permute\ =\ mask\_type\{1\};}
\DoxyCodeLine{00093\ GKO\_DEPRECATED(\textcolor{stringliteral}{"{}permute\ mask\ is\ no\ longer\ supported"{}})}
\DoxyCodeLine{00094\ static\ constexpr\ mask\_type\ column\_permute\ =\ mask\_type\{1\ <<\ 2\};}
\DoxyCodeLine{00095\ GKO\_DEPRECATED(\textcolor{stringliteral}{"{}permute\ mask\ is\ no\ longer\ supported"{}})}
\DoxyCodeLine{00096\ static\ constexpr\ mask\_type\ inverse\_permute\ =\ mask\_type\{1\ <<\ 3\};}
\DoxyCodeLine{00097\ }
\DoxyCodeLine{00110\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ IndexType\ =\ \textcolor{keywordtype}{int}32>}
\DoxyCodeLine{00111\ \textcolor{keyword}{class\ }Permutation\ :\ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}<Permutation<IndexType>>,}
\DoxyCodeLine{00112\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1WritableToMatrixData}{WritableToMatrixData}}<default\_precision,\ IndexType>\ \{}
\DoxyCodeLine{00113\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1EnablePolymorphicObject}{EnablePolymorphicObject}}<Permutation,\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}>;}
\DoxyCodeLine{00114\ }
\DoxyCodeLine{00115\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00116\ \ \ \ \ \textcolor{comment}{//\ value\_type\ is\ only\ available\ to\ enable\ the\ usage\ of\ gko::write}}
\DoxyCodeLine{00117\ \ \ \ \ \textcolor{keyword}{using\ }value\_type\ =\ \doxymbox{\hyperlink{namespacegko_a89637c833af7ae805802226d97cebebf}{default\_precision}};}
\DoxyCodeLine{00118\ \ \ \ \ \textcolor{keyword}{using\ }index\_type\ =\ IndexType;}
\DoxyCodeLine{00119\ }
\DoxyCodeLine{00125\ \ \ \ \ index\_type*\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation_a77d5bd3bd5182c9430ed6c56be14e51b}{get\_permutation}}()\ noexcept\ \{\ \textcolor{keywordflow}{return}\ permutation\_.get\_data();\ \}}
\DoxyCodeLine{00126\ }
\DoxyCodeLine{00134\ \ \ \ \ \textcolor{keyword}{const}\ index\_type*\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation_acd703a5b8f1d938f7ecbc9f793f505d7}{get\_const\_permutation}}()\ const\ noexcept}
\DoxyCodeLine{00135\ \ \ \ \ \{}
\DoxyCodeLine{00136\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ permutation\_.get\_const\_data();}
\DoxyCodeLine{00137\ \ \ \ \ \}}
\DoxyCodeLine{00138\ }
\DoxyCodeLine{00146\ \ \ \ \ GKO\_DEPRECATED(\textcolor{stringliteral}{"{}use\ get\_size()[0]\ instead"{}})}
\DoxyCodeLine{00147\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation_a576d006fe37902ff0b47050ecb87b416}{get\_permutation\_size}}()\ const\ noexcept;}
\DoxyCodeLine{00148\ }
\DoxyCodeLine{00149\ \ \ \ \ GKO\_DEPRECATED(\textcolor{stringliteral}{"{}permute\ mask\ is\ no\ longer\ supported"{}})}
\DoxyCodeLine{00150\ \ \ \ \ mask\_type\ get\_permute\_mask()\ const;}
\DoxyCodeLine{00151\ }
\DoxyCodeLine{00152\ \ \ \ \ GKO\_DEPRECATED(\textcolor{stringliteral}{"{}permute\ mask\ is\ no\ longer\ supported"{}})}
\DoxyCodeLine{00153\ \ \ \ \ \textcolor{keywordtype}{void}\ set\_permute\_mask(mask\_type\ permute\_mask);}
\DoxyCodeLine{00154\ }
\DoxyCodeLine{00161\ \ \ \ \ \doxymbox{\hyperlink{namespacestd}{std}}::unique\_ptr<Permutation>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation_acf8a6a4fb35dbd542f13c588f1d477b7}{compute\_inverse}}()\ const;}
\DoxyCodeLine{00162\ }
\DoxyCodeLine{00174\ \ \ \ \ \doxymbox{\hyperlink{namespacestd}{std}}::unique\_ptr<Permutation>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation_a58a8819131b43a47893b57e534bc14ef}{compose}}(}
\DoxyCodeLine{00175\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param}}<const\ Permutation>\ other)\ const;}
\DoxyCodeLine{00176\ }
\DoxyCodeLine{00177\ \ \ \ \ \textcolor{keywordtype}{void}\ write(\doxymbox{\hyperlink{namespacegko}{gko}}::\doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\_data}}<value\_type,\ index\_type>\&\ data)\ const\ override;}
\DoxyCodeLine{00178\ }
\DoxyCodeLine{00186\ \ \ \ \ static\ \doxymbox{\hyperlink{namespacestd}{std}}::unique\_ptr<Permutation>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation_a1b47c26f7e7ad0be77a6a27a9689f4b5}{create}}(}
\DoxyCodeLine{00187\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacestd}{std}}::shared\_ptr<const\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}>\ exec,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ size\ =\ 0);}
\DoxyCodeLine{00188\ }
\DoxyCodeLine{00204\ \ \ \ \ static\ \doxymbox{\hyperlink{namespacestd}{std}}::unique\_ptr<Permutation>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation_a1b47c26f7e7ad0be77a6a27a9689f4b5}{create}}(}
\DoxyCodeLine{00205\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacestd}{std}}::shared\_ptr<const\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}>\ exec,}
\DoxyCodeLine{00206\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array}}<IndexType>\ permutation\_indices);}
\DoxyCodeLine{00207\ }
\DoxyCodeLine{00208\ \ \ \ \ GKO\_DEPRECATED(}
\DoxyCodeLine{00209\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}dim<2>\ is\ no\ longer\ supported\ as\ a\ dimension\ parameter,\ use\ size\_type\ "{}}}
\DoxyCodeLine{00210\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}instead"{}})}
\DoxyCodeLine{00211\ \ \ \ \ static\ \doxymbox{\hyperlink{namespacestd}{std}}::unique\_ptr<Permutation>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation_a1b47c26f7e7ad0be77a6a27a9689f4b5}{create}}(}
\DoxyCodeLine{00212\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacestd}{std}}::shared\_ptr<const\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}>\ exec,\ const\ \doxymbox{\hyperlink{structgko_1_1dim}{dim}}<2>\&\ size);}
\DoxyCodeLine{00213\ }
\DoxyCodeLine{00214\ \ \ \ \ GKO\_DEPRECATED(\textcolor{stringliteral}{"{}permute\ mask\ is\ no\ longer\ supported"{}})}
\DoxyCodeLine{00215\ \ \ \ \ static\ \doxymbox{\hyperlink{namespacestd}{std}}::unique\_ptr<Permutation>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation_a1b47c26f7e7ad0be77a6a27a9689f4b5}{create}}(}
\DoxyCodeLine{00216\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacestd}{std}}::shared\_ptr<const\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}>\ exec,\ const\ \doxymbox{\hyperlink{structgko_1_1dim}{dim}}<2>\&\ size,}
\DoxyCodeLine{00217\ \ \ \ \ \ \ \ \ const\ mask\_type\&\ enabled\_permute);}
\DoxyCodeLine{00218\ }
\DoxyCodeLine{00219\ \ \ \ \ GKO\_DEPRECATED(\textcolor{stringliteral}{"{}use\ the\ overload\ without\ dimensions"{}})}
\DoxyCodeLine{00220\ \ \ \ \ static\ \doxymbox{\hyperlink{namespacestd}{std}}::unique\_ptr<Permutation>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation_a1b47c26f7e7ad0be77a6a27a9689f4b5}{create}}(}
\DoxyCodeLine{00221\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacestd}{std}}::shared\_ptr<const\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}>\ exec,\ const\ \doxymbox{\hyperlink{structgko_1_1dim}{dim}}<2>\&\ size,}
\DoxyCodeLine{00222\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array}}<IndexType>\ permutation\_indices);}
\DoxyCodeLine{00223\ }
\DoxyCodeLine{00224\ \ \ \ \ GKO\_DEPRECATED(\textcolor{stringliteral}{"{}permute\ mask\ is\ no\ longer\ supported"{}})}
\DoxyCodeLine{00225\ \ \ \ \ static\ \doxymbox{\hyperlink{namespacestd}{std}}::unique\_ptr<Permutation>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation_a1b47c26f7e7ad0be77a6a27a9689f4b5}{create}}(}
\DoxyCodeLine{00226\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacestd}{std}}::shared\_ptr<const\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}>\ exec,\ const\ \doxymbox{\hyperlink{structgko_1_1dim}{dim}}<2>\&\ size,}
\DoxyCodeLine{00227\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array}}<index\_type>\ permutation\_indices,}
\DoxyCodeLine{00228\ \ \ \ \ \ \ \ \ const\ mask\_type\&\ enabled\_permute);}
\DoxyCodeLine{00229\ }
\DoxyCodeLine{00241\ \ \ \ \ GKO\_DEPRECATED(\textcolor{stringliteral}{"{}use\ create\_const\ without\ size\ and\ permute\ mask"{}})}
\DoxyCodeLine{00242\ \ \ \ \ static\ \doxymbox{\hyperlink{namespacestd}{std}}::unique\_ptr<const\ Permutation>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation_a9121ea1f0db2ad8e6fee06269d9f4e4c}{create\_const}}(}
\DoxyCodeLine{00243\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacestd}{std}}::shared\_ptr<const\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}>\ exec,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ size,}
\DoxyCodeLine{00244\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko}{gko}}::detail::const\_array\_view<IndexType>\&\&\ perm\_idxs,}
\DoxyCodeLine{00245\ \ \ \ \ \ \ \ \ mask\_type\ enabled\_permute\ =\ row\_permute);}
\DoxyCodeLine{00257\ \ \ \ \ static\ \doxymbox{\hyperlink{namespacestd}{std}}::unique\_ptr<const\ Permutation>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation_a9121ea1f0db2ad8e6fee06269d9f4e4c}{create\_const}}(}
\DoxyCodeLine{00258\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacestd}{std}}::shared\_ptr<const\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}>\ exec,}
\DoxyCodeLine{00259\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko}{gko}}::detail::const\_array\_view<IndexType>\&\&\ perm\_idxs);}
\DoxyCodeLine{00260\ }
\DoxyCodeLine{00261\ protected:}
\DoxyCodeLine{00262\ \ \ \ \ Permutation(\doxymbox{\hyperlink{namespacestd}{std}}::shared\_ptr<const\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}>\ exec,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ =\ 0);}
\DoxyCodeLine{00263\ }
\DoxyCodeLine{00264\ \ \ \ \ Permutation(\doxymbox{\hyperlink{namespacestd}{std}}::shared\_ptr<const\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}>\ exec,}
\DoxyCodeLine{00265\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array}}<IndexType>\ permutation\_indices);}
\DoxyCodeLine{00266\ }
\DoxyCodeLine{00267\ \ \ \ \ \textcolor{keywordtype}{void}\ apply\_impl(const\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ in,\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ out)\ const\ override;}
\DoxyCodeLine{00268\ }
\DoxyCodeLine{00269\ \ \ \ \ \textcolor{keywordtype}{void}\ apply\_impl(const\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*,\ const\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ in,\ const\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*,}
\DoxyCodeLine{00270\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ out)\ const\ override;}
\DoxyCodeLine{00271\ }
\DoxyCodeLine{00272\ private:}
\DoxyCodeLine{00273\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array}}<index\_type>\ permutation\_;}
\DoxyCodeLine{00274\ \};}
\DoxyCodeLine{00275\ }
\DoxyCodeLine{00276\ }
\DoxyCodeLine{00277\ \}\ \ \textcolor{comment}{//\ namespace\ matrix}}
\DoxyCodeLine{00278\ \}\ \ \textcolor{comment}{//\ namespace\ gko}}
\DoxyCodeLine{00279\ }
\DoxyCodeLine{00280\ }
\DoxyCodeLine{00281\ \textcolor{preprocessor}{\#endif\ \ }\textcolor{comment}{//\ GKO\_PUBLIC\_CORE\_MATRIX\_PERMUTATION\_HPP\_}}

\end{DoxyCode}
