\doxysection{gko::\+Permutable\texorpdfstring{$<$}{<} Index\+Type \texorpdfstring{$>$}{>} Class Template Reference}
\hypertarget{classgko_1_1Permutable}{}\label{classgko_1_1Permutable}\index{gko::Permutable$<$ IndexType $>$@{gko::Permutable$<$ IndexType $>$}}


Linear operators which support permutation should implement the \doxylink{classgko_1_1Permutable}{Permutable} interface.  




{\ttfamily \+\#include $<$ginkgo/\+core/\+base/\+lin\+\_\+op.\+hpp$>$}



Inheritance diagram for gko::\+Permutable\texorpdfstring{$<$}{<} Index\+Type \texorpdfstring{$>$}{>}:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classgko_1_1Permutable__inherit__graph}
\end{center}
\end{figure}
\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1Permutable_ae4fb8d127c4942e648eef400117039de}{permute}} (const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ Index\+Type $>$ \texorpdfstring{$\ast$}{*}permutation\+\_\+indices) const
\begin{DoxyCompactList}\small\item\em Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the symmetric row and column permutation of the \doxylink{classgko_1_1Permutable}{Permutable} object. \end{DoxyCompactList}\item 
virtual std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1Permutable_aab402585e8e7850744d1b3b0baec60a3}{inverse\+\_\+permute}} (const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ Index\+Type $>$ \texorpdfstring{$\ast$}{*}permutation\+\_\+indices) const
\begin{DoxyCompactList}\small\item\em Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the symmetric inverse row and column permutation of the \doxylink{classgko_1_1Permutable}{Permutable} object. \end{DoxyCompactList}\item 
virtual std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1Permutable_a842f85a61b0b8f20083eb597978e0ffb}{row\+\_\+permute}} (const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ Index\+Type $>$ \texorpdfstring{$\ast$}{*}permutation\+\_\+indices) const =0
\begin{DoxyCompactList}\small\item\em Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the row permutation of the \doxylink{classgko_1_1Permutable}{Permutable} object. \end{DoxyCompactList}\item 
virtual std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1Permutable_acf1570421c3c5c9e057ee325a80efd65}{column\+\_\+permute}} (const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ Index\+Type $>$ \texorpdfstring{$\ast$}{*}permutation\+\_\+indices) const =0
\begin{DoxyCompactList}\small\item\em Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the column permutation of the \doxylink{classgko_1_1Permutable}{Permutable} object. \end{DoxyCompactList}\item 
virtual std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1Permutable_a9d901d0384ef13d240430a2baaba22d0}{inverse\+\_\+row\+\_\+permute}} (const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ Index\+Type $>$ \texorpdfstring{$\ast$}{*}permutation\+\_\+indices) const =0
\begin{DoxyCompactList}\small\item\em Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the row permutation of the inverse permuted object. \end{DoxyCompactList}\item 
virtual std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1Permutable_a7eb82db489bbf87091373c58d3325844}{inverse\+\_\+column\+\_\+permute}} (const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ Index\+Type $>$ \texorpdfstring{$\ast$}{*}permutation\+\_\+indices) const =0
\begin{DoxyCompactList}\small\item\em Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the row permutation of the inverse permuted object. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
\subsubsection*{template$<$typename Index\+Type$>$\newline
class gko::\+\+Permutable$<$ Index\+Type $>$}
Linear operators which support permutation should implement the \doxylink{classgko_1_1Permutable}{Permutable} interface. 

It provides functions to permute the rows and columns of a \doxylink{classgko_1_1LinOp}{Lin\+Op}, independently or symmetrically, and with a regular or inverted permutation.

