\doxysection{gko::\+matrix Namespace Reference}
\hypertarget{namespacegko_1_1matrix}{}\label{namespacegko_1_1matrix}\index{gko::matrix@{gko::matrix}}


The matrix namespace.  


\doxysubsubsection*{Classes}
\begin{DoxyCompactItemize}
\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}}
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1matrix_1_1Dense}{Dense} is a matrix format which explicitly stores all values of the matrix. \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1Diagonal}{Diagonal}}
\begin{DoxyCompactList}\small\item\em This class is a utility which efficiently implements the diagonal matrix (a linear operator which scales a vector row wise). \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{Csr}}
\begin{DoxyCompactList}\small\item\em CSR is a matrix format which stores only the nonzero coefficients by compressing each row of the matrix (compressed sparse row format). \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1CooBuilder}{Coo\+Builder}}
\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1Hybrid}{Hybrid}}
\begin{DoxyCompactList}\small\item\em HYBRID is a matrix format which splits the matrix into ELLPACK and COO format. \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1Coo}{Coo}}
\begin{DoxyCompactList}\small\item\em COO stores a matrix in the coordinate matrix format. \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell}{Ell}}
\begin{DoxyCompactList}\small\item\em ELL is a matrix format where stride with explicit zeros is used such that all rows have the same number of stored elements. \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp}{Sellp}}
\begin{DoxyCompactList}\small\item\em SELL-\/P is a matrix format similar to ELL format. \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1SparsityCsr}{Sparsity\+Csr}}
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1matrix_1_1SparsityCsr}{Sparsity\+Csr} is a matrix format which stores only the sparsity pattern of a sparse matrix by compressing each row of the matrix (compressed sparse row format). \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1Fbcsr}{Fbcsr}}
\begin{DoxyCompactList}\small\item\em Fixed-\/block compressed sparse row storage matrix format. \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1CsrBuilder}{Csr\+Builder}}
\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1Permutation}{Permutation}}
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1matrix_1_1Permutation}{Permutation} is a matrix format that represents a permutation matrix, i.\+e. \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1FbcsrBuilder}{Fbcsr\+Builder}}
\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1Fft}{Fft}}
\begin{DoxyCompactList}\small\item\em This \doxylink{classgko_1_1LinOp}{Lin\+Op} implements a 1D Fourier matrix using the FFT algorithm. \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1Fft2}{Fft2}}
\begin{DoxyCompactList}\small\item\em This \doxylink{classgko_1_1LinOp}{Lin\+Op} implements a 2D Fourier matrix using the FFT algorithm. \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1Fft3}{Fft3}}
\begin{DoxyCompactList}\small\item\em This \doxylink{classgko_1_1LinOp}{Lin\+Op} implements a 3D Fourier matrix using the FFT algorithm. \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1Identity}{Identity}}
\begin{DoxyCompactList}\small\item\em This class is a utility which efficiently implements the identity matrix (a linear operator which maps each vector to itself). \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1IdentityFactory}{Identity\+Factory}}
\begin{DoxyCompactList}\small\item\em This factory is a utility which can be used to generate \doxylink{classgko_1_1matrix_1_1Identity}{Identity} operators. \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1RowGatherer}{Row\+Gatherer}}
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1matrix_1_1RowGatherer}{Row\+Gatherer} is a matrix "{}format"{} which stores the gather indices arrays which can be used to gather rows to another matrix. \end{DoxyCompactList}\item 
class \doxymbox{\hyperlink{classgko_1_1matrix_1_1ScaledPermutation}{Scaled\+Permutation}}
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1matrix_1_1ScaledPermutation}{Scaled\+Permutation} is a matrix combining a permutation with scaling factors. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{namespacegko_1_1matrix_a65e1f35d1dc4d45e4c46280a2a7311a9}\label{namespacegko_1_1matrix_a65e1f35d1dc4d45e4c46280a2a7311a9} 
using {\bfseries mask\+\_\+type} = \doxymbox{\hyperlink{namespacegko_a09ee89da532d8b1fa6fdecec2d20b9bf}{gko::\+uint64}}
\end{DoxyCompactItemize}
\doxysubsubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum class \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\+\_\+mode}} :\+ unsigned \{ \newline
\doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972a334c4a4c42fdb79d7ebc3e73b517e6f8}{none}} = 0b000u
, \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972adf347a373b8f92aa0ae3dd920a5ec2f6}{rows}} = 0b001u
, \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972a54ca84a794888fe8d92834787dfa935a}{columns}} = 0b010u
, \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972afeca3c730601be7fd57f1f0b668b4637}{symmetric}} = 0b011u
, \newline
\doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972aa91c78e040f7b9d158f381e197f8beb4}{inverse}} = 0b100u
, \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972ae984283c0e504f8717eda53ea45edfeb}{inverse\+\_\+rows}} = 0b101u
, \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972abc8283157597e4f3b40d77a1986e19d0}{inverse\+\_\+columns}} = 0b110u
, \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972ac6667e92e242ff7c30861c4d218297ca}{inverse\+\_\+symmetric}} = 0b111u
 \}
