\doxysection{exception\+\_\+helpers.\+hpp}
\hypertarget{exception__helpers_8hpp_source}{}\label{exception__helpers_8hpp_source}\index{ginkgo/core/base/exception\_helpers.hpp@{ginkgo/core/base/exception\_helpers.hpp}}

\begin{DoxyCode}{0}
\DoxyCodeLine{00001\ \textcolor{comment}{//\ SPDX-\/FileCopyrightText:\ 2017\ -\/\ 2024\ 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\_EXCEPTION\_HELPERS\_HPP\_}}
\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#define\ GKO\_PUBLIC\_CORE\_BASE\_EXCEPTION\_HELPERS\_HPP\_}}
\DoxyCodeLine{00007\ }
\DoxyCodeLine{00008\ }
\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ <typeinfo>}}
\DoxyCodeLine{00010\ }
\DoxyCodeLine{00011\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/batch\_dim.hpp>}}
\DoxyCodeLine{00012\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/dim.hpp>}}
\DoxyCodeLine{00013\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/exception.hpp>}}
\DoxyCodeLine{00014\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/name\_demangling.hpp>}}
\DoxyCodeLine{00015\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/utils\_helper.hpp>}}
\DoxyCodeLine{00016\ }
\DoxyCodeLine{00017\ }
\DoxyCodeLine{00018\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko}{gko}}\ \{}
\DoxyCodeLine{00019\ }
\DoxyCodeLine{00020\ }
\DoxyCodeLine{00028\ \textcolor{preprocessor}{\#define\ GKO\_QUOTE(...)\ \#\_\_VA\_ARGS\_\_}}
\DoxyCodeLine{00029\ }
\DoxyCodeLine{00030\ }
\DoxyCodeLine{00037\ \textcolor{preprocessor}{\#define\ GKO\_NOT\_IMPLEMENTED\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00038\ \textcolor{preprocessor}{\ \ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00039\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ throw\ ::gko::NotImplemented(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_);\ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00040\ \textcolor{preprocessor}{\ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00041\ \textcolor{preprocessor}{\ \ \ \ static\_assert(true,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00042\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}This\ assert\ is\ used\ to\ counter\ the\ false\ positive\ extra\ "{}\ \(\backslash\)}}
\DoxyCodeLine{00043\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}semi-\/colon\ warnings"{})}}
\DoxyCodeLine{00044\ }
\DoxyCodeLine{00045\ }
\DoxyCodeLine{00054\ \textcolor{preprocessor}{\#define\ GKO\_NOT\_COMPILED(\_module)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00055\ \textcolor{preprocessor}{\ \ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00056\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ throw\ ::gko::NotCompiled(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00057\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ GKO\_QUOTE(\_module));\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00058\ \textcolor{preprocessor}{\ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00059\ \textcolor{preprocessor}{\ \ \ \ static\_assert(true,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00060\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}This\ assert\ is\ used\ to\ counter\ the\ false\ positive\ extra\ "{}\ \(\backslash\)}}
\DoxyCodeLine{00061\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}semi-\/colon\ warnings"{})}}
\DoxyCodeLine{00062\ }
\DoxyCodeLine{00063\ }
\DoxyCodeLine{00064\ \textcolor{keyword}{namespace\ }detail\ \{}
\DoxyCodeLine{00065\ }
\DoxyCodeLine{00066\ }
\DoxyCodeLine{00067\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ T,\ \textcolor{keyword}{typename}\ T2\ =\ \textcolor{keywordtype}{void}>}
\DoxyCodeLine{00068\ \textcolor{keyword}{struct\ }dynamic\_type\_helper\ \{}
\DoxyCodeLine{00069\ \ \ \ \ \textcolor{keyword}{static}\ \textcolor{keyword}{const}\ std::type\_info\&\ get(\textcolor{keyword}{const}\ T\&\ obj)\ \{\ \textcolor{keywordflow}{return}\ \textcolor{keyword}{typeid}(obj);\ \}}
\DoxyCodeLine{00070\ \};}
\DoxyCodeLine{00071\ }
\DoxyCodeLine{00072\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ T>}
\DoxyCodeLine{00073\ \textcolor{keyword}{struct\ }dynamic\_type\_helper<T,}
\DoxyCodeLine{00074\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ typename\ std::enable\_if<std::is\_pointer<T>::value\ ||}
\DoxyCodeLine{00075\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ have\_ownership<T>()>::type>\ \{}
\DoxyCodeLine{00076\ \ \ \ \ \textcolor{keyword}{static}\ \textcolor{keyword}{const}\ std::type\_info\&\ get(\textcolor{keyword}{const}\ T\&\ obj)}
\DoxyCodeLine{00077\ \ \ \ \ \{}
\DoxyCodeLine{00078\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ obj\ ?\ \textcolor{keyword}{typeid}(*obj)\ :\ \textcolor{keyword}{typeid}(\textcolor{keyword}{nullptr});}
\DoxyCodeLine{00079\ \ \ \ \ \}}
\DoxyCodeLine{00080\ \};}
\DoxyCodeLine{00081\ }
\DoxyCodeLine{00082\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ T>}
\DoxyCodeLine{00083\ \textcolor{keyword}{const}\ std::type\_info\&\ get\_dynamic\_type(\textcolor{keyword}{const}\ T\&\ obj)}
\DoxyCodeLine{00084\ \{}
\DoxyCodeLine{00085\ \ \ \ \ \textcolor{keywordflow}{return}\ dynamic\_type\_helper<T>::get(obj);}
\DoxyCodeLine{00086\ \}}
\DoxyCodeLine{00087\ }
\DoxyCodeLine{00088\ }
\DoxyCodeLine{00089\ \}\ \ \textcolor{comment}{//\ namespace\ detail}}
\DoxyCodeLine{00090\ }
\DoxyCodeLine{00091\ }
\DoxyCodeLine{00099\ \textcolor{preprocessor}{\#define\ GKO\_NOT\_SUPPORTED(\_obj)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00100\ \textcolor{preprocessor}{\ \ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00101\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ throw\ ::gko::NotSupported(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00102\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::name\_demangling::get\_type\_name(\ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00103\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_dynamic\_type(\_obj)));\ \(\backslash\)}}
\DoxyCodeLine{00104\ \textcolor{preprocessor}{\ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00105\ \textcolor{preprocessor}{\ \ \ \ static\_assert(true,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00106\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}This\ assert\ is\ used\ to\ counter\ the\ false\ positive\ extra\ "{}\ \ \ \(\backslash\)}}
\DoxyCodeLine{00107\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}semi-\/colon\ warnings"{})}}
\DoxyCodeLine{00108\ }
\DoxyCodeLine{00109\ }
\DoxyCodeLine{00110\ \textcolor{keyword}{namespace\ }detail\ \{}
\DoxyCodeLine{00111\ }
\DoxyCodeLine{00112\ }
\DoxyCodeLine{00113\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ T>}
\DoxyCodeLine{00114\ \textcolor{keyword}{inline}\ dim<2>\ get\_size(\textcolor{keyword}{const}\ T\&\ op)}
\DoxyCodeLine{00115\ \{}
\DoxyCodeLine{00116\ \ \ \ \ \textcolor{keywordflow}{return}\ op-\/>get\_size();}
\DoxyCodeLine{00117\ \}}
\DoxyCodeLine{00118\ }
\DoxyCodeLine{00119\ \textcolor{keyword}{inline}\ dim<2>\ get\_size(\textcolor{keyword}{const}\ dim<2>\&\ size)\ \{\ \textcolor{keywordflow}{return}\ size;\ \}}
\DoxyCodeLine{00120\ }
\DoxyCodeLine{00121\ }
\DoxyCodeLine{00122\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ T>}
\DoxyCodeLine{00123\ \textcolor{keyword}{inline}\ batch\_dim<2>\ get\_batch\_size(\textcolor{keyword}{const}\ T\&\ op)}
\DoxyCodeLine{00124\ \{}
\DoxyCodeLine{00125\ \ \ \ \ \textcolor{keywordflow}{return}\ op-\/>get\_size();}
\DoxyCodeLine{00126\ \}}
\DoxyCodeLine{00127\ }
\DoxyCodeLine{00128\ \textcolor{keyword}{inline}\ batch\_dim<2>\ get\_batch\_size(\textcolor{keyword}{const}\ batch\_dim<2>\&\ size)\ \{\ \textcolor{keywordflow}{return}\ size;\ \}}
\DoxyCodeLine{00129\ }
\DoxyCodeLine{00130\ }
\DoxyCodeLine{00131\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ T>}
\DoxyCodeLine{00132\ \textcolor{keyword}{inline}\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ get\_num\_batch\_items(\textcolor{keyword}{const}\ T\&\ obj)}
\DoxyCodeLine{00133\ \{}
\DoxyCodeLine{00134\ \ \ \ \ \textcolor{keywordflow}{return}\ obj.get\_num\_batch\_items();}
\DoxyCodeLine{00135\ \}}
\DoxyCodeLine{00136\ }
\DoxyCodeLine{00137\ }
\DoxyCodeLine{00138\ \}\ \ \textcolor{comment}{//\ namespace\ detail}}
\DoxyCodeLine{00139\ }
\DoxyCodeLine{00140\ }
\DoxyCodeLine{00146\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_EQ(\_val1,\ \_val2)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00147\ \textcolor{preprocessor}{\ \ \ \ if\ (\_val1\ !=\ \_val2)\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00148\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ throw\ ::gko::ValueMismatch(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \_val1,\ \_val2,\ \(\backslash\)}}
\DoxyCodeLine{00149\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}expected\ equal\ values"{});\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00150\ \textcolor{preprocessor}{\ \ \ \ \}}}
\DoxyCodeLine{00151\ }
\DoxyCodeLine{00152\ }
\DoxyCodeLine{00159\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_IS\_SQUARE\_MATRIX(\_op1)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00160\ \textcolor{preprocessor}{\ \ \ \ if\ (::gko::detail::get\_size(\_op1)[0]\ !=\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00161\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op1)[1])\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00162\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ throw\ ::gko::DimensionMismatch(\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00163\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \#\_op1,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00164\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op1)[0],\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00165\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op1)[1],\ \#\_op1,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00166\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op1)[0],\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00167\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op1)[1],\ "{}expected\ square\ matrix"{});\ \(\backslash\)}}
\DoxyCodeLine{00168\ \textcolor{preprocessor}{\ \ \ \ \}}}
\DoxyCodeLine{00169\ }
\DoxyCodeLine{00170\ }
\DoxyCodeLine{00176\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_IS\_NON\_EMPTY\_MATRIX(\_op1)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00177\ \textcolor{preprocessor}{\ \ \ \ if\ (!(::gko::detail::get\_size(\_op1)))\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00178\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ throw\ ::gko::BadDimension(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \#\_op1,\ \(\backslash\)}}
\DoxyCodeLine{00179\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op1)[0],\ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00180\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op1)[1],\ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00181\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}expected\ non-\/empty\ matrix"{});\ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00182\ \textcolor{preprocessor}{\ \ \ \ \}}}
\DoxyCodeLine{00183\ }
\DoxyCodeLine{00184\ }
\DoxyCodeLine{00190\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_IS\_POWER\_OF\_TWO(\_val)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00191\ \textcolor{preprocessor}{\ \ \ \ do\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00192\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ if\ (\_val\ ==\ 0\ ||\ (\_val\ \&\ (\_val\ -\/\ 1))\ !=\ 0)\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00193\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ throw\ ::gko::BadDimension(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \#\_val,\ \(\backslash\)}}
\DoxyCodeLine{00194\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_val,\ \_val,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00195\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}expected\ power-\/of-\/two\ dimension"{});\ \ \(\backslash\)}}
\DoxyCodeLine{00196\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00197\ \textcolor{preprocessor}{\ \ \ \ \}\ while\ (false)}}
\DoxyCodeLine{00198\ }
\DoxyCodeLine{00199\ }
\DoxyCodeLine{00205\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_CONFORMANT(\_op1,\ \_op2)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00206\ \textcolor{preprocessor}{\ \ \ \ if\ (::gko::detail::get\_size(\_op1)[1]\ !=\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00207\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op2)[0])\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00208\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ throw\ ::gko::DimensionMismatch(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \#\_op1,\ \ \ \(\backslash\)}}
\DoxyCodeLine{00209\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op1)[0],\ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00210\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op1)[1],\ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00211\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\_op2,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00212\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op2)[0],\ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00213\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op2)[1],\ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00214\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}expected\ matching\ inner\ dimensions"{});\ \(\backslash\)}}
\DoxyCodeLine{00215\ \textcolor{preprocessor}{\ \ \ \ \}}}
\DoxyCodeLine{00216\ }
\DoxyCodeLine{00217\ }
\DoxyCodeLine{00223\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_REVERSE\_CONFORMANT(\_op1,\ \_op2)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00224\ \textcolor{preprocessor}{\ \ \ \ if\ (::gko::detail::get\_size(\_op1)[0]\ !=\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00225\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op2)[1])\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00226\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ throw\ ::gko::DimensionMismatch(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \#\_op1,\ \ \ \(\backslash\)}}
\DoxyCodeLine{00227\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op1)[0],\ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00228\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op1)[1],\ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00229\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\_op2,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00230\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op2)[0],\ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00231\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op2)[1],\ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00232\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}expected\ matching\ inner\ dimensions"{});\ \(\backslash\)}}
\DoxyCodeLine{00233\ \textcolor{preprocessor}{\ \ \ \ \}}}
\DoxyCodeLine{00234\ }
\DoxyCodeLine{00235\ }
\DoxyCodeLine{00241\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_EQUAL\_ROWS(\_op1,\ \_op2)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00242\ \textcolor{preprocessor}{\ \ \ \ if\ (::gko::detail::get\_size(\_op1)[0]\ !=\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00243\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op2)[0])\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00244\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ throw\ ::gko::DimensionMismatch(\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00245\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \#\_op1,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00246\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op1)[0],\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00247\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op1)[1],\ \#\_op2,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00248\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op2)[0],\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00249\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op2)[1],\ "{}expected\ matching\ row\ length"{});\ \(\backslash\)}}
\DoxyCodeLine{00250\ \textcolor{preprocessor}{\ \ \ \ \}}}
\DoxyCodeLine{00251\ }
\DoxyCodeLine{00252\ }
\DoxyCodeLine{00259\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_EQUAL\_COLS(\_op1,\ \_op2)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00260\ \textcolor{preprocessor}{\ \ \ \ if\ (::gko::detail::get\_size(\_op1)[1]\ !=\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00261\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op2)[1])\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00262\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ throw\ ::gko::DimensionMismatch(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \#\_op1,\ \(\backslash\)}}
\DoxyCodeLine{00263\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op1)[0],\ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00264\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op1)[1],\ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00265\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\_op2,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00266\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op2)[0],\ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00267\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op2)[1],\ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00268\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}expected\ matching\ column\ length"{});\ \ \(\backslash\)}}
\DoxyCodeLine{00269\ \textcolor{preprocessor}{\ \ \ \ \}}}
\DoxyCodeLine{00270\ }
\DoxyCodeLine{00271\ }
\DoxyCodeLine{00278\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_EQUAL\_DIMENSIONS(\_op1,\ \_op2)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00279\ \textcolor{preprocessor}{\ \ \ \ if\ (::gko::detail::get\_size(\_op1)\ !=\ ::gko::detail::get\_size(\_op2))\ \{\ \ \ \(\backslash\)}}
\DoxyCodeLine{00280\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ throw\ ::gko::DimensionMismatch(\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00281\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \#\_op1,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00282\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op1)[0],\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00283\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op1)[1],\ \#\_op2,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00284\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op2)[0],\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00285\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_size(\_op2)[1],\ "{}expected\ equal\ dimensions"{});\ \(\backslash\)}}
\DoxyCodeLine{00286\ \textcolor{preprocessor}{\ \ \ \ \}}}
\DoxyCodeLine{00287\ }
\DoxyCodeLine{00288\ }
\DoxyCodeLine{00294\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_BATCH\_EQUAL\_NUM\_ITEMS(\_op1,\ \_op2)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00295\ \textcolor{preprocessor}{\ \ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00296\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ auto\ equal\_num\_items\ =\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00297\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op1).get\_num\_batch\_items()\ ==\ \ \ \(\backslash\)}}
\DoxyCodeLine{00298\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op2).get\_num\_batch\_items();\ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00299\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ if\ (!equal\_num\_items)\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00300\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ throw\ ::gko::ValueMismatch(\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00301\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00302\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op1).get\_num\_batch\_items(),\ \(\backslash\)}}
\DoxyCodeLine{00303\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op2).get\_num\_batch\_items(),\ \(\backslash\)}}
\DoxyCodeLine{00304\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}expected\ equal\ number\ of\ batch\ items"{});\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00305\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00306\ \textcolor{preprocessor}{\ \ \ \ \}}}
\DoxyCodeLine{00307\ }
\DoxyCodeLine{00308\ }
\DoxyCodeLine{00314\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_BATCH\_CONFORMANT(\_op1,\ \_op2)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00315\ \textcolor{preprocessor}{\ \ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00316\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ GKO\_ASSERT\_BATCH\_EQUAL\_NUM\_ITEMS(\_op1,\ \_op2);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00317\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ auto\ equal\_inner\_size\ =\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00318\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op1).get\_common\_size()[1]\ ==\ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00319\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op2).get\_common\_size()[0];\ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00320\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ if\ (!equal\_inner\_size)\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00321\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ throw\ ::gko::DimensionMismatch(\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00322\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \#\_op1,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00323\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op1).get\_common\_size()[0],\ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00324\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op1).get\_common\_size()[1],\ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00325\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\_op2,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00326\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op2).get\_common\_size()[0],\ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00327\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op2).get\_common\_size()[1],\ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00328\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}expected\ matching\ inner\ dimensions\ among\ all\ batch\ items"{});\ \(\backslash\)}}
\DoxyCodeLine{00329\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00330\ \textcolor{preprocessor}{\ \ \ \ \}}}
\DoxyCodeLine{00331\ }
\DoxyCodeLine{00332\ }
\DoxyCodeLine{00338\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_BATCH\_REVERSE\_CONFORMANT(\_op1,\ \_op2)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00339\ \textcolor{preprocessor}{\ \ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00340\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ GKO\_ASSERT\_BATCH\_EQUAL\_NUM\_ITEMS(\_op1,\ \_op2);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00341\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ auto\ equal\_outer\_size\ =\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00342\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op1).get\_common\_size()[0]\ ==\ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00343\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op2).get\_common\_size()[1];\ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00344\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ if\ (!equal\_outer\_size)\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00345\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ throw\ ::gko::DimensionMismatch(\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00346\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \#\_op1,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00347\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op1).get\_common\_size()[0],\ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00348\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op1).get\_common\_size()[1],\ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00349\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\_op2,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00350\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op2).get\_common\_size()[0],\ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00351\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op2).get\_common\_size()[1],\ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00352\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}expected\ matching\ outer\ dimensions\ among\ all\ batch\ items"{});\ \(\backslash\)}}
\DoxyCodeLine{00353\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00354\ \textcolor{preprocessor}{\ \ \ \ \}}}
\DoxyCodeLine{00355\ }
\DoxyCodeLine{00356\ }
\DoxyCodeLine{00362\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_BATCH\_EQUAL\_ROWS(\_op1,\ \_op2)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00363\ \textcolor{preprocessor}{\ \ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00364\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ GKO\_ASSERT\_BATCH\_EQUAL\_NUM\_ITEMS(\_op1,\ \_op2);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00365\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ auto\ equal\_rows\ =\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00366\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op1).get\_common\_size()[0]\ ==\ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00367\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op2).get\_common\_size()[0];\ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00368\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ if\ (!equal\_rows)\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00369\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ throw\ ::gko::DimensionMismatch(\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00370\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \#\_op1,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00371\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op1).get\_common\_size()[0],\ \ \(\backslash\)}}
\DoxyCodeLine{00372\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op1).get\_common\_size()[1],\ \ \(\backslash\)}}
\DoxyCodeLine{00373\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\_op2,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00374\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op2).get\_common\_size()[0],\ \ \(\backslash\)}}
\DoxyCodeLine{00375\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op2).get\_common\_size()[1],\ \ \(\backslash\)}}
\DoxyCodeLine{00376\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}expected\ matching\ number\ of\ rows\ among\ all\ batch\ items"{});\ \(\backslash\)}}
\DoxyCodeLine{00377\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00378\ \textcolor{preprocessor}{\ \ \ \ \}}}
\DoxyCodeLine{00379\ }
\DoxyCodeLine{00380\ }
\DoxyCodeLine{00387\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_BATCH\_EQUAL\_COLS(\_op1,\ \_op2)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00388\ \textcolor{preprocessor}{\ \ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00389\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ GKO\_ASSERT\_BATCH\_EQUAL\_NUM\_ITEMS(\_op1,\ \_op2);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00390\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ auto\ equal\_cols\ =\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00391\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op1).get\_common\_size()[1]\ ==\ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00392\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op2).get\_common\_size()[1];\ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00393\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ if\ (!equal\_cols)\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00394\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ throw\ ::gko::DimensionMismatch(\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00395\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \#\_op1,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00396\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op1).get\_common\_size()[0],\ \ \(\backslash\)}}
\DoxyCodeLine{00397\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op1).get\_common\_size()[1],\ \ \(\backslash\)}}
\DoxyCodeLine{00398\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\_op2,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00399\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op2).get\_common\_size()[0],\ \ \(\backslash\)}}
\DoxyCodeLine{00400\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op2).get\_common\_size()[1],\ \ \(\backslash\)}}
\DoxyCodeLine{00401\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}expected\ matching\ number\ of\ cols\ among\ all\ batch\ items"{});\ \(\backslash\)}}
\DoxyCodeLine{00402\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00403\ \textcolor{preprocessor}{\ \ \ \ \}}}
\DoxyCodeLine{00404\ }
\DoxyCodeLine{00405\ }
\DoxyCodeLine{00412\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_BATCH\_EQUAL\_DIMENSIONS(\_op1,\ \_op2)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00413\ \textcolor{preprocessor}{\ \ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00414\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ GKO\_ASSERT\_BATCH\_EQUAL\_NUM\_ITEMS(\_op1,\ \_op2);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00415\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ auto\ equal\_size\ =\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00416\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op1).get\_common\_size()\ ==\ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00417\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op2).get\_common\_size();\ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00418\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ if\ (!equal\_size)\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00419\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ throw\ ::gko::DimensionMismatch(\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00420\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \#\_op1,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00421\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op1).get\_common\_size()[0],\ \(\backslash\)}}
\DoxyCodeLine{00422\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op1).get\_common\_size()[1],\ \(\backslash\)}}
\DoxyCodeLine{00423\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \#\_op2,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00424\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op2).get\_common\_size()[0],\ \(\backslash\)}}
\DoxyCodeLine{00425\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op2).get\_common\_size()[1],\ \(\backslash\)}}
\DoxyCodeLine{00426\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}expected\ matching\ size\ among\ all\ batch\ items"{});\ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00427\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00428\ \textcolor{preprocessor}{\ \ \ \ \}}}
\DoxyCodeLine{00429\ }
\DoxyCodeLine{00430\ }
\DoxyCodeLine{00437\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_BATCH\_HAS\_SQUARE\_DIMENSIONS(\_op1)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00438\ \textcolor{preprocessor}{\ \ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00439\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ auto\ is\_square\ =\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00440\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op1).get\_common\_size()[0]\ ==\ \ \ \(\backslash\)}}
\DoxyCodeLine{00441\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op1).get\_common\_size()[1];\ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00442\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ if\ (!is\_square)\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00443\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ throw\ ::gko::BadDimension(\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00444\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \#\_op1,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00445\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op1).get\_common\_size()[0],\ \(\backslash\)}}
\DoxyCodeLine{00446\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::gko::detail::get\_batch\_size(\_op1).get\_common\_size()[1],\ \(\backslash\)}}
\DoxyCodeLine{00447\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}expected\ common\ size\ of\ matrices\ to\ be\ square"{});\ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00448\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00449\ \textcolor{preprocessor}{\ \ \ \ \}}}
\DoxyCodeLine{00450\ }
\DoxyCodeLine{00451\ }
\DoxyCodeLine{00457\ \textcolor{preprocessor}{\#define\ GKO\_MPI\_ERROR(\_errcode)\ \(\backslash\)}}
\DoxyCodeLine{00458\ \textcolor{preprocessor}{\ \ \ \ ::gko::MpiError(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \_errcode)}}
\DoxyCodeLine{00459\ }
\DoxyCodeLine{00460\ }
\DoxyCodeLine{00466\ \textcolor{preprocessor}{\#define\ GKO\_CUDA\_ERROR(\_errcode)\ \(\backslash\)}}
\DoxyCodeLine{00467\ \textcolor{preprocessor}{\ \ \ \ ::gko::CudaError(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \_errcode)}}
\DoxyCodeLine{00468\ }
\DoxyCodeLine{00469\ }
\DoxyCodeLine{00475\ \textcolor{preprocessor}{\#define\ GKO\_CUBLAS\_ERROR(\_errcode)\ \(\backslash\)}}
\DoxyCodeLine{00476\ \textcolor{preprocessor}{\ \ \ \ ::gko::CublasError(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \_errcode)}}
\DoxyCodeLine{00477\ }
\DoxyCodeLine{00478\ }
\DoxyCodeLine{00484\ \textcolor{preprocessor}{\#define\ GKO\_CURAND\_ERROR(\_errcode)\ \(\backslash\)}}
\DoxyCodeLine{00485\ \textcolor{preprocessor}{\ \ \ \ ::gko::CurandError(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \_errcode)}}
\DoxyCodeLine{00486\ }
\DoxyCodeLine{00487\ }
\DoxyCodeLine{00493\ \textcolor{preprocessor}{\#define\ GKO\_CUSPARSE\_ERROR(\_errcode)\ \(\backslash\)}}
\DoxyCodeLine{00494\ \textcolor{preprocessor}{\ \ \ \ ::gko::CusparseError(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \_errcode)}}
\DoxyCodeLine{00495\ }
\DoxyCodeLine{00496\ }
\DoxyCodeLine{00502\ \textcolor{preprocessor}{\#define\ GKO\_CUFFT\_ERROR(\_errcode)\ \(\backslash\)}}
\DoxyCodeLine{00503\ \textcolor{preprocessor}{\ \ \ \ ::gko::CufftError(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \_errcode)}}
\DoxyCodeLine{00504\ }
\DoxyCodeLine{00505\ }
\DoxyCodeLine{00511\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_NO\_CUDA\_ERRORS(\_cuda\_call)\ \(\backslash\)}}
\DoxyCodeLine{00512\ \textcolor{preprocessor}{\ \ \ \ do\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00513\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ auto\ \_errcode\ =\ \_cuda\_call;\ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00514\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ if\ (\_errcode\ !=\ cudaSuccess)\ \{\ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00515\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ throw\ GKO\_CUDA\_ERROR(\_errcode);\ \ \ \(\backslash\)}}
\DoxyCodeLine{00516\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00517\ \textcolor{preprocessor}{\ \ \ \ \}\ while\ (false)}}
\DoxyCodeLine{00518\ }
\DoxyCodeLine{00519\ }
\DoxyCodeLine{00525\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_NO\_CUBLAS\_ERRORS(\_cublas\_call)\ \(\backslash\)}}
\DoxyCodeLine{00526\ \textcolor{preprocessor}{\ \ \ \ do\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00527\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ auto\ \_errcode\ =\ \_cublas\_call;\ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00528\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ if\ (\_errcode\ !=\ CUBLAS\_STATUS\_SUCCESS)\ \{\ \ \(\backslash\)}}
\DoxyCodeLine{00529\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ throw\ GKO\_CUBLAS\_ERROR(\_errcode);\ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00530\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00531\ \textcolor{preprocessor}{\ \ \ \ \}\ while\ (false)}}
\DoxyCodeLine{00532\ }
\DoxyCodeLine{00533\ }
\DoxyCodeLine{00539\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_NO\_CURAND\_ERRORS(\_curand\_call)\ \(\backslash\)}}
\DoxyCodeLine{00540\ \textcolor{preprocessor}{\ \ \ \ do\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00541\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ auto\ \_errcode\ =\ \_curand\_call;\ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00542\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ if\ (\_errcode\ !=\ CURAND\_STATUS\_SUCCESS)\ \{\ \ \(\backslash\)}}
\DoxyCodeLine{00543\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ throw\ GKO\_CURAND\_ERROR(\_errcode);\ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00544\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00545\ \textcolor{preprocessor}{\ \ \ \ \}\ while\ (false)}}
\DoxyCodeLine{00546\ }
\DoxyCodeLine{00547\ }
\DoxyCodeLine{00553\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_NO\_CUSPARSE\_ERRORS(\_cusparse\_call)\ \(\backslash\)}}
\DoxyCodeLine{00554\ \textcolor{preprocessor}{\ \ \ \ do\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00555\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ auto\ \_errcode\ =\ \_cusparse\_call;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00556\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ if\ (\_errcode\ !=\ CUSPARSE\_STATUS\_SUCCESS)\ \{\ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00557\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ throw\ GKO\_CUSPARSE\_ERROR(\_errcode);\ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00558\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00559\ \textcolor{preprocessor}{\ \ \ \ \}\ while\ (false)}}
\DoxyCodeLine{00560\ }
\DoxyCodeLine{00561\ }
\DoxyCodeLine{00567\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_NO\_CUFFT\_ERRORS(\_cufft\_call)\ \(\backslash\)}}
\DoxyCodeLine{00568\ \textcolor{preprocessor}{\ \ \ \ do\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00569\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ auto\ \_errcode\ =\ \_cufft\_call;\ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00570\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ if\ (\_errcode\ !=\ CUFFT\_SUCCESS)\ \{\ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00571\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ throw\ GKO\_CUFFT\_ERROR(\_errcode);\ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00572\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00573\ \textcolor{preprocessor}{\ \ \ \ \}\ while\ (false)}}
\DoxyCodeLine{00574\ }
\DoxyCodeLine{00575\ }
\DoxyCodeLine{00581\ \textcolor{preprocessor}{\#define\ GKO\_HIP\_ERROR(\_errcode)\ \(\backslash\)}}
\DoxyCodeLine{00582\ \textcolor{preprocessor}{\ \ \ \ ::gko::HipError(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \_errcode)}}
\DoxyCodeLine{00583\ }
\DoxyCodeLine{00584\ }
\DoxyCodeLine{00590\ \textcolor{preprocessor}{\#define\ GKO\_HIPBLAS\_ERROR(\_errcode)\ \(\backslash\)}}
\DoxyCodeLine{00591\ \textcolor{preprocessor}{\ \ \ \ ::gko::HipblasError(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \_errcode)}}
\DoxyCodeLine{00592\ }
\DoxyCodeLine{00593\ }
\DoxyCodeLine{00599\ \textcolor{preprocessor}{\#define\ GKO\_HIPRAND\_ERROR(\_errcode)\ \(\backslash\)}}
\DoxyCodeLine{00600\ \textcolor{preprocessor}{\ \ \ \ ::gko::HiprandError(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \_errcode)}}
\DoxyCodeLine{00601\ }
\DoxyCodeLine{00602\ }
\DoxyCodeLine{00608\ \textcolor{preprocessor}{\#define\ GKO\_HIPSPARSE\_ERROR(\_errcode)\ \(\backslash\)}}
\DoxyCodeLine{00609\ \textcolor{preprocessor}{\ \ \ \ ::gko::HipsparseError(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \_errcode)}}
\DoxyCodeLine{00610\ }
\DoxyCodeLine{00611\ }
\DoxyCodeLine{00617\ \textcolor{preprocessor}{\#define\ GKO\_HIPFFT\_ERROR(\_errcode)\ \(\backslash\)}}
\DoxyCodeLine{00618\ \textcolor{preprocessor}{\ \ \ \ ::gko::HipfftError(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \_errcode)}}
\DoxyCodeLine{00619\ }
\DoxyCodeLine{00620\ }
\DoxyCodeLine{00626\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_NO\_HIP\_ERRORS(\_hip\_call)\ \(\backslash\)}}
\DoxyCodeLine{00627\ \textcolor{preprocessor}{\ \ \ \ do\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00628\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ auto\ \_errcode\ =\ \_hip\_call;\ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00629\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ if\ (\_errcode\ !=\ hipSuccess)\ \{\ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00630\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ throw\ GKO\_HIP\_ERROR(\_errcode);\ \ \(\backslash\)}}
\DoxyCodeLine{00631\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00632\ \textcolor{preprocessor}{\ \ \ \ \}\ while\ (false)}}
\DoxyCodeLine{00633\ }
\DoxyCodeLine{00634\ }
\DoxyCodeLine{00640\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_NO\_HIPBLAS\_ERRORS(\_hipblas\_call)\ \(\backslash\)}}
\DoxyCodeLine{00641\ \textcolor{preprocessor}{\ \ \ \ do\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00642\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ auto\ \_errcode\ =\ \_hipblas\_call;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00643\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ if\ (\_errcode\ !=\ HIPBLAS\_STATUS\_SUCCESS)\ \{\ \ \ \(\backslash\)}}
\DoxyCodeLine{00644\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ throw\ GKO\_HIPBLAS\_ERROR(\_errcode);\ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00645\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00646\ \textcolor{preprocessor}{\ \ \ \ \}\ while\ (false)}}
\DoxyCodeLine{00647\ }
\DoxyCodeLine{00648\ }
\DoxyCodeLine{00654\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_NO\_HIPRAND\_ERRORS(\_hiprand\_call)\ \(\backslash\)}}
\DoxyCodeLine{00655\ \textcolor{preprocessor}{\ \ \ \ do\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00656\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ auto\ \_errcode\ =\ \_hiprand\_call;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00657\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ if\ (\_errcode\ !=\ HIPRAND\_STATUS\_SUCCESS)\ \{\ \ \ \(\backslash\)}}
\DoxyCodeLine{00658\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ throw\ GKO\_HIPRAND\_ERROR(\_errcode);\ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00659\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00660\ \textcolor{preprocessor}{\ \ \ \ \}\ while\ (false)}}
\DoxyCodeLine{00661\ }
\DoxyCodeLine{00662\ }
\DoxyCodeLine{00668\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_NO\_HIPSPARSE\_ERRORS(\_hipsparse\_call)\ \(\backslash\)}}
\DoxyCodeLine{00669\ \textcolor{preprocessor}{\ \ \ \ do\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00670\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ auto\ \_errcode\ =\ \_hipsparse\_call;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00671\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ if\ (\_errcode\ !=\ HIPSPARSE\_STATUS\_SUCCESS)\ \{\ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00672\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ throw\ GKO\_HIPSPARSE\_ERROR(\_errcode);\ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00673\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00674\ \textcolor{preprocessor}{\ \ \ \ \}\ while\ (false)}}
\DoxyCodeLine{00675\ }
\DoxyCodeLine{00676\ }
\DoxyCodeLine{00682\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_NO\_HIPFFT\_ERRORS(\_hipfft\_call)\ \(\backslash\)}}
\DoxyCodeLine{00683\ \textcolor{preprocessor}{\ \ \ \ do\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00684\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ auto\ \_errcode\ =\ \_hipfft\_call;\ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00685\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ if\ (\_errcode\ !=\ HIPFFT\_SUCCESS)\ \{\ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00686\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ throw\ GKO\_HIPFFT\_ERROR(\_errcode);\ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00687\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00688\ \textcolor{preprocessor}{\ \ \ \ \}\ while\ (false)}}
\DoxyCodeLine{00689\ }
\DoxyCodeLine{00690\ }
\DoxyCodeLine{00696\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_NO\_MPI\_ERRORS(\_mpi\_call)\ \(\backslash\)}}
\DoxyCodeLine{00697\ \textcolor{preprocessor}{\ \ \ \ do\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00698\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ auto\ \_errcode\ =\ \_mpi\_call;\ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00699\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ if\ (\_errcode\ !=\ MPI\_SUCCESS)\ \{\ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00700\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ throw\ GKO\_MPI\_ERROR(\_errcode);\ \ \(\backslash\)}}
\DoxyCodeLine{00701\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00702\ \textcolor{preprocessor}{\ \ \ \ \}\ while\ (false)}}
\DoxyCodeLine{00703\ }
\DoxyCodeLine{00704\ }
\DoxyCodeLine{00705\ \textcolor{keyword}{namespace\ }detail\ \{}
\DoxyCodeLine{00706\ }
\DoxyCodeLine{00707\ }
\DoxyCodeLine{00708\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ T>}
\DoxyCodeLine{00709\ \textcolor{keyword}{inline}\ T\ ensure\_allocated\_impl(T\ ptr,\ \textcolor{keyword}{const}\ std::string\&\ file,\ \textcolor{keywordtype}{int}\ line,}
\DoxyCodeLine{00710\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ std::string\&\ dev,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ size)}
\DoxyCodeLine{00711\ \{}
\DoxyCodeLine{00712\ \ \ \ \ \textcolor{keywordflow}{if}\ (ptr\ ==\ \textcolor{keyword}{nullptr})\ \{}
\DoxyCodeLine{00713\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{throw}\ AllocationError(file,\ line,\ dev,\ size);}
\DoxyCodeLine{00714\ \ \ \ \ \}}
\DoxyCodeLine{00715\ \ \ \ \ \textcolor{keywordflow}{return}\ ptr;}
\DoxyCodeLine{00716\ \}}
\DoxyCodeLine{00717\ }
\DoxyCodeLine{00718\ }
\DoxyCodeLine{00719\ \}\ \ \textcolor{comment}{//\ namespace\ detail}}
\DoxyCodeLine{00720\ }
\DoxyCodeLine{00721\ }
\DoxyCodeLine{00736\ \textcolor{preprocessor}{\#define\ GKO\_ENSURE\_ALLOCATED(\_ptr,\ \_dev,\ \_size)\ \(\backslash\)}}
\DoxyCodeLine{00737\ \textcolor{preprocessor}{\ \ \ \ ::gko::detail::ensure\_allocated\_impl(\_ptr,\ \_\_FILE\_\_,\ \_\_LINE\_\_,\ \_dev,\ \_size)}}
\DoxyCodeLine{00738\ }
\DoxyCodeLine{00739\ }
\DoxyCodeLine{00748\ \textcolor{preprocessor}{\#define\ GKO\_ENSURE\_IN\_BOUNDS(\_index,\ \_bound)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00749\ \textcolor{preprocessor}{\ \ \ \ if\ (\_index\ >=\ \_bound)\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00750\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ throw\ ::gko::OutOfBoundsError(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_index,\ \_bound);\ \ \ \(\backslash\)}}
\DoxyCodeLine{00751\ \textcolor{preprocessor}{\ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00752\ \textcolor{preprocessor}{\ \ \ \ static\_assert(true,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00753\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}This\ assert\ is\ used\ to\ counter\ the\ false\ positive\ extra\ "{}\ \(\backslash\)}}
\DoxyCodeLine{00754\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}semi-\/colon\ warnings"{})}}
\DoxyCodeLine{00755\ }
\DoxyCodeLine{00756\ }
\DoxyCodeLine{00767\ \textcolor{preprocessor}{\#define\ GKO\_ENSURE\_COMPATIBLE\_BOUNDS(\_source,\ \_target)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00768\ \textcolor{preprocessor}{\ \ \ \ if\ (\_source\ >\ \_target)\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00769\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ throw\ ::gko::OutOfBoundsError(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_source,\ \_target);\ \(\backslash\)}}
\DoxyCodeLine{00770\ \textcolor{preprocessor}{\ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00771\ \textcolor{preprocessor}{\ \ \ \ static\_assert(true,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00772\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}This\ assert\ is\ used\ to\ counter\ the\ false\ positive\ extra\ "{}\ \(\backslash\)}}
\DoxyCodeLine{00773\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}semi-\/colon\ warnings"{})}}
\DoxyCodeLine{00774\ }
\DoxyCodeLine{00775\ }
\DoxyCodeLine{00785\ \textcolor{preprocessor}{\#define\ GKO\_ENSURE\_IN\_DIMENSION\_BOUNDS(\_row,\ \_col,\ \_bound)\ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00786\ \textcolor{preprocessor}{\ \ \ \ GKO\_ENSURE\_IN\_BOUNDS(\_row,\ ::gko::detail::get\_size(\_bound)[0]);\ \(\backslash\)}}
\DoxyCodeLine{00787\ \textcolor{preprocessor}{\ \ \ \ GKO\_ENSURE\_IN\_BOUNDS(\_col,\ ::gko::detail::get\_size(\_bound)[1])}}
\DoxyCodeLine{00788\ }
\DoxyCodeLine{00789\ }
\DoxyCodeLine{00800\ \textcolor{preprocessor}{\#define\ GKO\_STREAM\_ERROR(\_message)\ \(\backslash\)}}
\DoxyCodeLine{00801\ \textcolor{preprocessor}{\ \ \ \ ::gko::StreamError(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \_message)}}
\DoxyCodeLine{00802\ }
\DoxyCodeLine{00803\ }
\DoxyCodeLine{00810\ \textcolor{preprocessor}{\#define\ GKO\_KERNEL\_NOT\_FOUND\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00811\ \textcolor{preprocessor}{\ \ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00812\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ throw\ ::gko::KernelNotFound(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_);\ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00813\ \textcolor{preprocessor}{\ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00814\ \textcolor{preprocessor}{\ \ \ \ static\_assert(true,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00815\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}This\ assert\ is\ used\ to\ counter\ the\ false\ positive\ extra\ "{}\ \(\backslash\)}}
\DoxyCodeLine{00816\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}semi-\/colon\ warnings"{})}}
\DoxyCodeLine{00817\ }
\DoxyCodeLine{00818\ }
\DoxyCodeLine{00825\ \textcolor{preprocessor}{\#define\ GKO\_UNSUPPORTED\_MATRIX\_PROPERTY(\_message)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00826\ \textcolor{preprocessor}{\ \ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00827\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ throw\ ::gko::UnsupportedMatrixProperty(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_message);\ \(\backslash\)}}
\DoxyCodeLine{00828\ \textcolor{preprocessor}{\ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00829\ \textcolor{preprocessor}{\ \ \ \ static\_assert(true,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00830\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}This\ assert\ is\ used\ to\ counter\ the\ false\ positive\ extra\ "{}\ \ \(\backslash\)}}
\DoxyCodeLine{00831\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}semi-\/colon\ warnings"{})}}
\DoxyCodeLine{00832\ }
\DoxyCodeLine{00833\ }
\DoxyCodeLine{00844\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_BLOCK\_SIZE\_CONFORMANT(\_size,\ \_block\_size)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00845\ \textcolor{preprocessor}{\ \ \ \ if\ (\_size\ \%\ \_block\_size\ !=\ 0)\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00846\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ throw\ BlockSizeError<decltype(\_size)>(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_block\_size,\ \(\backslash\)}}
\DoxyCodeLine{00847\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_size);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00848\ \textcolor{preprocessor}{\ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00849\ \textcolor{preprocessor}{\ \ \ \ static\_assert(true,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00850\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}This\ assert\ is\ used\ to\ counter\ the\ false\ positive\ extra\ "{}\ \ \ \(\backslash\)}}
\DoxyCodeLine{00851\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}semi-\/colon\ warnings"{})}}
\DoxyCodeLine{00852\ }
\DoxyCodeLine{00853\ }
\DoxyCodeLine{00861\ \textcolor{preprocessor}{\#define\ GKO\_ASSERT\_IS\_SCALAR(\_op)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00862\ \textcolor{preprocessor}{\ \ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00863\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ auto\ sz\ =\ gko::detail::get\_size(\_op);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00864\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ if\ (sz[0]\ !=\ 1\ ||\ sz[1]\ !=\ 1)\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00865\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ throw\ ::gko::BadDimension(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \#\_op,\ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00866\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ sz[0],\ sz[1],\ "{}expected\ scalar"{});\ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00867\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00868\ \textcolor{preprocessor}{\ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00869\ \textcolor{preprocessor}{\ \ \ \ static\_assert(true,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00870\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}This\ assert\ is\ used\ to\ counter\ the\ false\ positive\ extra\ "{}\ \(\backslash\)}}
\DoxyCodeLine{00871\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}semi-\/colon\ warnings"{})}}
\DoxyCodeLine{00872\ }
\DoxyCodeLine{00873\ }
\DoxyCodeLine{00881\ \textcolor{preprocessor}{\#define\ GKO\_INVALID\_STATE(\_message)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00882\ \textcolor{preprocessor}{\ \ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00883\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ throw\ ::gko::InvalidStateError(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00884\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_message);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00885\ \textcolor{preprocessor}{\ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00886\ \textcolor{preprocessor}{\ \ \ \ static\_assert(true,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00887\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}This\ assert\ is\ used\ to\ counter\ the\ false\ positive\ extra\ "{}\ \(\backslash\)}}
\DoxyCodeLine{00888\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}semi-\/colon\ warnings"{})}}
\DoxyCodeLine{00889\ }
\DoxyCodeLine{00890\ }
\DoxyCodeLine{00899\ \textcolor{preprocessor}{\#define\ GKO\_THROW\_IF\_INVALID(\_condition,\ \_message)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00900\ \textcolor{preprocessor}{\ \ \ \ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00901\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ if\ (!(\_condition))\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00902\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ throw\ ::gko::InvalidStateError(\_\_FILE\_\_,\ \_\_LINE\_\_,\ \_\_func\_\_,\ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00903\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_message);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00904\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00905\ \textcolor{preprocessor}{\ \ \ \ \}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00906\ \textcolor{preprocessor}{\ \ \ \ static\_assert(true,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\backslash\)}}
\DoxyCodeLine{00907\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}This\ assert\ is\ used\ to\ counter\ the\ false\ positive\ extra\ "{}\ \(\backslash\)}}
\DoxyCodeLine{00908\ \textcolor{preprocessor}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}semi-\/colon\ warnings"{})}}
\DoxyCodeLine{00909\ }
\DoxyCodeLine{00910\ }
\DoxyCodeLine{00911\ \}\ \ \textcolor{comment}{//\ namespace\ gko}}
\DoxyCodeLine{00912\ }
\DoxyCodeLine{00913\ }
\DoxyCodeLine{00914\ \textcolor{preprocessor}{\#endif\ \ }\textcolor{comment}{//\ GKO\_PUBLIC\_CORE\_BASE\_EXCEPTION\_HELPERS\_HPP\_}}

\end{DoxyCode}