After a regular row permutation with permutation array {\ttfamily perm} the row {\ttfamily i} in the output \doxylink{classgko_1_1LinOp}{Lin\+Op} contains the row {\ttfamily perm\+[i]\+} from the input \doxylink{classgko_1_1LinOp}{Lin\+Op}. After an inverse row permutation, the row {\ttfamily perm\+[i]\+} in the output \doxylink{classgko_1_1LinOp}{Lin\+Op} contains the row {\ttfamily i} from the input \doxylink{classgko_1_1LinOp}{Lin\+Op}. Equivalently, after a column permutation, the output stores in column {\ttfamily i} the column {\ttfamily perm\+[i]\+} from the input, and an inverse column permutation stores in column {\ttfamily perm\+[i]\+} the column {\ttfamily i} from the input. A symmetric permutation is functionally equivalent to calling {\ttfamily \doxylink{namespacegko_ae3e355a655feea026a7c46814d37a9c9}{as}\texorpdfstring{$<$}{<}\doxylink{classgko_1_1Permutable}{Permutable}\texorpdfstring{$>$}{>}(A-\/\texorpdfstring{$>$}{>}row\+\_\+permute(perm))-\/\texorpdfstring{$>$}{>}column\+\_\+permute(perm)}, but the implementation can provide better performance due to kernel fusion.\hypertarget{classgko_1_1Permutable_autotoc_md76}{}\doxysubsubsection{\texorpdfstring{Example:\+ Permuting a Csr matrix:\+}{Example:\+ Permuting a Csr matrix:\+}}\label{classgko_1_1Permutable_autotoc_md76}

\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{comment}{//Permuting\ an\ object\ of\ LinOp\ type.}}
\DoxyCodeLine{\textcolor{comment}{//The\ object\ you\ want\ to\ permute.}}
\DoxyCodeLine{\textcolor{keyword}{auto}\ op\ =\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr_a5261906eecda7da087638981d011a9b2}{matrix::Csr::create}}(exec);}
\DoxyCodeLine{\textcolor{comment}{//Permute\ the\ object\ by\ first\ converting\ it\ to\ a\ Permutable\ type.}}
\DoxyCodeLine{\textcolor{keyword}{auto}\ perm\ =\ op-\/>row\_permute(permutation\_indices);}

\end{DoxyCode}
 

\label{doc-func-members}
\Hypertarget{classgko_1_1Permutable_doc-func-members}
\doxysubsection{Member Function Documentation}
\Hypertarget{classgko_1_1Permutable_acf1570421c3c5c9e057ee325a80efd65}\index{gko::Permutable$<$ IndexType $>$@{gko::Permutable$<$ IndexType $>$}!column\_permute@{column\_permute}}
\index{column\_permute@{column\_permute}!gko::Permutable$<$ IndexType $>$@{gko::Permutable$<$ IndexType $>$}}
\doxysubsubsection{\texorpdfstring{column\_permute()}{column\_permute()}}
{\footnotesize\ttfamily \label{classgko_1_1Permutable_acf1570421c3c5c9e057ee325a80efd65} 
template$<$typename Index\+Type$>$ \\
virtual std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1Permutable}{gko::\+\+Permutable}}$<$ Index\+Type $>$::\+column\+\_\+permute (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ Index\+Type $>$ \texorpdfstring{$\ast$}{*}}]{permutation\+\_\+indices}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}}



Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the column permutation of the \doxylink{classgko_1_1Permutable}{Permutable} object. 

In the resulting \doxylink{classgko_1_1LinOp}{Lin\+Op}, the column {\ttfamily i} contains the input column {\ttfamily perm\+[i]\+}.

From the linear algebra perspective, with  $P_{ij} = \delta_{i
\pi(i)}$, this represents the operation $A P^T$.


\begin{DoxyParams}{Parameters}
{\em permutation\+\_\+indices} & the array of indices containing the permutation order {\ttfamily perm}.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a pointer to the new column permuted object 
\end{DoxyReturn}


