\doxysection{sellp.\+hpp}
\hypertarget{sellp_8hpp_source}{}\label{sellp_8hpp_source}\index{ginkgo/core/matrix/sellp.hpp@{ginkgo/core/matrix/sellp.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\_MATRIX\_SELLP\_HPP\_}}
\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#define\ GKO\_PUBLIC\_CORE\_MATRIX\_SELLP\_HPP\_}}
\DoxyCodeLine{00007\ }
\DoxyCodeLine{00008\ }
\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/array.hpp>}}
\DoxyCodeLine{00010\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/lin\_op.hpp>}}
\DoxyCodeLine{00011\ }
\DoxyCodeLine{00012\ }
\DoxyCodeLine{00013\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko}{gko}}\ \{}
\DoxyCodeLine{00014\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko_1_1matrix}{matrix}}\ \{}
\DoxyCodeLine{00015\ }
\DoxyCodeLine{00016\ }
\DoxyCodeLine{00017\ \textcolor{keyword}{constexpr}\ \textcolor{keywordtype}{int}\ default\_slice\_size\ =\ 64;}
\DoxyCodeLine{00018\ \textcolor{keyword}{constexpr}\ \textcolor{keywordtype}{int}\ default\_stride\_factor\ =\ 1;}
\DoxyCodeLine{00019\ }
\DoxyCodeLine{00020\ }
\DoxyCodeLine{00021\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType>}
\DoxyCodeLine{00022\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}};}
\DoxyCodeLine{00023\ }
\DoxyCodeLine{00024\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType,\ \textcolor{keyword}{typename}\ IndexType>}
\DoxyCodeLine{00025\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{Csr}};}
\DoxyCodeLine{00026\ }
\DoxyCodeLine{00042\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType\ =\ default\_precision,\ \textcolor{keyword}{typename}\ IndexType\ =\ \textcolor{keywordtype}{int}32>}
\DoxyCodeLine{00043\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp}}}
\DoxyCodeLine{00044\ \ \ \ \ :\ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}<Sellp<ValueType,\ IndexType>>,}
\DoxyCodeLine{00045\ \ \ \ \ \ \ \textcolor{keyword}{public}\ ConvertibleTo<Sellp<next\_precision<ValueType>,\ IndexType>>,}
\DoxyCodeLine{00046\ \textcolor{preprocessor}{\#if\ GINKGO\_ENABLE\_HALF\ ||\ GINKGO\_ENABLE\_BFLOAT16}}
\DoxyCodeLine{00047\ \ \ \ \ \ \ \textcolor{keyword}{public}\ ConvertibleTo<Sellp<next\_precision<ValueType,\ 2>,\ IndexType>>,}
\DoxyCodeLine{00048\ \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{00049\ \textcolor{preprocessor}{\#if\ GINKGO\_ENABLE\_HALF\ \&\&\ GINKGO\_ENABLE\_BFLOAT16}}
\DoxyCodeLine{00050\ \ \ \ \ \ \ \textcolor{keyword}{public}\ ConvertibleTo<Sellp<next\_precision<ValueType,\ 3>,\ IndexType>>,}
\DoxyCodeLine{00051\ \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{00052\ \ \ \ \ \ \ \textcolor{keyword}{public}\ ConvertibleTo<Dense<ValueType>>,}
\DoxyCodeLine{00053\ \ \ \ \ \ \ \textcolor{keyword}{public}\ ConvertibleTo<Csr<ValueType,\ IndexType>>,}
\DoxyCodeLine{00054\ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1DiagonalExtractable}{DiagonalExtractable}}<ValueType>,}
\DoxyCodeLine{00055\ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1ReadableFromMatrixData}{ReadableFromMatrixData}}<ValueType,\ IndexType>,}
\DoxyCodeLine{00056\ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1WritableToMatrixData}{WritableToMatrixData}}<ValueType,\ IndexType>,}
\DoxyCodeLine{00057\ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1EnableAbsoluteComputation}{EnableAbsoluteComputation}}<}
\DoxyCodeLine{00058\ \ \ \ \ \ \ \ \ \ \ remove\_complex<Sellp<ValueType,\ IndexType>>>\ \{}
\DoxyCodeLine{00059\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1EnablePolymorphicObject}{EnablePolymorphicObject}}<\doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp}},\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}>;}
\DoxyCodeLine{00060\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}}<ValueType>;}
\DoxyCodeLine{00061\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{Csr}}<ValueType,\ IndexType>;}
\DoxyCodeLine{00062\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp}}<\doxymbox{\hyperlink{namespacegko_a4ad20e5381a84928753efde0b2bc7f85}{to\_complex}}<ValueType>,\ IndexType>;}
\DoxyCodeLine{00063\ \ \ \ \ GKO\_ASSERT\_SUPPORTED\_VALUE\_AND\_INDEX\_TYPE;}
\DoxyCodeLine{00064\ }
\DoxyCodeLine{00065\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00066\ \ \ \ \ \textcolor{keyword}{using\ }\doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}<\doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp}}>::convert\_to;}
\DoxyCodeLine{00067\ \ \ \ \ \textcolor{keyword}{using\ }\doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}<\doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp}}>::move\_to;}
\DoxyCodeLine{00068\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<}
\DoxyCodeLine{00069\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp<next\_precision<ValueType>}},\ IndexType>>::convert\_to;}
\DoxyCodeLine{00070\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<\doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp<next\_precision<ValueType>}},\ IndexType>>::move\_to;}
\DoxyCodeLine{00071\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<\doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense<ValueType>}}>::convert\_to;}
\DoxyCodeLine{00072\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<\doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense<ValueType>}}>::move\_to;}
\DoxyCodeLine{00073\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{Csr<ValueType,\ IndexType>}}>::convert\_to;}
\DoxyCodeLine{00074\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{Csr<ValueType,\ IndexType>}}>::move\_to;}
\DoxyCodeLine{00075\ \ \ \ \ \textcolor{keyword}{using\ }\doxymbox{\hyperlink{classgko_1_1ReadableFromMatrixData}{ReadableFromMatrixData}}<ValueType,\ IndexType>::read;}
\DoxyCodeLine{00076\ }
\DoxyCodeLine{00077\ \ \ \ \ \textcolor{keyword}{using\ }value\_type\ =\ ValueType;}
\DoxyCodeLine{00078\ \ \ \ \ \textcolor{keyword}{using\ }index\_type\ =\ IndexType;}
\DoxyCodeLine{00079\ \ \ \ \ \textcolor{keyword}{using\ }mat\_data\ =\ \doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\_data<ValueType,\ IndexType>}};}
\DoxyCodeLine{00080\ \ \ \ \ \textcolor{keyword}{using\ }device\_mat\_data\ =\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data}{device\_matrix\_data<ValueType,\ IndexType>}};}
\DoxyCodeLine{00081\ \ \ \ \ \textcolor{keyword}{using\ }absolute\_type\ =\ \doxymbox{\hyperlink{namespacegko_a107302a750bfa82a2107c77293f791c9}{remove\_complex<Sellp>}};}
\DoxyCodeLine{00082\ }
\DoxyCodeLine{00083\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp}}<\doxymbox{\hyperlink{namespacegko_ada2119004771922e8f7fcb6910a0363c}{previous\_precision}}<ValueType>,\ IndexType>;}
\DoxyCodeLine{00084\ }
\DoxyCodeLine{00085\ \ \ \ \ \textcolor{keywordtype}{void}\ convert\_to(}
\DoxyCodeLine{00086\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp}}<\doxymbox{\hyperlink{namespacegko_aee37f85b217e5e26fe64207d41fa4bac}{next\_precision<ValueType>}},\ IndexType>*\ result)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00087\ }
\DoxyCodeLine{00088\ \ \ \ \ \textcolor{keywordtype}{void}\ move\_to(\doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp}}<\doxymbox{\hyperlink{namespacegko_aee37f85b217e5e26fe64207d41fa4bac}{next\_precision<ValueType>}},\ IndexType>*\ result)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00089\ }
\DoxyCodeLine{00090\ \textcolor{preprocessor}{\#if\ GINKGO\_ENABLE\_HALF\ ||\ GINKGO\_ENABLE\_BFLOAT16}}
\DoxyCodeLine{00091\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp}}<\doxymbox{\hyperlink{namespacegko_ada2119004771922e8f7fcb6910a0363c}{previous\_precision}}<ValueType,\ 2>,\ IndexType>;}
\DoxyCodeLine{00092\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<}
\DoxyCodeLine{00093\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp<next\_precision<ValueType,\ 2>}},\ IndexType>>::convert\_to;}
\DoxyCodeLine{00094\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<}
\DoxyCodeLine{00095\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp<next\_precision<ValueType,\ 2>}},\ IndexType>>::move\_to;}
\DoxyCodeLine{00096\ }
\DoxyCodeLine{00097\ \ \ \ \ \textcolor{keywordtype}{void}\ convert\_to(}
\DoxyCodeLine{00098\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp}}<\doxymbox{\hyperlink{namespacegko_aee37f85b217e5e26fe64207d41fa4bac}{next\_precision<ValueType,\ 2>}},\ IndexType>*\ result)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00099\ }
\DoxyCodeLine{00100\ \ \ \ \ \textcolor{keywordtype}{void}\ move\_to(}
\DoxyCodeLine{00101\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp}}<\doxymbox{\hyperlink{namespacegko_aee37f85b217e5e26fe64207d41fa4bac}{next\_precision<ValueType,\ 2>}},\ IndexType>*\ result)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00102\ \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{00103\ }
\DoxyCodeLine{00104\ \textcolor{preprocessor}{\#if\ GINKGO\_ENABLE\_HALF\ \&\&\ GINKGO\_ENABLE\_BFLOAT16}}
\DoxyCodeLine{00105\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp}}<\doxymbox{\hyperlink{namespacegko_ada2119004771922e8f7fcb6910a0363c}{previous\_precision}}<ValueType,\ 3>,\ IndexType>;}
\DoxyCodeLine{00106\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<}
\DoxyCodeLine{00107\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp<next\_precision<ValueType,\ 3>}},\ IndexType>>::convert\_to;}
\DoxyCodeLine{00108\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<}
\DoxyCodeLine{00109\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp<next\_precision<ValueType,\ 3>}},\ IndexType>>::move\_to;}
\DoxyCodeLine{00110\ }
\DoxyCodeLine{00111\ \ \ \ \ \textcolor{keywordtype}{void}\ convert\_to(}
\DoxyCodeLine{00112\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp}}<\doxymbox{\hyperlink{namespacegko_aee37f85b217e5e26fe64207d41fa4bac}{next\_precision<ValueType,\ 3>}},\ IndexType>*\ result)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00113\ }
\DoxyCodeLine{00114\ \ \ \ \ \textcolor{keywordtype}{void}\ move\_to(}
\DoxyCodeLine{00115\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp}}<\doxymbox{\hyperlink{namespacegko_aee37f85b217e5e26fe64207d41fa4bac}{next\_precision<ValueType,\ 3>}},\ IndexType>*\ result)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00116\ \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{00117\ }
\DoxyCodeLine{00118\ \ \ \ \ \textcolor{keywordtype}{void}\ convert\_to(\doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense<ValueType>}}*\ other)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00119\ }
\DoxyCodeLine{00120\ \ \ \ \ \textcolor{keywordtype}{void}\ move\_to(\doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense<ValueType>}}*\ other)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00121\ }
\DoxyCodeLine{00122\ \ \ \ \ \textcolor{keywordtype}{void}\ convert\_to(\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{Csr<ValueType,\ IndexType>}}*\ other)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00123\ }
\DoxyCodeLine{00124\ \ \ \ \ \textcolor{keywordtype}{void}\ move\_to(\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{Csr<ValueType,\ IndexType>}}*\ other)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00125\ }
\DoxyCodeLine{00126\ \ \ \ \ \textcolor{keywordtype}{void}\ read(\textcolor{keyword}{const}\ mat\_data\&\ data)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00127\ }
\DoxyCodeLine{00128\ \ \ \ \ \textcolor{keywordtype}{void}\ read(\textcolor{keyword}{const}\ device\_mat\_data\&\ data)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00129\ }
\DoxyCodeLine{00130\ \ \ \ \ \textcolor{keywordtype}{void}\ read(device\_mat\_data\&\&\ data)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00131\ }
\DoxyCodeLine{00132\ \ \ \ \ \textcolor{keywordtype}{void}\ write(mat\_data\&\ data)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00133\ }
\DoxyCodeLine{00134\ \ \ \ \ std::unique\_ptr<Diagonal<ValueType>>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_aeeedbc7fb3f2f015b5c58e63adfef43f}{extract\_diagonal}}()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00135\ }
\DoxyCodeLine{00136\ \ \ \ \ std::unique\_ptr<absolute\_type>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a264e6af0d5ca0c10518c5b7084ee2ed1}{compute\_absolute}}()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00137\ }
\DoxyCodeLine{00138\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a7d25d89713713f96fa7d3efe436d7f6e}{compute\_absolute\_inplace}}()\ \textcolor{keyword}{override};}
\DoxyCodeLine{00139\ }
\DoxyCodeLine{00145\ \ \ \ \ value\_type*\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a2ea712e9d164811adab1f85c5c442d2b}{get\_values}}()\ noexcept\ \{\ \textcolor{keywordflow}{return}\ values\_.get\_data();\ \}}
\DoxyCodeLine{00146\ }
\DoxyCodeLine{00154\ \ \ \ \ \textcolor{keyword}{const}\ value\_type*\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_af3ac646c959957a46ffe8025f3dbad8f}{get\_const\_values}}()\ const\ noexcept}
\DoxyCodeLine{00155\ \ \ \ \ \{}
\DoxyCodeLine{00156\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ values\_.get\_const\_data();}
\DoxyCodeLine{00157\ \ \ \ \ \}}
\DoxyCodeLine{00158\ }
\DoxyCodeLine{00164\ \ \ \ \ index\_type*\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a3e522754120fc3567744e4a0c98b2adf}{get\_col\_idxs}}()\ noexcept\ \{\ \textcolor{keywordflow}{return}\ col\_idxs\_.get\_data();\ \}}
\DoxyCodeLine{00165\ }
\DoxyCodeLine{00173\ \ \ \ \ \textcolor{keyword}{const}\ index\_type*\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_ae090c3355e5377212cd309e9723f4a33}{get\_const\_col\_idxs}}()\ const\ noexcept}
\DoxyCodeLine{00174\ \ \ \ \ \{}
\DoxyCodeLine{00175\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ col\_idxs\_.get\_const\_data();}
\DoxyCodeLine{00176\ \ \ \ \ \}}
\DoxyCodeLine{00177\ }
\DoxyCodeLine{00183\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}*\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a6948f124e25405cd5d9f5148084070e6}{get\_slice\_lengths}}()\ noexcept}
\DoxyCodeLine{00184\ \ \ \ \ \{}
\DoxyCodeLine{00185\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ slice\_lengths\_.get\_data();}
\DoxyCodeLine{00186\ \ \ \ \ \}}
\DoxyCodeLine{00187\ }
\DoxyCodeLine{00195\ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}*\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_aefc575fb40cdb2ea8f51c0da0c40b3e2}{get\_const\_slice\_lengths}}()\ const\ noexcept}
\DoxyCodeLine{00196\ \ \ \ \ \{}
\DoxyCodeLine{00197\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ slice\_lengths\_.get\_const\_data();}
\DoxyCodeLine{00198\ \ \ \ \ \}}
\DoxyCodeLine{00199\ }
\DoxyCodeLine{00205\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}*\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_aa31fb3121dd1686fa27eff8d65d18b87}{get\_slice\_sets}}()\ noexcept\ \{\ \textcolor{keywordflow}{return}\ slice\_sets\_.get\_data();\ \}}
\DoxyCodeLine{00206\ }
\DoxyCodeLine{00214\ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}*\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a39c33f8b6c2a00915375366f7fc3c6dd}{get\_const\_slice\_sets}}()\ const\ noexcept}
\DoxyCodeLine{00215\ \ \ \ \ \{}
\DoxyCodeLine{00216\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ slice\_sets\_.get\_const\_data();}
\DoxyCodeLine{00217\ \ \ \ \ \}}
\DoxyCodeLine{00218\ }
\DoxyCodeLine{00224\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a0554e79b672f35df5dd01cb467850227}{get\_slice\_size}}()\ const\ noexcept\ \{\ \textcolor{keywordflow}{return}\ slice\_size\_;\ \}}
\DoxyCodeLine{00225\ }
\DoxyCodeLine{00231\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a34c7942cac3db5a9c4c0b609d2a5540b}{get\_stride\_factor}}()\ const\ noexcept\ \{\ \textcolor{keywordflow}{return}\ stride\_factor\_;\ \}}
\DoxyCodeLine{00232\ }
\DoxyCodeLine{00238\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a3e5ca0f4968f29f97b5a42aac4d08b3d}{get\_total\_cols}}()\ const\ noexcept}
\DoxyCodeLine{00239\ \ \ \ \ \{}
\DoxyCodeLine{00240\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ values\_.get\_size()\ /\ slice\_size\_;}
\DoxyCodeLine{00241\ \ \ \ \ \}}
\DoxyCodeLine{00242\ }
\DoxyCodeLine{00248\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_aab92660b6249e243e3ad35a51c557f3b}{get\_num\_stored\_elements}}()\ const\ noexcept}
\DoxyCodeLine{00249\ \ \ \ \ \{}
\DoxyCodeLine{00250\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ values\_.get\_size();}
\DoxyCodeLine{00251\ \ \ \ \ \}}
\DoxyCodeLine{00252\ }
\DoxyCodeLine{00265\ \ \ \ \ value\_type\&\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a11d6b079410d557a299452f1013a5b25}{val\_at}}(\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ row,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ slice\_set,}
\DoxyCodeLine{00266\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ idx)\ \textcolor{keyword}{noexcept}}
\DoxyCodeLine{00267\ \ \ \ \ \{}
\DoxyCodeLine{00268\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ values\_.get\_data()[this-\/>linearize\_index(row,\ slice\_set,\ idx)];}
\DoxyCodeLine{00269\ \ \ \ \ \}}
\DoxyCodeLine{00270\ }
\DoxyCodeLine{00274\ \ \ \ \ value\_type\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_ad4bb228252469da6e57eb38edd66fb8e}{val\_at}}(\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ row,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ slice\_set,}
\DoxyCodeLine{00275\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ idx)\ \textcolor{keyword}{const}\ \textcolor{keyword}{noexcept}}
\DoxyCodeLine{00276\ \ \ \ \ \{}
\DoxyCodeLine{00277\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ values\_}
\DoxyCodeLine{00278\ \ \ \ \ \ \ \ \ \ \ \ \ .get\_const\_data()[this-\/>linearize\_index(row,\ slice\_set,\ idx)];}
\DoxyCodeLine{00279\ \ \ \ \ \}}
\DoxyCodeLine{00280\ }
\DoxyCodeLine{00293\ \ \ \ \ index\_type\&\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a1821f43aa8c7704ca796ffe5fb8edac5}{col\_at}}(\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ row,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ slice\_set,}
\DoxyCodeLine{00294\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ idx)\ \textcolor{keyword}{noexcept}}
\DoxyCodeLine{00295\ \ \ \ \ \{}
\DoxyCodeLine{00296\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ this-\/>\doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a3e522754120fc3567744e4a0c98b2adf}{get\_col\_idxs}}()[this-\/>linearize\_index(row,\ slice\_set,\ idx)];}
\DoxyCodeLine{00297\ \ \ \ \ \}}
\DoxyCodeLine{00298\ }
\DoxyCodeLine{00302\ \ \ \ \ index\_type\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a5fb397d1dc15063dc4dc78bb9d9b4f72}{col\_at}}(\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ row,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ slice\_set,}
\DoxyCodeLine{00303\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ idx)\ \textcolor{keyword}{const}\ \textcolor{keyword}{noexcept}}
\DoxyCodeLine{00304\ \ \ \ \ \{}
\DoxyCodeLine{00305\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \textcolor{keyword}{this}}
\DoxyCodeLine{00306\ \ \ \ \ \ \ \ \ \ \ \ \ -\/>get\_const\_col\_idxs()[this-\/>linearize\_index(row,\ slice\_set,\ idx)];}
\DoxyCodeLine{00307\ \ \ \ \ \}}
\DoxyCodeLine{00308\ }
\DoxyCodeLine{00319\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<Sellp>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a834ef63e2f13fbe7948a1b9e385b789a}{create}}(std::shared\_ptr<const\ Executor>\ exec,}
\DoxyCodeLine{00320\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\&\ size\ =\ \{\},}
\DoxyCodeLine{00321\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ total\_cols\ =\ 0);}
\DoxyCodeLine{00322\ }
\DoxyCodeLine{00335\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<Sellp>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a13aeca022a230b97822ac95c390bec80}{create}}(std::shared\_ptr<const\ Executor>\ exec,}
\DoxyCodeLine{00336\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\&\ size,}
\DoxyCodeLine{00337\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ slice\_size,}
\DoxyCodeLine{00338\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ stride\_factor,}
\DoxyCodeLine{00339\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ total\_cols);}
\DoxyCodeLine{00340\ }
\DoxyCodeLine{00345\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp}}\&\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a726432594559379bfbebe6ce108a83b0}{operator=}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp}}\&);}
\DoxyCodeLine{00346\ }
\DoxyCodeLine{00352\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp}}\&\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a344232d6b4498b6f7d051f3e58aea71b}{operator=}}(\doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp}}\&\&);}
\DoxyCodeLine{00353\ }
\DoxyCodeLine{00358\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp}}\&);}
\DoxyCodeLine{00359\ }
\DoxyCodeLine{00365\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_aebc5817b730b09da2c3026eeb8aa8a1d}{Sellp}}(\doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp}}\&\&);}
\DoxyCodeLine{00366\ }
\DoxyCodeLine{00367\ \textcolor{keyword}{protected}:}
\DoxyCodeLine{00368\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp}}(std::shared\_ptr<const\ Executor>\ exec,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\&\ size\ =\ \{\},}
\DoxyCodeLine{00369\ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ total\_cols\ =\ \{\});}
\DoxyCodeLine{00370\ }
\DoxyCodeLine{00371\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Sellp_a23225bd20594a8a65d73b511145a30f2}{Sellp}}(std::shared\_ptr<const\ Executor>\ exec,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\&\ size,}
\DoxyCodeLine{00372\ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ slice\_size,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ stride\_factor,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ total\_cols);}
\DoxyCodeLine{00373\ }
\DoxyCodeLine{00374\ \ \ \ \ \textcolor{keywordtype}{void}\ apply\_impl(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ b,\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ x)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00375\ }
\DoxyCodeLine{00376\ \ \ \ \ \textcolor{keywordtype}{void}\ apply\_impl(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ alpha,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ b,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ beta,}
\DoxyCodeLine{00377\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ x)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00378\ }
\DoxyCodeLine{00379\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ linearize\_index(\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ row,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ slice\_set,}
\DoxyCodeLine{00380\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ col)\ \textcolor{keyword}{const}\ \textcolor{keyword}{noexcept}}
\DoxyCodeLine{00381\ \ \ \ \ \{}
\DoxyCodeLine{00382\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ (slice\_set\ +\ col)\ *\ slice\_size\_\ +\ row;}
\DoxyCodeLine{00383\ \ \ \ \ \}}
\DoxyCodeLine{00384\ }
\DoxyCodeLine{00385\ \textcolor{keyword}{private}:}
\DoxyCodeLine{00386\ \ \ \ \ array<value\_type>\ values\_;}
\DoxyCodeLine{00387\ \ \ \ \ array<index\_type>\ col\_idxs\_;}
\DoxyCodeLine{00388\ \ \ \ \ array<size\_type>\ slice\_lengths\_;}
\DoxyCodeLine{00389\ \ \ \ \ array<size\_type>\ slice\_sets\_;}
\DoxyCodeLine{00390\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ slice\_size\_;}
\DoxyCodeLine{00391\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ stride\_factor\_;}
\DoxyCodeLine{00392\ \};}
\DoxyCodeLine{00393\ }
\DoxyCodeLine{00394\ }
\DoxyCodeLine{00395\ \}\ \ \textcolor{comment}{//\ namespace\ matrix}}
\DoxyCodeLine{00396\ \}\ \ \textcolor{comment}{//\ namespace\ gko}}
\DoxyCodeLine{00397\ }
\DoxyCodeLine{00398\ }
\DoxyCodeLine{00399\ \textcolor{preprocessor}{\#endif\ \ }\textcolor{comment}{//\ GKO\_PUBLIC\_CORE\_MATRIX\_SELLP\_HPP\_}}

\end{DoxyCode}
