\doxysection{lin\+\_\+op.\+hpp}
\hypertarget{lin__op_8hpp_source}{}\label{lin__op_8hpp_source}\index{ginkgo/core/base/lin\_op.hpp@{ginkgo/core/base/lin\_op.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\_BASE\_LIN\_OP\_HPP\_}}
\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#define\ GKO\_PUBLIC\_CORE\_BASE\_LIN\_OP\_HPP\_}}
\DoxyCodeLine{00007\ }
\DoxyCodeLine{00008\ }
\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ <memory>}}
\DoxyCodeLine{00010\ \textcolor{preprocessor}{\#include\ <type\_traits>}}
\DoxyCodeLine{00011\ \textcolor{preprocessor}{\#include\ <utility>}}
\DoxyCodeLine{00012\ }
\DoxyCodeLine{00013\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/abstract\_factory.hpp>}}
\DoxyCodeLine{00014\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/device\_matrix\_data.hpp>}}
\DoxyCodeLine{00015\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/dim.hpp>}}
\DoxyCodeLine{00016\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/exception\_helpers.hpp>}}
\DoxyCodeLine{00017\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/math.hpp>}}
\DoxyCodeLine{00018\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/matrix\_assembly\_data.hpp>}}
\DoxyCodeLine{00019\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/matrix\_data.hpp>}}
\DoxyCodeLine{00020\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/polymorphic\_object.hpp>}}
\DoxyCodeLine{00021\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/types.hpp>}}
\DoxyCodeLine{00022\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/utils.hpp>}}
\DoxyCodeLine{00023\ \textcolor{preprocessor}{\#include\ <ginkgo/core/log/logger.hpp>}}
\DoxyCodeLine{00024\ }
\DoxyCodeLine{00025\ }
\DoxyCodeLine{00026\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko}{gko}}\ \{}
\DoxyCodeLine{00027\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko_1_1matrix}{matrix}}\ \{}
\DoxyCodeLine{00028\ }
\DoxyCodeLine{00029\ }
\DoxyCodeLine{00030\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType>}
\DoxyCodeLine{00031\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1matrix_1_1Diagonal}{Diagonal}};}
\DoxyCodeLine{00032\ }
\DoxyCodeLine{00033\ }
\DoxyCodeLine{00034\ \}\ \ \textcolor{comment}{//\ namespace\ matrix}}
\DoxyCodeLine{00035\ }
\DoxyCodeLine{00036\ }
\DoxyCodeLine{00117\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1LinOp_a1f2a4cc7323e0b9816428e3545fc6ed7}{LinOp}}\ :\ \textcolor{keyword}{public}\ EnableAbstractPolymorphicObject<LinOp>\ \{}
\DoxyCodeLine{00118\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00129\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1LinOp_a1f2a4cc7323e0b9816428e3545fc6ed7}{LinOp}}*\ \doxymbox{\hyperlink{classgko_1_1LinOp_a8aba659b97d7bb9ad0c1a0d385c28f28}{apply}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ b,\ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<LinOp>}}\ x)}
\DoxyCodeLine{00130\ \ \ \ \ \{}
\DoxyCodeLine{00131\ \ \ \ \ \ \ \ \ this-\/>\textcolor{keyword}{template}\ \doxymbox{\hyperlink{namespacegko_1_1log}{log<log::Logger::linop\_apply\_started>}}(\textcolor{keyword}{this},\ b.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),}
\DoxyCodeLine{00132\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ x.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}());}
\DoxyCodeLine{00133\ \ \ \ \ \ \ \ \ this-\/>validate\_application\_parameters(b.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),\ x.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}());}
\DoxyCodeLine{00134\ \ \ \ \ \ \ \ \ \textcolor{keyword}{auto}\ exec\ =\ this-\/>get\_executor();}
\DoxyCodeLine{00135\ \ \ \ \ \ \ \ \ this-\/>apply\_impl(\doxymbox{\hyperlink{namespacegko_adf2f8602dc9453752a787b40bbf13fcf}{make\_temporary\_clone}}(exec,\ b).get(),}
\DoxyCodeLine{00136\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_adf2f8602dc9453752a787b40bbf13fcf}{make\_temporary\_clone}}(exec,\ x).get());}
\DoxyCodeLine{00137\ \ \ \ \ \ \ \ \ this-\/>\textcolor{keyword}{template}\ \doxymbox{\hyperlink{namespacegko_1_1log}{log<log::Logger::linop\_apply\_completed>}}(\textcolor{keyword}{this},\ b.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),}
\DoxyCodeLine{00138\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ x.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}());}
\DoxyCodeLine{00139\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \textcolor{keyword}{this};}
\DoxyCodeLine{00140\ \ \ \ \ \}}
\DoxyCodeLine{00141\ }
\DoxyCodeLine{00145\ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp_a1f2a4cc7323e0b9816428e3545fc6ed7}{LinOp}}*\ \doxymbox{\hyperlink{classgko_1_1LinOp_acd4edb34e908c3fdeef43fe15e10625d}{apply}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ b,\ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<LinOp>}}\ x)\textcolor{keyword}{\ const}}
\DoxyCodeLine{00146\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00147\ \ \ \ \ \ \ \ \ this-\/>\textcolor{keyword}{template}\ \doxymbox{\hyperlink{namespacegko_1_1log}{log<log::Logger::linop\_apply\_started>}}(\textcolor{keyword}{this},\ b.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),}
\DoxyCodeLine{00148\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ x.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}());}
\DoxyCodeLine{00149\ \ \ \ \ \ \ \ \ this-\/>validate\_application\_parameters(b.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),\ x.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}());}
\DoxyCodeLine{00150\ \ \ \ \ \ \ \ \ \textcolor{keyword}{auto}\ exec\ =\ this-\/>get\_executor();}
\DoxyCodeLine{00151\ \ \ \ \ \ \ \ \ this-\/>apply\_impl(\doxymbox{\hyperlink{namespacegko_adf2f8602dc9453752a787b40bbf13fcf}{make\_temporary\_clone}}(exec,\ b).get(),}
\DoxyCodeLine{00152\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_adf2f8602dc9453752a787b40bbf13fcf}{make\_temporary\_clone}}(exec,\ x).get());}
\DoxyCodeLine{00153\ \ \ \ \ \ \ \ \ this-\/>\textcolor{keyword}{template}\ \doxymbox{\hyperlink{namespacegko_1_1log}{log<log::Logger::linop\_apply\_completed>}}(\textcolor{keyword}{this},\ b.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),}
\DoxyCodeLine{00154\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ x.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}());}
\DoxyCodeLine{00155\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \textcolor{keyword}{this};}
\DoxyCodeLine{00156\ \ \ \ \ \}}
\DoxyCodeLine{00157\ }
\DoxyCodeLine{00168\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1LinOp_a1f2a4cc7323e0b9816428e3545fc6ed7}{LinOp}}*\ \doxymbox{\hyperlink{classgko_1_1LinOp_a0f5d1c5bbd0ae8bb3a73eca78ff6d1b9}{apply}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ alpha,\ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ b,}
\DoxyCodeLine{00169\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ beta,\ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<LinOp>}}\ x)}
\DoxyCodeLine{00170\ \ \ \ \ \{}
\DoxyCodeLine{00171\ \ \ \ \ \ \ \ \ this-\/>\textcolor{keyword}{template}\ \doxymbox{\hyperlink{namespacegko_1_1log}{log<log::Logger::linop\_advanced\_apply\_started>}}(}
\DoxyCodeLine{00172\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{this},\ alpha.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),\ b.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),\ beta.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),\ x.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}());}
\DoxyCodeLine{00173\ \ \ \ \ \ \ \ \ this-\/>validate\_application\_parameters(alpha.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),\ b.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),\ beta.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),}
\DoxyCodeLine{00174\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ x.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}());}
\DoxyCodeLine{00175\ \ \ \ \ \ \ \ \ \textcolor{keyword}{auto}\ exec\ =\ this-\/>get\_executor();}
\DoxyCodeLine{00176\ \ \ \ \ \ \ \ \ this-\/>apply\_impl(\doxymbox{\hyperlink{namespacegko_adf2f8602dc9453752a787b40bbf13fcf}{make\_temporary\_clone}}(exec,\ alpha).get(),}
\DoxyCodeLine{00177\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_adf2f8602dc9453752a787b40bbf13fcf}{make\_temporary\_clone}}(exec,\ b).get(),}
\DoxyCodeLine{00178\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_adf2f8602dc9453752a787b40bbf13fcf}{make\_temporary\_clone}}(exec,\ beta).get(),}
\DoxyCodeLine{00179\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_adf2f8602dc9453752a787b40bbf13fcf}{make\_temporary\_clone}}(exec,\ x).get());}
\DoxyCodeLine{00180\ \ \ \ \ \ \ \ \ this-\/>\textcolor{keyword}{template}\ \doxymbox{\hyperlink{namespacegko_1_1log}{log<log::Logger::linop\_advanced\_apply\_completed>}}(}
\DoxyCodeLine{00181\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{this},\ alpha.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),\ b.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),\ beta.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),\ x.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}());}
\DoxyCodeLine{00182\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \textcolor{keyword}{this};}
\DoxyCodeLine{00183\ \ \ \ \ \}}
\DoxyCodeLine{00184\ }
\DoxyCodeLine{00188\ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp_a1f2a4cc7323e0b9816428e3545fc6ed7}{LinOp}}*\ \doxymbox{\hyperlink{classgko_1_1LinOp_ae8e3f6ff61c48ea5e6b3b06e2bc23bd8}{apply}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ alpha,\ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ b,}
\DoxyCodeLine{00189\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ beta,\ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<LinOp>}}\ x)\textcolor{keyword}{\ const}}
\DoxyCodeLine{00190\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00191\ \ \ \ \ \ \ \ \ this-\/>\textcolor{keyword}{template}\ \doxymbox{\hyperlink{namespacegko_1_1log}{log<log::Logger::linop\_advanced\_apply\_started>}}(}
\DoxyCodeLine{00192\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{this},\ alpha.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),\ b.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),\ beta.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),\ x.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}());}
\DoxyCodeLine{00193\ \ \ \ \ \ \ \ \ this-\/>validate\_application\_parameters(alpha.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),\ b.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),\ beta.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),}
\DoxyCodeLine{00194\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ x.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}());}
\DoxyCodeLine{00195\ \ \ \ \ \ \ \ \ \textcolor{keyword}{auto}\ exec\ =\ this-\/>get\_executor();}
\DoxyCodeLine{00196\ \ \ \ \ \ \ \ \ this-\/>apply\_impl(\doxymbox{\hyperlink{namespacegko_adf2f8602dc9453752a787b40bbf13fcf}{make\_temporary\_clone}}(exec,\ alpha).get(),}
\DoxyCodeLine{00197\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_adf2f8602dc9453752a787b40bbf13fcf}{make\_temporary\_clone}}(exec,\ b).get(),}
\DoxyCodeLine{00198\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_adf2f8602dc9453752a787b40bbf13fcf}{make\_temporary\_clone}}(exec,\ beta).get(),}
\DoxyCodeLine{00199\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_adf2f8602dc9453752a787b40bbf13fcf}{make\_temporary\_clone}}(exec,\ x).get());}
\DoxyCodeLine{00200\ \ \ \ \ \ \ \ \ this-\/>\textcolor{keyword}{template}\ \doxymbox{\hyperlink{namespacegko_1_1log}{log<log::Logger::linop\_advanced\_apply\_completed>}}(}
\DoxyCodeLine{00201\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{this},\ alpha.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),\ b.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),\ beta.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}(),\ x.\doxymbox{\hyperlink{classgko_1_1ptr__param_ad1245c2636fdba26d3a3fab9fec5e068}{get}}());}
\DoxyCodeLine{00202\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \textcolor{keyword}{this};}
\DoxyCodeLine{00203\ \ \ \ \ \}}
\DoxyCodeLine{00204\ }
\DoxyCodeLine{00210\ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\&\ \doxymbox{\hyperlink{classgko_1_1LinOp_a9f910c8bdd256ffb4a4afd4e15ded3e9}{get\_size}}()\ const\ noexcept\ \{\ \textcolor{keywordflow}{return}\ size\_;\ \}}
\DoxyCodeLine{00211\ }
\DoxyCodeLine{00219\ \ \ \ \ \textcolor{keyword}{virtual}\ \textcolor{keywordtype}{bool}\ \doxymbox{\hyperlink{classgko_1_1LinOp_a80967e89745c73e5df8640fe1c7e4aaa}{apply\_uses\_initial\_guess}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \textcolor{keyword}{false};\ \}}
\DoxyCodeLine{00220\ }
\DoxyCodeLine{00222\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1LinOp_a1f2a4cc7323e0b9816428e3545fc6ed7}{LinOp}}\&\ \doxymbox{\hyperlink{classgko_1_1LinOp_af5a924d7769d2b1ae15223b8a758ea08}{operator=}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp_a1f2a4cc7323e0b9816428e3545fc6ed7}{LinOp}}\&)\ =\ \textcolor{keywordflow}{default};}
\DoxyCodeLine{00223\ }
\DoxyCodeLine{00229\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1LinOp_a1f2a4cc7323e0b9816428e3545fc6ed7}{LinOp}}\&\ \doxymbox{\hyperlink{classgko_1_1LinOp_ab52764d5fdf7bd6623365d51ebf077cb}{operator=}}(\doxymbox{\hyperlink{classgko_1_1LinOp_a1f2a4cc7323e0b9816428e3545fc6ed7}{LinOp}}\&\&\ other)}
\DoxyCodeLine{00230\ \ \ \ \ \{}
\DoxyCodeLine{00231\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\textcolor{keyword}{this}\ !=\ \&other)\ \{}
\DoxyCodeLine{00232\ \ \ \ \ \ \ \ \ \ \ \ \ EnableAbstractPolymorphicObject<LinOp>::operator=(std::move(other));}
\DoxyCodeLine{00233\ \ \ \ \ \ \ \ \ \ \ \ \ this-\/>set\_size(other.get\_size());}
\DoxyCodeLine{00234\ \ \ \ \ \ \ \ \ \ \ \ \ other.set\_size(\{\});}
\DoxyCodeLine{00235\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{00236\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ *\textcolor{keyword}{this};}
\DoxyCodeLine{00237\ \ \ \ \ \}}
\DoxyCodeLine{00238\ }
\DoxyCodeLine{00240\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1LinOp_a1f2a4cc7323e0b9816428e3545fc6ed7}{LinOp}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp_a1f2a4cc7323e0b9816428e3545fc6ed7}{LinOp}}\&)\ =\ \textcolor{keywordflow}{default};}
\DoxyCodeLine{00241\ }
\DoxyCodeLine{00246\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1LinOp_ab2ed13be07904287372983b9d7c2b8ee}{LinOp}}(\doxymbox{\hyperlink{classgko_1_1LinOp_a1f2a4cc7323e0b9816428e3545fc6ed7}{LinOp}}\&\&\ other)}
\DoxyCodeLine{00247\ \ \ \ \ \ \ \ \ :\ EnableAbstractPolymorphicObject<\doxymbox{\hyperlink{classgko_1_1LinOp_a1f2a4cc7323e0b9816428e3545fc6ed7}{LinOp}}>(\doxymbox{\hyperlink{namespacestd}{std}}::move(other)),}
\DoxyCodeLine{00248\ \ \ \ \ \ \ \ \ \ \ size\_\{\doxymbox{\hyperlink{namespacestd}{std}}::exchange(other.size\_,\ \doxymbox{\hyperlink{structgko_1_1dim}{dim}}<2>\{\})\}}
\DoxyCodeLine{00249\ \ \ \ \ \{\}}
\DoxyCodeLine{00250\ }
\DoxyCodeLine{00251\ \textcolor{keyword}{protected}:}
\DoxyCodeLine{00258\ \ \ \ \ \textcolor{keyword}{explicit}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}(std::shared\_ptr<const\ Executor>\ exec,}
\DoxyCodeLine{00259\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\&\ size\ =\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\{\})}
\DoxyCodeLine{00260\ \ \ \ \ \ \ \ \ :\ EnableAbstractPolymorphicObject<\doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}>(exec),\ size\_\{size\}}
\DoxyCodeLine{00261\ \ \ \ \ \{\}}
\DoxyCodeLine{00262\ }
\DoxyCodeLine{00268\ \ \ \ \ \textcolor{keywordtype}{void}\ set\_size(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\&\ value)\ \textcolor{keyword}{noexcept}\ \{\ size\_\ =\ value;\ \}}
\DoxyCodeLine{00269\ }
\DoxyCodeLine{00279\ \ \ \ \ \textcolor{keyword}{virtual}\ \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}\ =\ 0;}
\DoxyCodeLine{00280\ }
\DoxyCodeLine{00290\ \ \ \ \ \textcolor{keyword}{virtual}\ \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,}
\DoxyCodeLine{00291\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ beta,\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ x)\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00292\ }
\DoxyCodeLine{00300\ \ \ \ \ \textcolor{keywordtype}{void}\ validate\_application\_parameters(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ b,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ x)\textcolor{keyword}{\ const}}
\DoxyCodeLine{00301\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00302\ \ \ \ \ \ \ \ \ GKO\_ASSERT\_CONFORMANT(\textcolor{keyword}{this},\ b);}
\DoxyCodeLine{00303\ \ \ \ \ \ \ \ \ GKO\_ASSERT\_EQUAL\_ROWS(\textcolor{keyword}{this},\ x);}
\DoxyCodeLine{00304\ \ \ \ \ \ \ \ \ GKO\_ASSERT\_EQUAL\_COLS(b,\ x);}
\DoxyCodeLine{00305\ \ \ \ \ \}}
\DoxyCodeLine{00306\ }
\DoxyCodeLine{00316\ \ \ \ \ \textcolor{keywordtype}{void}\ validate\_application\_parameters(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ alpha,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ b,}
\DoxyCodeLine{00317\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ beta,}
\DoxyCodeLine{00318\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ x)\textcolor{keyword}{\ const}}
\DoxyCodeLine{00319\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00320\ \ \ \ \ \ \ \ \ this-\/>validate\_application\_parameters(b,\ x);}
\DoxyCodeLine{00321\ \ \ \ \ \ \ \ \ GKO\_ASSERT\_EQUAL\_DIMENSIONS(alpha,\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}(1,\ 1));}
\DoxyCodeLine{00322\ \ \ \ \ \ \ \ \ GKO\_ASSERT\_EQUAL\_DIMENSIONS(beta,\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}(1,\ 1));}
\DoxyCodeLine{00323\ \ \ \ \ \}}
\DoxyCodeLine{00324\ }
\DoxyCodeLine{00325\ \textcolor{keyword}{private}:}
\DoxyCodeLine{00326\ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ size\_\{\};}
\DoxyCodeLine{00327\ \};}
\DoxyCodeLine{00328\ }
\DoxyCodeLine{00329\ }
\DoxyCodeLine{00384\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1LinOpFactory}{LinOpFactory}}}
\DoxyCodeLine{00385\ \ \ \ \ :\ \textcolor{keyword}{public}\ AbstractFactory<LinOp,\ std::shared\_ptr<const\ LinOp>>\ \{}
\DoxyCodeLine{00386\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00387\ \ \ \ \ \textcolor{keyword}{using\ }AbstractFactory<\doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}},\ std::shared\_ptr<const\ LinOp>>::AbstractFactory;}
\DoxyCodeLine{00388\ }
\DoxyCodeLine{00389\ \ \ \ \ std::unique\_ptr<LinOp>\ generate(std::shared\_ptr<const\ LinOp>\ input)\textcolor{keyword}{\ const}}
\DoxyCodeLine{00390\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00391\ \ \ \ \ \ \ \ \ this-\/>\textcolor{keyword}{template}\ \doxymbox{\hyperlink{namespacegko_1_1log}{log<log::Logger::linop\_factory\_generate\_started>}}(}
\DoxyCodeLine{00392\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{this},\ input.get());}
\DoxyCodeLine{00393\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keyword}{auto}\ exec\ =\ this-\/>get\_executor();}
\DoxyCodeLine{00394\ \ \ \ \ \ \ \ \ std::unique\_ptr<LinOp>\ generated;}
\DoxyCodeLine{00395\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (input-\/>get\_executor()\ ==\ exec)\ \{}
\DoxyCodeLine{00396\ \ \ \ \ \ \ \ \ \ \ \ \ generated\ =\ this-\/>\doxymbox{\hyperlink{classgko_1_1AbstractFactory_a7287977ddcd747b4351b72be49a6c230}{AbstractFactory::generate}}(input);}
\DoxyCodeLine{00397\ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
\DoxyCodeLine{00398\ \ \ \ \ \ \ \ \ \ \ \ \ generated\ =}
\DoxyCodeLine{00399\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ this-\/>\doxymbox{\hyperlink{classgko_1_1AbstractFactory_a7287977ddcd747b4351b72be49a6c230}{AbstractFactory::generate}}(\doxymbox{\hyperlink{namespacegko_aa194e34282452493231ca7b01ffb5e64}{gko::clone}}(exec,\ input));}
\DoxyCodeLine{00400\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{00401\ \ \ \ \ \ \ \ \ this-\/>\textcolor{keyword}{template}\ \doxymbox{\hyperlink{namespacegko_1_1log}{log<log::Logger::linop\_factory\_generate\_completed>}}(}
\DoxyCodeLine{00402\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{this},\ input.get(),\ generated.get());}
\DoxyCodeLine{00403\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ generated;}
\DoxyCodeLine{00404\ \ \ \ \ \}}
\DoxyCodeLine{00405\ \};}
\DoxyCodeLine{00406\ }
\DoxyCodeLine{00407\ }
\DoxyCodeLine{00433\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1Transposable}{Transposable}}\ \{}
\DoxyCodeLine{00434\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00435\ \ \ \ \ \textcolor{keyword}{virtual}\ \doxymbox{\hyperlink{classgko_1_1Transposable}{\string~Transposable}}()\ =\ \textcolor{keywordflow}{default};}
\DoxyCodeLine{00436\ }
\DoxyCodeLine{00442\ \ \ \ \ \textcolor{keyword}{virtual}\ std::unique\_ptr<LinOp>\ \doxymbox{\hyperlink{classgko_1_1Transposable_adf04fdf2ed79b117edbef42520bfe8fa}{transpose}}()\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00443\ }
\DoxyCodeLine{00450\ \ \ \ \ \textcolor{keyword}{virtual}\ std::unique\_ptr<LinOp>\ \doxymbox{\hyperlink{classgko_1_1Transposable_a7c230aacdb222f09ba49baf0bd9e82eb}{conj\_transpose}}()\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00451\ \};}
\DoxyCodeLine{00452\ }
\DoxyCodeLine{00453\ }
\DoxyCodeLine{00483\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ IndexType>}
\DoxyCodeLine{00484\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1Permutable}{Permutable}}\ \{}
\DoxyCodeLine{00485\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00486\ \ \ \ \ \textcolor{keyword}{virtual}\ \doxymbox{\hyperlink{classgko_1_1Permutable}{\string~Permutable}}()\ =\ \textcolor{keywordflow}{default};}
\DoxyCodeLine{00487\ }
\DoxyCodeLine{00502\ \ \ \ \ \textcolor{keyword}{virtual}\ std::unique\_ptr<LinOp>\ \doxymbox{\hyperlink{classgko_1_1Permutable_ae4fb8d127c4942e648eef400117039de}{permute}}(}
\DoxyCodeLine{00503\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1array}{array<IndexType>}}*\ permutation\_indices)\textcolor{keyword}{\ const}}
\DoxyCodeLine{00504\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00505\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \doxymbox{\hyperlink{namespacegko_ae3e355a655feea026a7c46814d37a9c9}{as<Permutable>}}(this-\/>\doxymbox{\hyperlink{classgko_1_1Permutable_a842f85a61b0b8f20083eb597978e0ffb}{row\_permute}}(permutation\_indices))}
\DoxyCodeLine{00506\ \ \ \ \ \ \ \ \ \ \ \ \ -\/>column\_permute(permutation\_indices);}
\DoxyCodeLine{00507\ \ \ \ \ \}}
\DoxyCodeLine{00508\ }
\DoxyCodeLine{00523\ \ \ \ \ \textcolor{keyword}{virtual}\ std::unique\_ptr<LinOp>\ \doxymbox{\hyperlink{classgko_1_1Permutable_aab402585e8e7850744d1b3b0baec60a3}{inverse\_permute}}(}
\DoxyCodeLine{00524\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1array}{array<IndexType>}}*\ permutation\_indices)\textcolor{keyword}{\ const}}
\DoxyCodeLine{00525\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00526\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \doxymbox{\hyperlink{namespacegko_ae3e355a655feea026a7c46814d37a9c9}{as<Permutable>}}(this-\/>\doxymbox{\hyperlink{classgko_1_1Permutable_a9d901d0384ef13d240430a2baaba22d0}{inverse\_row\_permute}}(permutation\_indices))}
\DoxyCodeLine{00527\ \ \ \ \ \ \ \ \ \ \ \ \ -\/>inverse\_column\_permute(permutation\_indices);}
\DoxyCodeLine{00528\ \ \ \ \ \}}
\DoxyCodeLine{00529\ }
\DoxyCodeLine{00543\ \ \ \ \ \textcolor{keyword}{virtual}\ std::unique\_ptr<LinOp>\ \doxymbox{\hyperlink{classgko_1_1Permutable_a842f85a61b0b8f20083eb597978e0ffb}{row\_permute}}(}
\DoxyCodeLine{00544\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1array}{array<IndexType>}}*\ permutation\_indices)\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00545\ }
\DoxyCodeLine{00560\ \ \ \ \ \textcolor{keyword}{virtual}\ std::unique\_ptr<LinOp>\ \doxymbox{\hyperlink{classgko_1_1Permutable_acf1570421c3c5c9e057ee325a80efd65}{column\_permute}}(}
\DoxyCodeLine{00561\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1array}{array<IndexType>}}*\ permutation\_indices)\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00562\ }
\DoxyCodeLine{00576\ \ \ \ \ \textcolor{keyword}{virtual}\ std::unique\_ptr<LinOp>\ \doxymbox{\hyperlink{classgko_1_1Permutable_a9d901d0384ef13d240430a2baaba22d0}{inverse\_row\_permute}}(}
\DoxyCodeLine{00577\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1array}{array<IndexType>}}*\ permutation\_indices)\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00578\ }
\DoxyCodeLine{00593\ \ \ \ \ \textcolor{keyword}{virtual}\ std::unique\_ptr<LinOp>\ \doxymbox{\hyperlink{classgko_1_1Permutable_a7eb82db489bbf87091373c58d3325844}{inverse\_column\_permute}}(}
\DoxyCodeLine{00594\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1array}{array<IndexType>}}*\ permutation\_indices)\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00595\ \};}
\DoxyCodeLine{00596\ }
\DoxyCodeLine{00597\ }
\DoxyCodeLine{00604\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType,\ \textcolor{keyword}{typename}\ IndexType>}
\DoxyCodeLine{00605\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1ReadableFromMatrixData}{ReadableFromMatrixData}}\ \{}
\DoxyCodeLine{00606\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00607\ \ \ \ \ \textcolor{keyword}{using\ }value\_type\ =\ ValueType;}
\DoxyCodeLine{00608\ \ \ \ \ \textcolor{keyword}{using\ }index\_type\ =\ IndexType;}
\DoxyCodeLine{00609\ }
\DoxyCodeLine{00610\ \ \ \ \ \textcolor{keyword}{virtual}\ \doxymbox{\hyperlink{classgko_1_1ReadableFromMatrixData}{\string~ReadableFromMatrixData}}()\ =\ \textcolor{keywordflow}{default};}
\DoxyCodeLine{00611\ }
\DoxyCodeLine{00617\ \ \ \ \ \textcolor{keyword}{virtual}\ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1ReadableFromMatrixData_add5c12e23b3ac3c8fbd607fa5a9656bb}{read}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\_data<ValueType,\ IndexType>}}\&\ data)\ =\ 0;}
\DoxyCodeLine{00618\ }
\DoxyCodeLine{00624\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1ReadableFromMatrixData_a7fc1141f76b70b6ca112c7b99387b8b7}{read}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1matrix__assembly__data}{matrix\_assembly\_data<ValueType,\ IndexType>}}\&\ data)}
\DoxyCodeLine{00625\ \ \ \ \ \{}
\DoxyCodeLine{00626\ \ \ \ \ \ \ \ \ this-\/>\doxymbox{\hyperlink{classgko_1_1ReadableFromMatrixData_add5c12e23b3ac3c8fbd607fa5a9656bb}{read}}(data.\doxymbox{\hyperlink{classgko_1_1matrix__assembly__data_a9a86018a5bd6475d8bd3c4ea229aee1d}{get\_ordered\_data}}());}
\DoxyCodeLine{00627\ \ \ \ \ \}}
\DoxyCodeLine{00628\ }
\DoxyCodeLine{00634\ \ \ \ \ \textcolor{keyword}{virtual}\ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1ReadableFromMatrixData_a02785ab361765a981b9e1677704fffdb}{read}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data}{device\_matrix\_data<ValueType,\ IndexType>}}\&\ data)}
\DoxyCodeLine{00635\ \ \ \ \ \{}
\DoxyCodeLine{00636\ \ \ \ \ \ \ \ \ this-\/>\doxymbox{\hyperlink{classgko_1_1ReadableFromMatrixData_add5c12e23b3ac3c8fbd607fa5a9656bb}{read}}(data.\doxymbox{\hyperlink{classgko_1_1device__matrix__data_ad76d20b33f8744baa54594a62d5a458c}{copy\_to\_host}}());}
\DoxyCodeLine{00637\ \ \ \ \ \}}
\DoxyCodeLine{00638\ }
\DoxyCodeLine{00645\ \ \ \ \ \textcolor{keyword}{virtual}\ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1ReadableFromMatrixData_a0fcdcdbef5e8d673bf19f5d5ab7afb45}{read}}(\doxymbox{\hyperlink{classgko_1_1device__matrix__data}{device\_matrix\_data<ValueType,\ IndexType>}}\&\&\ data)}
\DoxyCodeLine{00646\ \ \ \ \ \{}
\DoxyCodeLine{00647\ \ \ \ \ \ \ \ \ this-\/>\doxymbox{\hyperlink{classgko_1_1ReadableFromMatrixData_add5c12e23b3ac3c8fbd607fa5a9656bb}{read}}(data.copy\_to\_host());}
\DoxyCodeLine{00648\ \ \ \ \ \ \ \ \ data.empty\_out();}
\DoxyCodeLine{00649\ \ \ \ \ \}}
\DoxyCodeLine{00650\ \};}
\DoxyCodeLine{00651\ }
\DoxyCodeLine{00652\ }
\DoxyCodeLine{00659\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType,\ \textcolor{keyword}{typename}\ IndexType>}
\DoxyCodeLine{00660\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1WritableToMatrixData}{WritableToMatrixData}}\ \{}
\DoxyCodeLine{00661\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00662\ \ \ \ \ \textcolor{keyword}{using\ }value\_type\ =\ ValueType;}
\DoxyCodeLine{00663\ \ \ \ \ \textcolor{keyword}{using\ }index\_type\ =\ IndexType;}
\DoxyCodeLine{00664\ }
\DoxyCodeLine{00665\ \ \ \ \ \textcolor{keyword}{virtual}\ \doxymbox{\hyperlink{classgko_1_1WritableToMatrixData}{\string~WritableToMatrixData}}()\ =\ \textcolor{keywordflow}{default};}
\DoxyCodeLine{00666\ }
\DoxyCodeLine{00672\ \ \ \ \ \textcolor{keyword}{virtual}\ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1WritableToMatrixData_a96036c3a4bf4c67fa93002808b8b14e2}{write}}(\doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\_data<ValueType,\ IndexType>}}\&\ data)\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00673\ \};}
\DoxyCodeLine{00674\ }
\DoxyCodeLine{00675\ }
\DoxyCodeLine{00682\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1Preconditionable}{Preconditionable}}\ \{}
\DoxyCodeLine{00683\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00684\ \ \ \ \ \textcolor{keyword}{virtual}\ \doxymbox{\hyperlink{classgko_1_1Preconditionable}{\string~Preconditionable}}()\ =\ \textcolor{keywordflow}{default};}
\DoxyCodeLine{00685\ }
\DoxyCodeLine{00691\ \ \ \ \ \textcolor{keyword}{virtual}\ std::shared\_ptr<const\ LinOp>\ \doxymbox{\hyperlink{classgko_1_1Preconditionable_abde941e32b5fc5007a4afe0f6d3fdfbc}{get\_preconditioner}}()\textcolor{keyword}{\ const}}
\DoxyCodeLine{00692\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00693\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ preconditioner\_;}
\DoxyCodeLine{00694\ \ \ \ \ \}}
\DoxyCodeLine{00695\ }
\DoxyCodeLine{00702\ \ \ \ \ \textcolor{keyword}{virtual}\ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1Preconditionable_a95db3e56eb17efbcde951c5ed144582d}{set\_preconditioner}}(std::shared\_ptr<const\ LinOp>\ new\_precond)}
\DoxyCodeLine{00703\ \ \ \ \ \{}
\DoxyCodeLine{00704\ \ \ \ \ \ \ \ \ preconditioner\_\ =\ new\_precond;}
\DoxyCodeLine{00705\ \ \ \ \ \}}
\DoxyCodeLine{00706\ }
\DoxyCodeLine{00707\ \textcolor{keyword}{private}:}
\DoxyCodeLine{00708\ \ \ \ \ std::shared\_ptr<const\ LinOp>\ preconditioner\_\{\};}
\DoxyCodeLine{00709\ \};}
\DoxyCodeLine{00710\ }
\DoxyCodeLine{00711\ }
\DoxyCodeLine{00722\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1DiagonalLinOpExtractable}{DiagonalLinOpExtractable}}\ \{}
\DoxyCodeLine{00723\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00724\ \ \ \ \ \textcolor{keyword}{virtual}\ \doxymbox{\hyperlink{classgko_1_1DiagonalLinOpExtractable}{\string~DiagonalLinOpExtractable}}()\ =\ \textcolor{keywordflow}{default};}
\DoxyCodeLine{00725\ }
\DoxyCodeLine{00731\ \ \ \ \ \textcolor{keyword}{virtual}\ std::unique\_ptr<LinOp>\ \doxymbox{\hyperlink{classgko_1_1DiagonalLinOpExtractable_a02ab47f56934bb00c994fe03c9204369}{extract\_diagonal\_linop}}()\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00732\ \};}
\DoxyCodeLine{00733\ }
\DoxyCodeLine{00734\ }
\DoxyCodeLine{00742\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType>}
\DoxyCodeLine{00743\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1DiagonalExtractable}{DiagonalExtractable}}\ :\ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1DiagonalLinOpExtractable}{DiagonalLinOpExtractable}}\ \{}
\DoxyCodeLine{00744\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00745\ \ \ \ \ \textcolor{keyword}{using\ }value\_type\ =\ ValueType;}
\DoxyCodeLine{00746\ }
\DoxyCodeLine{00747\ \ \ \ \ \textcolor{keyword}{virtual}\ \doxymbox{\hyperlink{classgko_1_1DiagonalExtractable}{\string~DiagonalExtractable}}()\ =\ \textcolor{keywordflow}{default};}
\DoxyCodeLine{00748\ }
\DoxyCodeLine{00749\ \ \ \ \ std::unique\_ptr<LinOp>\ \doxymbox{\hyperlink{classgko_1_1DiagonalExtractable_a7d41c0cb7b317402ea61bc145b82a9db}{extract\_diagonal\_linop}}()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00750\ }
\DoxyCodeLine{00756\ \ \ \ \ \textcolor{keyword}{virtual}\ std::unique\_ptr<matrix::Diagonal<ValueType>>\ \doxymbox{\hyperlink{classgko_1_1DiagonalExtractable_aad6b7e3977359d5a3beab6b27bbb64c4}{extract\_diagonal}}()}
\DoxyCodeLine{00757\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00758\ \};}
\DoxyCodeLine{00759\ }
\DoxyCodeLine{00760\ }
\DoxyCodeLine{00766\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1AbsoluteComputable}{AbsoluteComputable}}\ \{}
\DoxyCodeLine{00767\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00773\ \ \ \ \ \textcolor{keyword}{virtual}\ std::unique\_ptr<LinOp>\ \doxymbox{\hyperlink{classgko_1_1AbsoluteComputable_aebbca019bd19a9c66a894d9315266653}{compute\_absolute\_linop}}()\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00774\ }
\DoxyCodeLine{00778\ \ \ \ \ \textcolor{keyword}{virtual}\ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1AbsoluteComputable_a09c6acf477a3457b2b2dc0618b406da2}{compute\_absolute\_inplace}}()\ =\ 0;}
\DoxyCodeLine{00779\ \};}
\DoxyCodeLine{00780\ }
\DoxyCodeLine{00781\ }
\DoxyCodeLine{00793\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ AbsoluteLinOp>}
\DoxyCodeLine{00794\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1EnableAbsoluteComputation}{EnableAbsoluteComputation}}\ :\ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1AbsoluteComputable}{AbsoluteComputable}}\ \{}
\DoxyCodeLine{00795\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00796\ \ \ \ \ \textcolor{keyword}{using\ }absolute\_type\ =\ AbsoluteLinOp;}
\DoxyCodeLine{00797\ }
\DoxyCodeLine{00798\ \ \ \ \ \textcolor{keyword}{virtual}\ \doxymbox{\hyperlink{classgko_1_1EnableAbsoluteComputation}{\string~EnableAbsoluteComputation}}()\ =\ \textcolor{keywordflow}{default};}
\DoxyCodeLine{00799\ }
\DoxyCodeLine{00800\ \ \ \ \ std::unique\_ptr<LinOp>\ \doxymbox{\hyperlink{classgko_1_1EnableAbsoluteComputation_a4cf4eedb2090f486bdef0a8717142b7c}{compute\_absolute\_linop}}()\textcolor{keyword}{\ const\ override}}
\DoxyCodeLine{00801\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00802\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ this-\/>\doxymbox{\hyperlink{classgko_1_1EnableAbsoluteComputation_a4c042054915430f60124de37545eab65}{compute\_absolute}}();}
\DoxyCodeLine{00803\ \ \ \ \ \}}
\DoxyCodeLine{00804\ }
\DoxyCodeLine{00810\ \ \ \ \ \textcolor{keyword}{virtual}\ std::unique\_ptr<absolute\_type>\ \doxymbox{\hyperlink{classgko_1_1EnableAbsoluteComputation_a4c042054915430f60124de37545eab65}{compute\_absolute}}()\ \textcolor{keyword}{const}\ =\ 0;}
\DoxyCodeLine{00811\ \};}
\DoxyCodeLine{00812\ }
\DoxyCodeLine{00813\ }
\DoxyCodeLine{00818\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1ScaledIdentityAddable}{ScaledIdentityAddable}}\ \{}
\DoxyCodeLine{00819\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00827\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1ScaledIdentityAddable_a43d679d3a9857780f9566bbc61c6b847}{add\_scaled\_identity}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ \textcolor{keyword}{const}\ a,}
\DoxyCodeLine{00828\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ \textcolor{keyword}{const}\ b)}
\DoxyCodeLine{00829\ \ \ \ \ \{}
\DoxyCodeLine{00830\ \ \ \ \ \ \ \ \ GKO\_ASSERT\_IS\_SCALAR(a);}
\DoxyCodeLine{00831\ \ \ \ \ \ \ \ \ GKO\_ASSERT\_IS\_SCALAR(b);}
\DoxyCodeLine{00832\ \ \ \ \ \ \ \ \ \textcolor{keyword}{auto}\ ae\ =\ \doxymbox{\hyperlink{namespacegko_adf2f8602dc9453752a787b40bbf13fcf}{make\_temporary\_clone}}(\doxymbox{\hyperlink{namespacegko_ae3e355a655feea026a7c46814d37a9c9}{as<LinOp>}}(\textcolor{keyword}{this})-\/>get\_executor(),\ a);}
\DoxyCodeLine{00833\ \ \ \ \ \ \ \ \ \textcolor{keyword}{auto}\ be\ =\ \doxymbox{\hyperlink{namespacegko_adf2f8602dc9453752a787b40bbf13fcf}{make\_temporary\_clone}}(\doxymbox{\hyperlink{namespacegko_ae3e355a655feea026a7c46814d37a9c9}{as<LinOp>}}(\textcolor{keyword}{this})-\/>get\_executor(),\ b);}
\DoxyCodeLine{00834\ \ \ \ \ \ \ \ \ add\_scaled\_identity\_impl(ae.get(),\ be.get());}
\DoxyCodeLine{00835\ \ \ \ \ \}}
\DoxyCodeLine{00836\ }
\DoxyCodeLine{00837\ \textcolor{keyword}{private}:}
\DoxyCodeLine{00838\ \ \ \ \ \textcolor{keyword}{virtual}\ \textcolor{keywordtype}{void}\ add\_scaled\_identity\_impl(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ a,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ b)\ =\ 0;}
\DoxyCodeLine{00839\ \};}
\DoxyCodeLine{00840\ }
\DoxyCodeLine{00841\ }
\DoxyCodeLine{00876\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ConcreteLinOp,\ \textcolor{keyword}{typename}\ PolymorphicBase\ =\ LinOp>}
\DoxyCodeLine{00877\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}}
\DoxyCodeLine{00878\ \ \ \ \ :\ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1EnablePolymorphicObject}{EnablePolymorphicObject}}<ConcreteLinOp,\ PolymorphicBase>,}
\DoxyCodeLine{00879\ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1EnablePolymorphicAssignment}{EnablePolymorphicAssignment}}<ConcreteLinOp>\ \{}
\DoxyCodeLine{00880\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00881\ \ \ \ \ \textcolor{keyword}{using\ }\doxymbox{\hyperlink{classgko_1_1EnablePolymorphicObject}{EnablePolymorphicObject}}<ConcreteLinOp,}
\DoxyCodeLine{00882\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PolymorphicBase>\doxymbox{\hyperlink{classgko_1_1EnablePolymorphicObject}{::EnablePolymorphicObject}};}
\DoxyCodeLine{00883\ }
\DoxyCodeLine{00884\ \ \ \ \ \textcolor{keyword}{const}\ ConcreteLinOp*\ apply(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ b,}
\DoxyCodeLine{00885\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<LinOp>}}\ x)\textcolor{keyword}{\ const}}
\DoxyCodeLine{00886\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00887\ \ \ \ \ \ \ \ \ PolymorphicBase::apply(b,\ x);}
\DoxyCodeLine{00888\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ self();}
\DoxyCodeLine{00889\ \ \ \ \ \}}
\DoxyCodeLine{00890\ }
\DoxyCodeLine{00891\ \ \ \ \ ConcreteLinOp*\ apply(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ b,\ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<LinOp>}}\ x)}
\DoxyCodeLine{00892\ \ \ \ \ \{}
\DoxyCodeLine{00893\ \ \ \ \ \ \ \ \ PolymorphicBase::apply(b,\ x);}
\DoxyCodeLine{00894\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ self();}
\DoxyCodeLine{00895\ \ \ \ \ \}}
\DoxyCodeLine{00896\ }
\DoxyCodeLine{00897\ \ \ \ \ \textcolor{keyword}{const}\ ConcreteLinOp*\ apply(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ alpha,}
\DoxyCodeLine{00898\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ b,}
\DoxyCodeLine{00899\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ beta,}
\DoxyCodeLine{00900\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<LinOp>}}\ x)\textcolor{keyword}{\ const}}
\DoxyCodeLine{00901\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00902\ \ \ \ \ \ \ \ \ PolymorphicBase::apply(alpha,\ b,\ beta,\ x);}
\DoxyCodeLine{00903\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ self();}
\DoxyCodeLine{00904\ \ \ \ \ \}}
\DoxyCodeLine{00905\ }
\DoxyCodeLine{00906\ \ \ \ \ ConcreteLinOp*\ apply(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ alpha,\ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ b,}
\DoxyCodeLine{00907\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ beta,\ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<LinOp>}}\ x)}
\DoxyCodeLine{00908\ \ \ \ \ \{}
\DoxyCodeLine{00909\ \ \ \ \ \ \ \ \ PolymorphicBase::apply(alpha,\ b,\ beta,\ x);}
\DoxyCodeLine{00910\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ self();}
\DoxyCodeLine{00911\ \ \ \ \ \}}
\DoxyCodeLine{00912\ }
\DoxyCodeLine{00913\ \textcolor{keyword}{protected}:}
\DoxyCodeLine{00914\ \ \ \ \ GKO\_ENABLE\_SELF(ConcreteLinOp);}
\DoxyCodeLine{00915\ \};}
\DoxyCodeLine{00916\ }
\DoxyCodeLine{00917\ }
\DoxyCodeLine{00935\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ConcreteFactory,\ \textcolor{keyword}{typename}\ ConcreteLinOp,}
\DoxyCodeLine{00936\ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{typename}\ ParametersType,\ \textcolor{keyword}{typename}\ PolymorphicBase\ =\ \doxymbox{\hyperlink{classgko_1_1LinOpFactory}{LinOpFactory}}>}
\DoxyCodeLine{00937\ \textcolor{keyword}{using\ }\doxymbox{\hyperlink{group__LinOp_gab1cdce0d622345d1322a2bc6bdcaa9b6}{EnableDefaultLinOpFactory}}\ =}
\DoxyCodeLine{00938\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1EnableDefaultFactory}{EnableDefaultFactory}}<ConcreteFactory,\ ConcreteLinOp,\ ParametersType,}
\DoxyCodeLine{00939\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PolymorphicBase>;}
\DoxyCodeLine{00940\ }
\DoxyCodeLine{00941\ }
\DoxyCodeLine{01017\ \textcolor{preprocessor}{\#define\ GKO\_ENABLE\_LIN\_OP\_FACTORY(\_lin\_op,\ \_parameters\_name,\ \_factory\_name)\ \ \(\backslash\)}}
\DoxyCodeLine{01018\ \textcolor{preprocessor}{public:\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01019\ \textcolor{preprocessor}{\ \ \ \ const\ \_parameters\_name\#\#\_type\&\ get\_\#\#\_parameters\_name()\ const\ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01020\ \textcolor{preprocessor}{\ \ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01021\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ return\ \_parameters\_name\#\#\_;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01022\ \textcolor{preprocessor}{\ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01023\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01024\ \textcolor{preprocessor}{\ \ \ \ class\ \_factory\_name\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01025\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ :\ public\ ::gko::EnableDefaultLinOpFactory<\_factory\_name,\ \_lin\_op,\ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01026\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_parameters\_name\#\#\_type>\ \{\ \(\backslash\)}}
\DoxyCodeLine{01027\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ friend\ class\ ::gko::EnablePolymorphicObject<\_factory\_name,\ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01028\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::LinOpFactory>;\ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01029\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ friend\ class\ ::gko::enable\_parameters\_type<\_parameters\_name\#\#\_type,\ \ \(\backslash\)}}
\DoxyCodeLine{01030\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_factory\_name>;\ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01031\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ explicit\ \_factory\_name(std::shared\_ptr<const\ ::gko::Executor>\ exec)\ \ \(\backslash\)}}
\DoxyCodeLine{01032\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ :\ ::gko::EnableDefaultLinOpFactory<\_factory\_name,\ \_lin\_op,\ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01033\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_parameters\_name\#\#\_type>(\ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01034\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ std::move(exec))\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01035\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \{\}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01036\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ explicit\ \_factory\_name(std::shared\_ptr<const\ ::gko::Executor>\ exec,\ \ \(\backslash\)}}
\DoxyCodeLine{01037\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ const\ \_parameters\_name\#\#\_type\&\ parameters)\ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01038\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ :\ ::gko::EnableDefaultLinOpFactory<\_factory\_name,\ \_lin\_op,\ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01039\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_parameters\_name\#\#\_type>(\ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01040\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ std::move(exec),\ parameters)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01041\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \{\}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01042\ \textcolor{preprocessor}{\ \ \ \ \};\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01043\ \textcolor{preprocessor}{\ \ \ \ friend\ ::gko::EnableDefaultLinOpFactory<\_factory\_name,\ \_lin\_op,\ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01044\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_parameters\_name\#\#\_type>;\ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01045\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01046\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01047\ \textcolor{preprocessor}{private:\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01048\ \textcolor{preprocessor}{\ \ \ \ \_parameters\_name\#\#\_type\ \_parameters\_name\#\#\_;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01049\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01050\ \textcolor{preprocessor}{public:\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01051\ \textcolor{preprocessor}{\ \ \ \ static\_assert(true,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{01052\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}This\ assert\ is\ used\ to\ counter\ the\ false\ positive\ extra\ "{}\ \(\backslash\)}}
\DoxyCodeLine{01053\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}semi-\/colon\ warnings"{})}}
\DoxyCodeLine{01054\ }
\DoxyCodeLine{01055\ }
\DoxyCodeLine{01056\ \}\ \ \textcolor{comment}{//\ namespace\ gko}}
\DoxyCodeLine{01057\ }
\DoxyCodeLine{01058\ }
\DoxyCodeLine{01059\ \textcolor{preprocessor}{\#endif\ \ }\textcolor{comment}{//\ GKO\_PUBLIC\_CORE\_BASE\_LIN\_OP\_HPP\_}}

\end{DoxyCode}