Implemented in \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_ac2d3d9f96ed3dfb7a4dcdd62a3063460}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a29e73c04e60689de72028137cf64908e}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_ac2d3d9f96ed3dfb7a4dcdd62a3063460}{gko::\+matrix::\+\+Dense$<$ absolute\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a29e73c04e60689de72028137cf64908e}{gko::\+matrix::\+\+Dense$<$ absolute\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_ac2d3d9f96ed3dfb7a4dcdd62a3063460}{gko::\+matrix::\+\+Dense$<$ remove\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a29e73c04e60689de72028137cf64908e}{gko::\+matrix::\+\+Dense$<$ remove\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_ac2d3d9f96ed3dfb7a4dcdd62a3063460}{gko::\+matrix::\+\+Dense$<$ to\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a29e73c04e60689de72028137cf64908e}{gko::\+matrix::\+\+Dense$<$ to\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_ac2d3d9f96ed3dfb7a4dcdd62a3063460}{gko::\+matrix::\+\+Dense$<$ value\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a29e73c04e60689de72028137cf64908e}{gko::\+matrix::\+\+Dense$<$ value\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_ac2d3d9f96ed3dfb7a4dcdd62a3063460}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}, and \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a29e73c04e60689de72028137cf64908e}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}.

\Hypertarget{classgko_1_1Permutable_a7eb82db489bbf87091373c58d3325844}\index{gko::Permutable$<$ IndexType $>$@{gko::Permutable$<$ IndexType $>$}!inverse\_column\_permute@{inverse\_column\_permute}}
\index{inverse\_column\_permute@{inverse\_column\_permute}!gko::Permutable$<$ IndexType $>$@{gko::Permutable$<$ IndexType $>$}}
\doxysubsubsection{\texorpdfstring{inverse\_column\_permute()}{inverse\_column\_permute()}}
{\footnotesize\ttfamily \label{classgko_1_1Permutable_a7eb82db489bbf87091373c58d3325844} 
template$<$typename Index\+Type$>$ \\
virtual std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1Permutable}{gko::\+\+Permutable}}$<$ Index\+Type $>$::\+inverse\+\_\+column\+\_\+permute (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ Index\+Type $>$ \texorpdfstring{$\ast$}{*}}]{permutation\+\_\+indices}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}}



Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the row permutation of the inverse permuted object. 

In the resulting \doxylink{classgko_1_1LinOp}{Lin\+Op}, the column {\ttfamily perm\+[i]\+} contains the input column {\ttfamily i}.

From the linear algebra perspective, with  $P_{ij} = \delta_{i
\pi(i)}$, this represents the operation $A P^{-T}$.


\begin{DoxyParams}{Parameters}
{\em permutation\+\_\+indices} & the array of indices containing the permutation order {\ttfamily perm}.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a pointer to the new inverse permuted object 
\end{DoxyReturn}


Implemented in \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a517fe33b174962c89229cece760022f8}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_aa1e8a40611bdd15b6a6ffd2b8e9bff12}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a517fe33b174962c89229cece760022f8}{gko::\+matrix::\+\+Dense$<$ absolute\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_aa1e8a40611bdd15b6a6ffd2b8e9bff12}{gko::\+matrix::\+\+Dense$<$ absolute\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a517fe33b174962c89229cece760022f8}{gko::\+matrix::\+\+Dense$<$ remove\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_aa1e8a40611bdd15b6a6ffd2b8e9bff12}{gko::\+matrix::\+\+Dense$<$ remove\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a517fe33b174962c89229cece760022f8}{gko::\+matrix::\+\+Dense$<$ to\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_aa1e8a40611bdd15b6a6ffd2b8e9bff12}{gko::\+matrix::\+\+Dense$<$ to\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a517fe33b174962c89229cece760022f8}{gko::\+matrix::\+\+Dense$<$ value\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_aa1e8a40611bdd15b6a6ffd2b8e9bff12}{gko::\+matrix::\+\+Dense$<$ value\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a517fe33b174962c89229cece760022f8}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}, and \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_aa1e8a40611bdd15b6a6ffd2b8e9bff12}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}.