\begin{DoxyCompactList}\small\item\em Specifies how a permutation will be applied to a matrix. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{namespacegko_1_1matrix_a1351826db36482d9ad54f6ee6eab53f7}\label{namespacegko_1_1matrix_a1351826db36482d9ad54f6ee6eab53f7} 
\doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\+\_\+mode}} {\bfseries operator\texorpdfstring{$\vert$}{|}} (\doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\+\_\+mode}} a, \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\+\_\+mode}} b)
\begin{DoxyCompactList}\small\item\em Combines two permutation modes. \end{DoxyCompactList}\item 
\Hypertarget{namespacegko_1_1matrix_a2f46b084c07939752afa6eab0394f2e5}\label{namespacegko_1_1matrix_a2f46b084c07939752afa6eab0394f2e5} 
\doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\+\_\+mode}} {\bfseries operator\&} (\doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\+\_\+mode}} a, \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\+\_\+mode}} b)
\begin{DoxyCompactList}\small\item\em Computes the intersection of two permutation modes. \end{DoxyCompactList}\item 
\Hypertarget{namespacegko_1_1matrix_ac03a0f9ce5a76b70bf035e75b1a9dbc8}\label{namespacegko_1_1matrix_ac03a0f9ce5a76b70bf035e75b1a9dbc8} 
\doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\+\_\+mode}} {\bfseries operator\texorpdfstring{$^\wedge$}{\string^}} (\doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\+\_\+mode}} a, \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\+\_\+mode}} b)
\begin{DoxyCompactList}\small\item\em Computes the symmetric difference of two permutation modes. \end{DoxyCompactList}\item 
\Hypertarget{namespacegko_1_1matrix_acb7d957294198bb4565dd5e153f22018}\label{namespacegko_1_1matrix_acb7d957294198bb4565dd5e153f22018} 
std::\+ostream \& {\bfseries operator$<$$<$} (std::\+ostream \&stream, \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{permute\+\_\+mode}} mode)
\begin{DoxyCompactList}\small\item\em Prints a permutation mode. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{namespacegko_1_1matrix_a80dd7829c1ed8b1bed2e182f4a9c5634}\label{namespacegko_1_1matrix_a80dd7829c1ed8b1bed2e182f4a9c5634} 
constexpr int {\bfseries default\+\_\+slice\+\_\+size} = 64
\item 
\Hypertarget{namespacegko_1_1matrix_a26ccb7bd77d0d18162e18a76d0277a80}\label{namespacegko_1_1matrix_a26ccb7bd77d0d18162e18a76d0277a80} 
constexpr int {\bfseries default\+\_\+stride\+\_\+factor} = 1
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
The matrix namespace. 

\label{doc-enum-members}
\Hypertarget{namespacegko_1_1matrix_doc-enum-members}
\doxysubsection{Enumeration Type Documentation}
\Hypertarget{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}\index{gko::matrix@{gko::matrix}!permute\_mode@{permute\_mode}}
\index{permute\_mode@{permute\_mode}!gko::matrix@{gko::matrix}}
\doxysubsubsection{\texorpdfstring{permute\_mode}{permute\_mode}}
{\footnotesize\ttfamily \label{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972} 
enum class \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972}{gko::\+matrix::\+permute\+\_\+mode}} :\+ unsigned\hspace{0.3cm}{\ttfamily [strong]}}



Specifies how a permutation will be applied to a matrix. 

For the effect of the different permutation modes, see the following table.


