\doxysection{ell.\+hpp}
\hypertarget{ell_8hpp_source}{}\label{ell_8hpp_source}\index{ginkgo/core/matrix/ell.hpp@{ginkgo/core/matrix/ell.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\_ELL\_HPP\_}}
\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#define\ GKO\_PUBLIC\_CORE\_MATRIX\_ELL\_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}{template}\ <\textcolor{keyword}{typename}\ ValueType>}
\DoxyCodeLine{00018\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}};}
\DoxyCodeLine{00019\ }
\DoxyCodeLine{00020\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType,\ \textcolor{keyword}{typename}\ IndexType>}
\DoxyCodeLine{00021\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1matrix_1_1Coo}{Coo}};}
\DoxyCodeLine{00022\ }
\DoxyCodeLine{00023\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType,\ \textcolor{keyword}{typename}\ IndexType>}
\DoxyCodeLine{00024\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{Csr}};}
\DoxyCodeLine{00025\ }
\DoxyCodeLine{00026\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType,\ \textcolor{keyword}{typename}\ IndexType>}
\DoxyCodeLine{00027\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1matrix_1_1Hybrid}{Hybrid}};}
\DoxyCodeLine{00028\ }
\DoxyCodeLine{00029\ }
\DoxyCodeLine{00051\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType\ =\ default\_precision,\ \textcolor{keyword}{typename}\ IndexType\ =\ \textcolor{keywordtype}{int}32>}
\DoxyCodeLine{00052\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}}\ :\ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}<Ell<ValueType,\ IndexType>>,}
\DoxyCodeLine{00053\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ ConvertibleTo<Ell<next\_precision<ValueType>,\ IndexType>>,}
\DoxyCodeLine{00054\ \textcolor{preprocessor}{\#if\ GINKGO\_ENABLE\_HALF\ ||\ GINKGO\_ENABLE\_BFLOAT16}}
\DoxyCodeLine{00055\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ ConvertibleTo<Ell<next\_precision<ValueType,\ 2>,\ IndexType>>,}
\DoxyCodeLine{00056\ \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{00057\ \textcolor{preprocessor}{\#if\ GINKGO\_ENABLE\_HALF\ \&\&\ GINKGO\_ENABLE\_BFLOAT16}}
\DoxyCodeLine{00058\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ ConvertibleTo<Ell<next\_precision<ValueType,\ 3>,\ IndexType>>,}
\DoxyCodeLine{00059\ \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{00060\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ ConvertibleTo<Dense<ValueType>>,}
\DoxyCodeLine{00061\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ ConvertibleTo<Csr<ValueType,\ IndexType>>,}
\DoxyCodeLine{00062\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1DiagonalExtractable}{DiagonalExtractable}}<ValueType>,}
\DoxyCodeLine{00063\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1ReadableFromMatrixData}{ReadableFromMatrixData}}<ValueType,\ IndexType>,}
\DoxyCodeLine{00064\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1WritableToMatrixData}{WritableToMatrixData}}<ValueType,\ IndexType>,}
\DoxyCodeLine{00065\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1EnableAbsoluteComputation}{EnableAbsoluteComputation}}<}
\DoxyCodeLine{00066\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ remove\_complex<Ell<ValueType,\ IndexType>>>\ \{}
\DoxyCodeLine{00067\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1EnablePolymorphicObject}{EnablePolymorphicObject}}<\doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}},\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}>;}
\DoxyCodeLine{00068\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense}}<ValueType>;}
\DoxyCodeLine{00069\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1matrix_1_1Coo}{Coo}}<ValueType,\ IndexType>;}
\DoxyCodeLine{00070\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{Csr}}<ValueType,\ IndexType>;}
\DoxyCodeLine{00071\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}}<\doxymbox{\hyperlink{namespacegko_a4ad20e5381a84928753efde0b2bc7f85}{to\_complex}}<ValueType>,\ IndexType>;}
\DoxyCodeLine{00072\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}}<\doxymbox{\hyperlink{namespacegko_ada2119004771922e8f7fcb6910a0363c}{previous\_precision}}<ValueType>,\ IndexType>;}
\DoxyCodeLine{00073\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1matrix_1_1Hybrid}{Hybrid}}<ValueType,\ IndexType>;}
\DoxyCodeLine{00074\ \ \ \ \ GKO\_ASSERT\_SUPPORTED\_VALUE\_AND\_INDEX\_TYPE;}
\DoxyCodeLine{00075\ }
\DoxyCodeLine{00076\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00077\ \ \ \ \ \textcolor{keyword}{using\ }\doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}<\doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}}>::convert\_to;}
\DoxyCodeLine{00078\ \ \ \ \ \textcolor{keyword}{using\ }\doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}<\doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}}>::move\_to;}
\DoxyCodeLine{00079\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<\doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell<next\_precision<ValueType>}},\ IndexType>>::convert\_to;}
\DoxyCodeLine{00080\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<\doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell<next\_precision<ValueType>}},\ IndexType>>::move\_to;}
\DoxyCodeLine{00081\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<\doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense<ValueType>}}>::convert\_to;}
\DoxyCodeLine{00082\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<\doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense<ValueType>}}>::move\_to;}
\DoxyCodeLine{00083\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{Csr<ValueType,\ IndexType>}}>::convert\_to;}
\DoxyCodeLine{00084\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{Csr<ValueType,\ IndexType>}}>::move\_to;}
\DoxyCodeLine{00085\ \ \ \ \ \textcolor{keyword}{using\ }\doxymbox{\hyperlink{classgko_1_1ReadableFromMatrixData}{ReadableFromMatrixData}}<ValueType,\ IndexType>::read;}
\DoxyCodeLine{00086\ }
\DoxyCodeLine{00087\ \ \ \ \ \textcolor{keyword}{using\ }value\_type\ =\ ValueType;}
\DoxyCodeLine{00088\ \ \ \ \ \textcolor{keyword}{using\ }index\_type\ =\ IndexType;}
\DoxyCodeLine{00089\ \ \ \ \ \textcolor{keyword}{using\ }mat\_data\ =\ \doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\_data<ValueType,\ IndexType>}};}
\DoxyCodeLine{00090\ \ \ \ \ \textcolor{keyword}{using\ }device\_mat\_data\ =\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data}{device\_matrix\_data<ValueType,\ IndexType>}};}
\DoxyCodeLine{00091\ \ \ \ \ \textcolor{keyword}{using\ }absolute\_type\ =\ \doxymbox{\hyperlink{namespacegko_a107302a750bfa82a2107c77293f791c9}{remove\_complex<Ell>}};}
\DoxyCodeLine{00092\ }
\DoxyCodeLine{00093\ \ \ \ \ \textcolor{keywordtype}{void}\ convert\_to(}
\DoxyCodeLine{00094\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}}<\doxymbox{\hyperlink{namespacegko_aee37f85b217e5e26fe64207d41fa4bac}{next\_precision<ValueType>}},\ IndexType>*\ result)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00095\ }
\DoxyCodeLine{00096\ \ \ \ \ \textcolor{keywordtype}{void}\ move\_to(\doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}}<\doxymbox{\hyperlink{namespacegko_aee37f85b217e5e26fe64207d41fa4bac}{next\_precision<ValueType>}},\ IndexType>*\ result)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00097\ }
\DoxyCodeLine{00098\ \textcolor{preprocessor}{\#if\ GINKGO\_ENABLE\_HALF\ ||\ GINKGO\_ENABLE\_BFLOAT16}}
\DoxyCodeLine{00099\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}}<\doxymbox{\hyperlink{namespacegko_ada2119004771922e8f7fcb6910a0363c}{previous\_precision}}<ValueType,\ 2>,\ IndexType>;}
\DoxyCodeLine{00100\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<}
\DoxyCodeLine{00101\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell<next\_precision<ValueType,\ 2>}},\ IndexType>>::convert\_to;}
\DoxyCodeLine{00102\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<\doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell<next\_precision<ValueType,\ 2>}},\ IndexType>>::move\_to;}
\DoxyCodeLine{00103\ }
\DoxyCodeLine{00104\ \ \ \ \ \textcolor{keywordtype}{void}\ convert\_to(}
\DoxyCodeLine{00105\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}}<\doxymbox{\hyperlink{namespacegko_aee37f85b217e5e26fe64207d41fa4bac}{next\_precision<ValueType,\ 2>}},\ IndexType>*\ result)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00106\ }
\DoxyCodeLine{00107\ \ \ \ \ \textcolor{keywordtype}{void}\ move\_to(\doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}}<\doxymbox{\hyperlink{namespacegko_aee37f85b217e5e26fe64207d41fa4bac}{next\_precision<ValueType,\ 2>}},\ IndexType>*\ result)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00108\ \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{00109\ }
\DoxyCodeLine{00110\ \textcolor{preprocessor}{\#if\ GINKGO\_ENABLE\_HALF\ \&\&\ GINKGO\_ENABLE\_BFLOAT16}}
\DoxyCodeLine{00111\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}}<\doxymbox{\hyperlink{namespacegko_ada2119004771922e8f7fcb6910a0363c}{previous\_precision}}<ValueType,\ 3>,\ IndexType>;}
\DoxyCodeLine{00112\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<}
\DoxyCodeLine{00113\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell<next\_precision<ValueType,\ 3>}},\ IndexType>>::convert\_to;}
\DoxyCodeLine{00114\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<\doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell<next\_precision<ValueType,\ 3>}},\ IndexType>>::move\_to;}
\DoxyCodeLine{00115\ }
\DoxyCodeLine{00116\ \ \ \ \ \textcolor{keywordtype}{void}\ convert\_to(}
\DoxyCodeLine{00117\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}}<\doxymbox{\hyperlink{namespacegko_aee37f85b217e5e26fe64207d41fa4bac}{next\_precision<ValueType,\ 3>}},\ IndexType>*\ result)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00118\ }
\DoxyCodeLine{00119\ \ \ \ \ \textcolor{keywordtype}{void}\ move\_to(\doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}}<\doxymbox{\hyperlink{namespacegko_aee37f85b217e5e26fe64207d41fa4bac}{next\_precision<ValueType,\ 3>}},\ IndexType>*\ result)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00120\ \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{00121\ }
\DoxyCodeLine{00122\ \ \ \ \ \textcolor{keywordtype}{void}\ convert\_to(\doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense<ValueType>}}*\ other)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00123\ }
\DoxyCodeLine{00124\ \ \ \ \ \textcolor{keywordtype}{void}\ move\_to(\doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{Dense<ValueType>}}*\ other)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00125\ }
\DoxyCodeLine{00126\ \ \ \ \ \textcolor{keywordtype}{void}\ convert\_to(\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{Csr<ValueType,\ IndexType>}}*\ other)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00127\ }
\DoxyCodeLine{00128\ \ \ \ \ \textcolor{keywordtype}{void}\ move\_to(\doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{Csr<ValueType,\ IndexType>}}*\ other)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00129\ }
\DoxyCodeLine{00130\ \ \ \ \ \textcolor{keywordtype}{void}\ read(\textcolor{keyword}{const}\ mat\_data\&\ data)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00131\ }
\DoxyCodeLine{00132\ \ \ \ \ \textcolor{keywordtype}{void}\ read(\textcolor{keyword}{const}\ device\_mat\_data\&\ data)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00133\ }
\DoxyCodeLine{00134\ \ \ \ \ \textcolor{keywordtype}{void}\ read(device\_mat\_data\&\&\ data)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00135\ }
\DoxyCodeLine{00136\ \ \ \ \ \textcolor{keywordtype}{void}\ write(mat\_data\&\ data)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00137\ }
\DoxyCodeLine{00138\ \ \ \ \ std::unique\_ptr<Diagonal<ValueType>>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a61bddeccf89f00e80ee1e8d538094b7c}{extract\_diagonal}}()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00139\ }
\DoxyCodeLine{00140\ \ \ \ \ std::unique\_ptr<absolute\_type>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a72d92a2f7c4019c22e0490bd004b09e5}{compute\_absolute}}()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00141\ }
\DoxyCodeLine{00142\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a53f95a9a1b58e2ccff2f0806a675cf08}{compute\_absolute\_inplace}}()\ \textcolor{keyword}{override};}
\DoxyCodeLine{00143\ }
\DoxyCodeLine{00149\ \ \ \ \ value\_type*\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a29d42d9e052570791f477b7bca04e322}{get\_values}}()\ noexcept\ \{\ \textcolor{keywordflow}{return}\ values\_.get\_data();\ \}}
\DoxyCodeLine{00150\ }
\DoxyCodeLine{00158\ \ \ \ \ \textcolor{keyword}{const}\ value\_type*\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_ade06917f98468e2863aed3e7c1f83548}{get\_const\_values}}()\ const\ noexcept}
\DoxyCodeLine{00159\ \ \ \ \ \{}
\DoxyCodeLine{00160\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ values\_.get\_const\_data();}
\DoxyCodeLine{00161\ \ \ \ \ \}}
\DoxyCodeLine{00162\ }
\DoxyCodeLine{00168\ \ \ \ \ index\_type*\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a6595659f6680eb1017b7ee77bbbb33c4}{get\_col\_idxs}}()\ noexcept\ \{\ \textcolor{keywordflow}{return}\ col\_idxs\_.get\_data();\ \}}
\DoxyCodeLine{00169\ }
\DoxyCodeLine{00177\ \ \ \ \ \textcolor{keyword}{const}\ index\_type*\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_aa7336833c03bfb55b73023f4b73ef9c9}{get\_const\_col\_idxs}}()\ const\ noexcept}
\DoxyCodeLine{00178\ \ \ \ \ \{}
\DoxyCodeLine{00179\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ col\_idxs\_.get\_const\_data();}
\DoxyCodeLine{00180\ \ \ \ \ \}}
\DoxyCodeLine{00181\ }
\DoxyCodeLine{00187\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a08f9b04b356e58ab57d03ce335ff11ce}{get\_num\_stored\_elements\_per\_row}}()\ const\ noexcept}
\DoxyCodeLine{00188\ \ \ \ \ \{}
\DoxyCodeLine{00189\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ num\_stored\_elements\_per\_row\_;}
\DoxyCodeLine{00190\ \ \ \ \ \}}
\DoxyCodeLine{00191\ }
\DoxyCodeLine{00197\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a0be6e75dcea0975b10e3389a9eedacc1}{get\_stride}}()\ const\ noexcept\ \{\ \textcolor{keywordflow}{return}\ stride\_;\ \}}
\DoxyCodeLine{00198\ }
\DoxyCodeLine{00204\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_aecca4e9cfb1e81958881c6dc3e2aa06f}{get\_num\_stored\_elements}}()\ const\ noexcept}
\DoxyCodeLine{00205\ \ \ \ \ \{}
\DoxyCodeLine{00206\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ values\_.get\_size();}
\DoxyCodeLine{00207\ \ \ \ \ \}}
\DoxyCodeLine{00208\ }
\DoxyCodeLine{00219\ \ \ \ \ value\_type\&\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a000e6a621aca6cb0c1b5cf8b5bf7c63e}{val\_at}}(\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ row,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ idx)\ \textcolor{keyword}{noexcept}}
\DoxyCodeLine{00220\ \ \ \ \ \{}
\DoxyCodeLine{00221\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ values\_.get\_data()[this-\/>linearize\_index(row,\ idx)];}
\DoxyCodeLine{00222\ \ \ \ \ \}}
\DoxyCodeLine{00223\ }
\DoxyCodeLine{00227\ \ \ \ \ value\_type\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a3591fa0ab2ec09b43a15b0f0649d8ea3}{val\_at}}(\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ row,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ idx)\ \textcolor{keyword}{const}\ \textcolor{keyword}{noexcept}}
\DoxyCodeLine{00228\ \ \ \ \ \{}
\DoxyCodeLine{00229\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ values\_.get\_const\_data()[this-\/>linearize\_index(row,\ idx)];}
\DoxyCodeLine{00230\ \ \ \ \ \}}
\DoxyCodeLine{00231\ }
\DoxyCodeLine{00242\ \ \ \ \ index\_type\&\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_adeac644fe3d6266554a34a7805fcc0d7}{col\_at}}(\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ row,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ idx)\ \textcolor{keyword}{noexcept}}
\DoxyCodeLine{00243\ \ \ \ \ \{}
\DoxyCodeLine{00244\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ this-\/>\doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a6595659f6680eb1017b7ee77bbbb33c4}{get\_col\_idxs}}()[this-\/>linearize\_index(row,\ idx)];}
\DoxyCodeLine{00245\ \ \ \ \ \}}
\DoxyCodeLine{00246\ }
\DoxyCodeLine{00250\ \ \ \ \ index\_type\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a1ac1702011ead4e56857de130b4a5301}{col\_at}}(\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ row,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ idx)\ \textcolor{keyword}{const}\ \textcolor{keyword}{noexcept}}
\DoxyCodeLine{00251\ \ \ \ \ \{}
\DoxyCodeLine{00252\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ this-\/>\doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_aa7336833c03bfb55b73023f4b73ef9c9}{get\_const\_col\_idxs}}()[this-\/>linearize\_index(row,\ idx)];}
\DoxyCodeLine{00253\ \ \ \ \ \}}
\DoxyCodeLine{00254\ }
\DoxyCodeLine{00266\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<Ell>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a108e7c0b0b08f9a506c2c51ea154c331}{create}}(}
\DoxyCodeLine{00267\ \ \ \ \ \ \ \ \ std::shared\_ptr<const\ Executor>\ exec,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\&\ size\ =\ \{\},}
\DoxyCodeLine{00268\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ num\_stored\_elements\_per\_row\ =\ 0,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ stride\ =\ 0);}
\DoxyCodeLine{00269\ }
\DoxyCodeLine{00289\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<Ell>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_aa564816208b727c86fed3569c2ea0049}{create}}(std::shared\_ptr<const\ Executor>\ exec,}
\DoxyCodeLine{00290\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\&\ size,}
\DoxyCodeLine{00291\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<value\_type>}}\ values,}
\DoxyCodeLine{00292\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<index\_type>}}\ col\_idxs,}
\DoxyCodeLine{00293\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ num\_stored\_elements\_per\_row,}
\DoxyCodeLine{00294\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ stride);}
\DoxyCodeLine{00295\ }
\DoxyCodeLine{00301\ \ \ \ \ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ InputValueType,\ \textcolor{keyword}{typename}\ InputColumnIndexType>}
\DoxyCodeLine{00302\ \ \ \ \ GKO\_DEPRECATED(}
\DoxyCodeLine{00303\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}explicitly\ construct\ the\ gko::array\ argument\ instead\ of\ passing\ "{}}}
\DoxyCodeLine{00304\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}initializer\ lists"{}})}
\DoxyCodeLine{00305\ \ \ \ \ static\ \doxymbox{\hyperlink{namespacestd}{std}}::unique\_ptr<\doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}}>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a108e7c0b0b08f9a506c2c51ea154c331}{create}}(}
\DoxyCodeLine{00306\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacestd}{std}}::shared\_ptr<const\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}>\ exec,\ const\ \doxymbox{\hyperlink{structgko_1_1dim}{dim}}<2>\&\ size,}
\DoxyCodeLine{00307\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacestd}{std}}::initializer\_list<InputValueType>\ values,}
\DoxyCodeLine{00308\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacestd}{std}}::initializer\_list<InputColumnIndexType>\ col\_idxs,}
\DoxyCodeLine{00309\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ num\_stored\_elements\_per\_row,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ stride)}
\DoxyCodeLine{00310\ \ \ \ \ \{}
\DoxyCodeLine{00311\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a108e7c0b0b08f9a506c2c51ea154c331}{create}}(exec,\ size,\ \doxymbox{\hyperlink{classgko_1_1array}{array<value\_type>}}\{exec,\ std::move(values)\},}
\DoxyCodeLine{00312\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<index\_type>}}\{exec,\ std::move(col\_idxs)\},}
\DoxyCodeLine{00313\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ num\_stored\_elements\_per\_row,\ stride);}
\DoxyCodeLine{00314\ \ \ \ \ \}}
\DoxyCodeLine{00315\ }
\DoxyCodeLine{00329\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<const\ Ell>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_abbadd08ea7fd412f395eb5e8f32c77bb}{create\_const}}(}
\DoxyCodeLine{00330\ \ \ \ \ \ \ \ \ std::shared\_ptr<const\ Executor>\ exec,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\&\ size,}
\DoxyCodeLine{00331\ \ \ \ \ \ \ \ \ gko::detail::const\_array\_view<ValueType>\&\&\ values,}
\DoxyCodeLine{00332\ \ \ \ \ \ \ \ \ gko::detail::const\_array\_view<IndexType>\&\&\ col\_idxs,}
\DoxyCodeLine{00333\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ num\_stored\_elements\_per\_row,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ stride);}
\DoxyCodeLine{00334\ }
\DoxyCodeLine{00340\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}}\&\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_abccbac150ad147b2c3509e3ae7910d11}{operator=}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}}\&);}
\DoxyCodeLine{00341\ }
\DoxyCodeLine{00347\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}}\&\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a3b5d79c690ef048d549398427352c7f5}{operator=}}(\doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}}\&\&);}
\DoxyCodeLine{00348\ }
\DoxyCodeLine{00353\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}}\&);}
\DoxyCodeLine{00354\ }
\DoxyCodeLine{00359\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a66cd3430f83f152ffb0b593ac158475b}{Ell}}(\doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}}\&\&);}
\DoxyCodeLine{00360\ }
\DoxyCodeLine{00361\ \textcolor{keyword}{protected}:}
\DoxyCodeLine{00362\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}}(std::shared\_ptr<const\ Executor>\ exec,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\&\ size\ =\ \{\},}
\DoxyCodeLine{00363\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ num\_stored\_elements\_per\_row\ =\ 0,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ stride\ =\ 0);}
\DoxyCodeLine{00364\ }
\DoxyCodeLine{00365\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Ell_a8c9b8a5dad85443dc0ebb2e1e1cf2eb2}{Ell}}(std::shared\_ptr<const\ Executor>\ exec,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\&\ size,}
\DoxyCodeLine{00366\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<value\_type>}}\ values,\ \doxymbox{\hyperlink{classgko_1_1array}{array<index\_type>}}\ col\_idxs,}
\DoxyCodeLine{00367\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ num\_stored\_elements\_per\_row,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ stride);}
\DoxyCodeLine{00368\ }
\DoxyCodeLine{00378\ \ \ \ \ \textcolor{keywordtype}{void}\ resize(\doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ new\_size,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ max\_row\_nnz);}
\DoxyCodeLine{00379\ }
\DoxyCodeLine{00380\ \ \ \ \ \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{00381\ }
\DoxyCodeLine{00382\ \ \ \ \ \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{00383\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ x)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00384\ }
\DoxyCodeLine{00385\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ linearize\_index(\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ row,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ col)\ \textcolor{keyword}{const}\ \textcolor{keyword}{noexcept}}
\DoxyCodeLine{00386\ \ \ \ \ \{}
\DoxyCodeLine{00387\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ row\ +\ stride\_\ *\ col;}
\DoxyCodeLine{00388\ \ \ \ \ \}}
\DoxyCodeLine{00389\ }
\DoxyCodeLine{00390\ \textcolor{keyword}{private}:}
\DoxyCodeLine{00391\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ num\_stored\_elements\_per\_row\_;}
\DoxyCodeLine{00392\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ stride\_;}
\DoxyCodeLine{00393\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<value\_type>}}\ values\_;}
\DoxyCodeLine{00394\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<index\_type>}}\ col\_idxs\_;}
\DoxyCodeLine{00395\ \};}
\DoxyCodeLine{00396\ }
\DoxyCodeLine{00397\ }
\DoxyCodeLine{00398\ \}\ \ \textcolor{comment}{//\ namespace\ matrix}}
\DoxyCodeLine{00399\ \}\ \ \textcolor{comment}{//\ namespace\ gko}}
\DoxyCodeLine{00400\ }
\DoxyCodeLine{00401\ }
\DoxyCodeLine{00402\ \textcolor{preprocessor}{\#endif\ \ }\textcolor{comment}{//\ GKO\_PUBLIC\_CORE\_MATRIX\_ELL\_HPP\_}}

\end{DoxyCode}