\Hypertarget{classgko_1_1Permutable_aab402585e8e7850744d1b3b0baec60a3}\index{gko::Permutable$<$ IndexType $>$@{gko::Permutable$<$ IndexType $>$}!inverse\_permute@{inverse\_permute}}
\index{inverse\_permute@{inverse\_permute}!gko::Permutable$<$ IndexType $>$@{gko::Permutable$<$ IndexType $>$}}
\doxysubsubsection{\texorpdfstring{inverse\_permute()}{inverse\_permute()}}
{\footnotesize\ttfamily \label{classgko_1_1Permutable_aab402585e8e7850744d1b3b0baec60a3} 
template$<$typename Index\+Type$>$ \\
virtual std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1Permutable}{gko::\+\+Permutable}}$<$ Index\+Type $>$::\+inverse\+\_\+permute (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ Index\+Type $>$ \texorpdfstring{$\ast$}{*}}]{permutation\+\_\+indices}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the symmetric inverse row and column permutation of the \doxylink{classgko_1_1Permutable}{Permutable} object. 

In the resulting \doxylink{classgko_1_1LinOp}{Lin\+Op}, the entry at location {\ttfamily (perm\+[i]\+,perm\+[j]\+)} contains the input value {\ttfamily (i,j)}.

From the linear algebra perspective, with  $P_{ij} = \delta_{i
\pi(i)}$, this represents the operation $P^{-1} A P^{-T}$.


\begin{DoxyParams}{Parameters}
{\em permutation\+\_\+indices} & the array of indices containing the permutation order.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a pointer to the new permuted object 
\end{DoxyReturn}


Reimplemented in \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a8ee465f8ab3648019f5796f06c746e7a}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a38b857ba1b3e52230b60893f4e6a50fe}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a8ee465f8ab3648019f5796f06c746e7a}{gko::\+matrix::\+\+Dense$<$ absolute\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a38b857ba1b3e52230b60893f4e6a50fe}{gko::\+matrix::\+\+Dense$<$ absolute\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a8ee465f8ab3648019f5796f06c746e7a}{gko::\+matrix::\+\+Dense$<$ remove\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a38b857ba1b3e52230b60893f4e6a50fe}{gko::\+matrix::\+\+Dense$<$ remove\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a8ee465f8ab3648019f5796f06c746e7a}{gko::\+matrix::\+\+Dense$<$ to\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a38b857ba1b3e52230b60893f4e6a50fe}{gko::\+matrix::\+\+Dense$<$ to\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a8ee465f8ab3648019f5796f06c746e7a}{gko::\+matrix::\+\+Dense$<$ value\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a38b857ba1b3e52230b60893f4e6a50fe}{gko::\+matrix::\+\+Dense$<$ value\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a8ee465f8ab3648019f5796f06c746e7a}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}, and \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a38b857ba1b3e52230b60893f4e6a50fe}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}.



References \doxymbox{\hyperlink{namespacegko_ae3e355a655feea026a7c46814d37a9c9}{gko::\+as()}}, and \doxymbox{\hyperlink{classgko_1_1Permutable_a9d901d0384ef13d240430a2baaba22d0}{inverse\+\_\+row\+\_\+permute()}}.

\Hypertarget{classgko_1_1Permutable_a9d901d0384ef13d240430a2baaba22d0}\index{gko::Permutable$<$ IndexType $>$@{gko::Permutable$<$ IndexType $>$}!inverse\_row\_permute@{inverse\_row\_permute}}
\index{inverse\_row\_permute@{inverse\_row\_permute}!gko::Permutable$<$ IndexType $>$@{gko::Permutable$<$ IndexType $>$}}
\doxysubsubsection{\texorpdfstring{inverse\_row\_permute()}{inverse\_row\_permute()}}
{\footnotesize\ttfamily \label{classgko_1_1Permutable_a9d901d0384ef13d240430a2baaba22d0} 
template$<$typename Index\+Type$>$ \\
virtual std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1Permutable}{gko::\+\+Permutable}}$<$ Index\+Type $>$::\+inverse\+\_\+row\+\_\+permute (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ Index\+Type $>$ \texorpdfstring{$\ast$}{*}}]{permutation\+\_\+indices}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}}



Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the row permutation of the inverse permuted object. 