\begin{DoxyTable}{3}{}{}{1}
\SetCell{c,bg=\tableheadbgcolor,font=\bfseries}mode  &\SetCell{c,bg=\tableheadbgcolor,font=\bfseries}entry mapping  &\SetCell{c,bg=\tableheadbgcolor,font=\bfseries}matrix representation  \\
none  &$A\textnormal{\textquotesingle}(i, j) = A(i, j)$  &$A\textnormal{\textquotesingle} = A$  \\
rows  &$A\textnormal{\textquotesingle}(i, j) = A(p[i], j)$  &$A\textnormal{\textquotesingle} = P A$  \\
columns  &$A\textnormal{\textquotesingle}(i, j) = A(i, p[j])$  &$A\textnormal{\textquotesingle} = A P^T$  \\
inverse\+\_\+rows  &$A\textnormal{\textquotesingle}(p[i], j) = A(i, j)$  &$A\textnormal{\textquotesingle} = P^{-1} A$  \\
inverse\+\_\+columns  &$A\textnormal{\textquotesingle}(i, p[j]) = A(i, j)$  &$A\textnormal{\textquotesingle} = A P^{-T}$  \\
symmetric  &$A\textnormal{\textquotesingle}(i, j) = A(p[i], p[j])$  &$A\textnormal{\textquotesingle} = P A P^T$  \\
inverse\+\_\+symmetric  &$A\textnormal{\textquotesingle}(p[i], p[j]) = A(i, j)$  &$A\textnormal{\textquotesingle} = P^{-1} A P^{-T}$  \\
\end{DoxyTable}
\begin{DoxyEnumFields}[2]{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{none@{none}!gko::matrix@{gko::matrix}}
\index{gko::matrix@{gko::matrix}!none@{none}}
}\Hypertarget{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972a334c4a4c42fdb79d7ebc3e73b517e6f8}\label{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972a334c4a4c42fdb79d7ebc3e73b517e6f8} 
none&Neither rows nor columns will be permuted. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{rows@{rows}!gko::matrix@{gko::matrix}}
\index{gko::matrix@{gko::matrix}!rows@{rows}}
}\Hypertarget{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972adf347a373b8f92aa0ae3dd920a5ec2f6}\label{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972adf347a373b8f92aa0ae3dd920a5ec2f6} 
rows&The rows will be permuted. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{columns@{columns}!gko::matrix@{gko::matrix}}
\index{gko::matrix@{gko::matrix}!columns@{columns}}
}\Hypertarget{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972a54ca84a794888fe8d92834787dfa935a}\label{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972a54ca84a794888fe8d92834787dfa935a} 
columns&The columns will be permuted. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{symmetric@{symmetric}!gko::matrix@{gko::matrix}}
\index{gko::matrix@{gko::matrix}!symmetric@{symmetric}}
}\Hypertarget{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972afeca3c730601be7fd57f1f0b668b4637}\label{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972afeca3c730601be7fd57f1f0b668b4637} 
symmetric&The rows and columns will be permuted. This is equivalent to {\ttfamily \doxylink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972adf347a373b8f92aa0ae3dd920a5ec2f6}{permute\+\_\+mode::\+rows} \texorpdfstring{$\vert$}{|} \doxylink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972a54ca84a794888fe8d92834787dfa935a}{permute\+\_\+mode::\+columns}}. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{inverse@{inverse}!gko::matrix@{gko::matrix}}
\index{gko::matrix@{gko::matrix}!inverse@{inverse}}
}\Hypertarget{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972aa91c78e040f7b9d158f381e197f8beb4}\label{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972aa91c78e040f7b9d158f381e197f8beb4} 
inverse&The permutation will be inverted before being applied. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{inverse\_rows@{inverse\_rows}!gko::matrix@{gko::matrix}}
\index{gko::matrix@{gko::matrix}!inverse\_rows@{inverse\_rows}}
}\Hypertarget{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972ae984283c0e504f8717eda53ea45edfeb}\label{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972ae984283c0e504f8717eda53ea45edfeb} 
inverse\+\_\+rows&The rows will be permuted using the inverse permutation. This is equivalent to {\ttfamily \doxylink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972adf347a373b8f92aa0ae3dd920a5ec2f6}{permute\+\_\+mode::\+rows} \texorpdfstring{$\vert$}{|} \doxylink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972aa91c78e040f7b9d158f381e197f8beb4}{permute\+\_\+mode::\+inverse}}. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{inverse\_columns@{inverse\_columns}!gko::matrix@{gko::matrix}}
\index{gko::matrix@{gko::matrix}!inverse\_columns@{inverse\_columns}}
}\Hypertarget{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972abc8283157597e4f3b40d77a1986e19d0}\label{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972abc8283157597e4f3b40d77a1986e19d0} 
inverse\+\_\+columns&The columns will be permuted using the inverse permutation. This is equivalent to {\ttfamily \doxylink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972a54ca84a794888fe8d92834787dfa935a}{permute\+\_\+mode::\+columns} \texorpdfstring{$\vert$}{|} \doxylink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972aa91c78e040f7b9d158f381e197f8beb4}{permute\+\_\+mode::\+inverse}}. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{inverse\_symmetric@{inverse\_symmetric}!gko::matrix@{gko::matrix}}
\index{gko::matrix@{gko::matrix}!inverse\_symmetric@{inverse\_symmetric}}
}\Hypertarget{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972ac6667e92e242ff7c30861c4d218297ca}\label{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972ac6667e92e242ff7c30861c4d218297ca} 
inverse\+\_\+symmetric&The rows and columns will be permuted using the inverse permutation. This is equivalent to {\ttfamily \doxylink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972afeca3c730601be7fd57f1f0b668b4637}{permute\+\_\+mode::\+symmetric} \texorpdfstring{$\vert$}{|} \doxylink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972aa91c78e040f7b9d158f381e197f8beb4}{permute\+\_\+mode::\+inverse}}. \\
\hline

\end{DoxyEnumFields}