In the resulting \doxylink{classgko_1_1LinOp}{Lin\+Op}, the row {\ttfamily perm\+[i]\+} contains the input row {\ttfamily i}.

From the linear algebra perspective, with  $P_{ij} = \delta_{i
\pi(i)}$, this represents the operation $P^{-1} A$.


\begin{DoxyParams}{Parameters}
{\em permutation\+\_\+indices} & the array of indices containing the permutation order {\ttfamily perm}.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a pointer to the new inverse permuted object 
\end{DoxyReturn}


Implemented in \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a41882a58a4ad092770111bf981be0cf2}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_aad654481952f8d0662214e29d2fb7629}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a41882a58a4ad092770111bf981be0cf2}{gko::\+matrix::\+\+Dense$<$ absolute\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_aad654481952f8d0662214e29d2fb7629}{gko::\+matrix::\+\+Dense$<$ absolute\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a41882a58a4ad092770111bf981be0cf2}{gko::\+matrix::\+\+Dense$<$ remove\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_aad654481952f8d0662214e29d2fb7629}{gko::\+matrix::\+\+Dense$<$ remove\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a41882a58a4ad092770111bf981be0cf2}{gko::\+matrix::\+\+Dense$<$ to\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_aad654481952f8d0662214e29d2fb7629}{gko::\+matrix::\+\+Dense$<$ to\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a41882a58a4ad092770111bf981be0cf2}{gko::\+matrix::\+\+Dense$<$ value\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_aad654481952f8d0662214e29d2fb7629}{gko::\+matrix::\+\+Dense$<$ value\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a41882a58a4ad092770111bf981be0cf2}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}, and \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_aad654481952f8d0662214e29d2fb7629}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}.



Referenced by \doxymbox{\hyperlink{classgko_1_1Permutable_aab402585e8e7850744d1b3b0baec60a3}{inverse\+\_\+permute()}}.

\Hypertarget{classgko_1_1Permutable_ae4fb8d127c4942e648eef400117039de}\index{gko::Permutable$<$ IndexType $>$@{gko::Permutable$<$ IndexType $>$}!permute@{permute}}
\index{permute@{permute}!gko::Permutable$<$ IndexType $>$@{gko::Permutable$<$ IndexType $>$}}
\doxysubsubsection{\texorpdfstring{permute()}{permute()}}
{\footnotesize\ttfamily \label{classgko_1_1Permutable_ae4fb8d127c4942e648eef400117039de} 
template$<$typename Index\+Type$>$ \\
virtual std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1Permutable}{gko::\+\+Permutable}}$<$ Index\+Type $>$::\+permute (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ Index\+Type $>$ \texorpdfstring{$\ast$}{*}}]{permutation\+\_\+indices}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the symmetric row and column permutation of the \doxylink{classgko_1_1Permutable}{Permutable} object. 

In the resulting \doxylink{classgko_1_1LinOp}{Lin\+Op}, the entry at location {\ttfamily (i,j)} contains the input value {\ttfamily (perm\+[i]\+,perm\+[j]\+)}.

From the linear algebra perspective, with  $P_{ij} = \delta_{i
\pi(i)}$, this represents the operation $P A P^T$.


\begin{DoxyParams}{Parameters}
{\em permutation\+\_\+indices} & the array of indices containing the permutation order.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a pointer to the new permuted object 
\end{DoxyReturn}


Reimplemented in \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a6374f7f447af8320917c53f1552dac9f}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a33e68ba28b5ab55e3f824861b24be686}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a6374f7f447af8320917c53f1552dac9f}{gko::\+matrix::\+\+Dense$<$ absolute\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a33e68ba28b5ab55e3f824861b24be686}{gko::\+matrix::\+\+Dense$<$ absolute\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a6374f7f447af8320917c53f1552dac9f}{gko::\+matrix::\+\+Dense$<$ remove\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a33e68ba28b5ab55e3f824861b24be686}{gko::\+matrix::\+\+Dense$<$ remove\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a6374f7f447af8320917c53f1552dac9f}{gko::\+matrix::\+\+Dense$<$ to\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a33e68ba28b5ab55e3f824861b24be686}{gko::\+matrix::\+\+Dense$<$ to\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a6374f7f447af8320917c53f1552dac9f}{gko::\+matrix::\+\+Dense$<$ value\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a33e68ba28b5ab55e3f824861b24be686}{gko::\+matrix::\+\+Dense$<$ value\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a6374f7f447af8320917c53f1552dac9f}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}, and \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a33e68ba28b5ab55e3f824861b24be686}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}.



References \doxymbox{\hyperlink{namespacegko_ae3e355a655feea026a7c46814d37a9c9}{gko::\+as()}}, and \doxymbox{\hyperlink{classgko_1_1Permutable_a842f85a61b0b8f20083eb597978e0ffb}{row\+\_\+permute()}}.

\Hypertarget{classgko_1_1Permutable_a842f85a61b0b8f20083eb597978e0ffb}\index{gko::Permutable$<$ IndexType $>$@{gko::Permutable$<$ IndexType $>$}!row\_permute@{row\_permute}}
\index{row\_permute@{row\_permute}!gko::Permutable$<$ IndexType $>$@{gko::Permutable$<$ IndexType $>$}}
\doxysubsubsection{\texorpdfstring{row\_permute()}{row\_permute()}}
{\footnotesize\ttfamily \label{classgko_1_1Permutable_a842f85a61b0b8f20083eb597978e0ffb} 
template$<$typename Index\+Type$>$ \\
virtual std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1Permutable}{gko::\+\+Permutable}}$<$ Index\+Type $>$::\+row\+\_\+permute (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ Index\+Type $>$ \texorpdfstring{$\ast$}{*}}]{permutation\+\_\+indices}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}}



Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the row permutation of the \doxylink{classgko_1_1Permutable}{Permutable} object. 

In the resulting \doxylink{classgko_1_1LinOp}{Lin\+Op}, the row {\ttfamily i} contains the input row {\ttfamily perm\+[i]\+}.

From the linear algebra perspective, with  $P_{ij} = \delta_{i
\pi(i)}$, this represents the operation $P A$.


\begin{DoxyParams}{Parameters}
{\em permutation\+\_\+indices} & the array of indices containing the permutation order.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a pointer to the new permuted object 
\end{DoxyReturn}


Implemented in \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a6a68f7ec26cc007548550577c01c7d0e}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a1c6a43bfc440138798de73c53072eedd}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a6a68f7ec26cc007548550577c01c7d0e}{gko::\+matrix::\+\+Dense$<$ absolute\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a1c6a43bfc440138798de73c53072eedd}{gko::\+matrix::\+\+Dense$<$ absolute\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a6a68f7ec26cc007548550577c01c7d0e}{gko::\+matrix::\+\+Dense$<$ remove\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a1c6a43bfc440138798de73c53072eedd}{gko::\+matrix::\+\+Dense$<$ remove\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a6a68f7ec26cc007548550577c01c7d0e}{gko::\+matrix::\+\+Dense$<$ to\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a1c6a43bfc440138798de73c53072eedd}{gko::\+matrix::\+\+Dense$<$ to\+\_\+complex$<$ Value\+Type $>$ $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a6a68f7ec26cc007548550577c01c7d0e}{gko::\+matrix::\+\+Dense$<$ value\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a1c6a43bfc440138798de73c53072eedd}{gko::\+matrix::\+\+Dense$<$ value\+\_\+type $>$}}, \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a6a68f7ec26cc007548550577c01c7d0e}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}, and \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense_a1c6a43bfc440138798de73c53072eedd}{gko::\+matrix::\+\+Dense$<$ Value\+Type $>$}}.



Referenced by \doxymbox{\hyperlink{classgko_1_1Permutable_ae4fb8d127c4942e648eef400117039de}{permute()}}.



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