\doxysubsection{Meta\+Table\texorpdfstring{$<$}{<} N, TIN, TOUT, GT \texorpdfstring{$>$}{>} Class Template Reference}
\hypertarget{classfunc_1_1MetaTable}{}\label{classfunc_1_1MetaTable}\index{MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}}


\doxylink{classfunc_1_1MetaTable}{Meta\+Table} handles any piecewise {\itshape polynomial} based interpolation. Highly templated.  




{\ttfamily \#include $<$Meta\+Table.\+hpp$>$}

Inheritance diagram for Meta\+Table\texorpdfstring{$<$}{<} N, TIN, TOUT, GT \texorpdfstring{$>$}{>}\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=8.842105cm]{classfunc_1_1MetaTable}
\end{center}
\end{figure}
\doxysubsubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{classfunc_1_1MetaTable_a4b85e9ba4451023fa921e2be31acfbc1}{Meta\+Table}} ()=default
\item 
\mbox{\hyperlink{classfunc_1_1MetaTable_a190be9a8afebc616cccf40325504e59f}{Meta\+Table}} (const \mbox{\hyperlink{classfunc_1_1MetaTable}{Meta\+Table}}$<$ N, TIN, TOUT, GT $>$ \&L)
\item 
\mbox{\hyperlink{classfunc_1_1MetaTable}{Meta\+Table}}$<$ N, TIN, TOUT, GT $>$ \& \mbox{\hyperlink{classfunc_1_1MetaTable_a097a4e8415badeb0468a7b432e3d2741}{operator=}} (\mbox{\hyperlink{classfunc_1_1MetaTable}{Meta\+Table}}$<$ N, TIN, TOUT, GT $>$ L)
\item 
\mbox{\hyperlink{classfunc_1_1MetaTable_a3a1840aedfcbe631ccac7b1ccc5b6224}{Meta\+Table}} (const \mbox{\hyperlink{classfunc_1_1FunctionContainer}{Function\+Container}}$<$ TIN, TOUT $>$ \&func\+\_\+container, const \mbox{\hyperlink{structfunc_1_1LookupTableParameters}{Lookup\+Table\+Parameters}}$<$ TIN $>$ \&par, const nlohmann\+::json \&json\+Stats)
\item 
std\+::string \mbox{\hyperlink{classfunc_1_1MetaTable_accba19b44801ed79bb97513319885f31}{name}} () const final
\item 
TIN \mbox{\hyperlink{classfunc_1_1MetaTable_a0476b531891a0e1e33696d1a737661d0}{min\+\_\+arg}} () const final
\item 
TIN \mbox{\hyperlink{classfunc_1_1MetaTable_a546555a620601a06a71c12a15f7a2769}{max\+\_\+arg}} () const final
\item 
\Hypertarget{classfunc_1_1MetaTable_a3914937aa398c2a3b4643019e62bf4a3}\label{classfunc_1_1MetaTable_a3914937aa398c2a3b4643019e62bf4a3} 
TIN {\bfseries tablemax\+\_\+arg} () const
\item 
unsigned int \mbox{\hyperlink{classfunc_1_1MetaTable_a001c4e4c752e91195b970be3edee0b6d}{order}} () const final
\item 
std\+::size\+\_\+t \mbox{\hyperlink{classfunc_1_1MetaTable_a5e82e200bee26238c342218d6d4f7042}{size}} () const final
\item 
unsigned int \mbox{\hyperlink{classfunc_1_1MetaTable_a269a97d89895944456f32f2be1d37109}{num\+\_\+subintervals}} () const final
\item 
TIN \mbox{\hyperlink{classfunc_1_1MetaTable_a0b483cc80497aa809bead8161f14a284}{step\+\_\+size}} () const final
\item 
std\+::pair$<$ TIN, TIN $>$ \mbox{\hyperlink{classfunc_1_1MetaTable_aea8465ad30b6260a0948d4305d984d9d}{bounds\+\_\+of\+\_\+subinterval}} (unsigned int interval\+Number) const final
\item 
void \mbox{\hyperlink{classfunc_1_1MetaTable_a16138bbe5fe761854a353362ba7d9b2f}{print\+\_\+json}} (std\+::ostream \&out) const final
\item 
\Hypertarget{classfunc_1_1MetaTable_ace5da8f51f6e8c888c38c0e36e22dd22}\label{classfunc_1_1MetaTable_ace5da8f51f6e8c888c38c0e36e22dd22} 
unsigned int {\bfseries num\+\_\+table\+\_\+entries} () const
\item 
\Hypertarget{classfunc_1_1MetaTable_a02b8e548b4c4e73ac53837129f6c7742}\label{classfunc_1_1MetaTable_a02b8e548b4c4e73ac53837129f6c7742} 
unsigned int {\bfseries ncoefs\+\_\+per\+\_\+entry} () const
\item 
\Hypertarget{classfunc_1_1MetaTable_a360f07280523487708c3853f673a5afa}\label{classfunc_1_1MetaTable_a360f07280523487708c3853f673a5afa} 
TOUT {\bfseries table\+\_\+entry} (unsigned int i, unsigned int j) const
\item 
\Hypertarget{classfunc_1_1MetaTable_a4b118b7c17fb520d2977faf36750a4bb}\label{classfunc_1_1MetaTable_a4b118b7c17fb520d2977faf36750a4bb} 
std\+::array$<$ TIN, 4 $>$ {\bfseries transfer\+\_\+function\+\_\+coefs} () const
\item 
\mbox{\hyperlink{classfunc_1_1MetaTable}{Meta\+Table}}$<$ N, TIN, TOUT, GT $>$ \& \mbox{\hyperlink{classfunc_1_1MetaTable_a9b1baea31c64bd1a64a89343eb41f909}{operator+=}} (const \mbox{\hyperlink{classfunc_1_1MetaTable}{Meta\+Table}}$<$ N, TIN, TOUT, GT $>$ \&other)
\item 
\Hypertarget{classfunc_1_1MetaTable_a1d690f6a8a1b6f42953f7c247157cb1f}\label{classfunc_1_1MetaTable_a1d690f6a8a1b6f42953f7c247157cb1f} 
\mbox{\hyperlink{classfunc_1_1MetaTable}{Meta\+Table}}$<$ N, TIN, TOUT, GT $>$ \& {\bfseries operator-\/=} (const \mbox{\hyperlink{classfunc_1_1MetaTable}{Meta\+Table}}$<$ N, TIN, TOUT, GT $>$ \&other)
\item 
\Hypertarget{classfunc_1_1MetaTable_ac5ceab5417186be3110c4590288c874d}\label{classfunc_1_1MetaTable_ac5ceab5417186be3110c4590288c874d} 
\mbox{\hyperlink{classfunc_1_1MetaTable}{Meta\+Table}}$<$ N, TIN, TOUT, GT $>$ \& {\bfseries operator\texorpdfstring{$\ast$}{*}=} (const TIN \&a)
\item 
\Hypertarget{classfunc_1_1MetaTable_aba44a6b479bd7835bffa906d710e48a5}\label{classfunc_1_1MetaTable_aba44a6b479bd7835bffa906d710e48a5} 
\mbox{\hyperlink{classfunc_1_1MetaTable}{Meta\+Table}}$<$ N, TIN, TOUT, GT $>$ \& {\bfseries operator/=} (const TIN \&a)
\item 
{\footnotesize template$<$Grid\+Types GT1, typename std\+::enable\+\_\+if$<$ GT1==Grid\+Types\+::\+UNIFORM, bool $>$\+::type = true$>$ }\\std\+::pair$<$ unsigned int, TIN $>$ \mbox{\hyperlink{classfunc_1_1MetaTable_aea0019b0ae25e0e8d8530ebc28002cf1}{hash}} (TIN x) const
\item 
{\footnotesize template$<$Grid\+Types GT1, typename std\+::enable\+\_\+if$<$ GT1==Grid\+Types\+::\+NONUNIFORM, bool $>$\+::type = true$>$ }\\std\+::pair$<$ unsigned int, TIN $>$ \mbox{\hyperlink{classfunc_1_1MetaTable_aea0019b0ae25e0e8d8530ebc28002cf1}{hash}} (TIN x) const
\item 
TOUT \mbox{\hyperlink{classfunc_1_1MetaTable_a19a1de294ffbb53d7d95c3044b220d1c}{operator()}} (TIN x) const override
\item 
{\footnotesize template$<$typename... TIN2$>$ }\\auto \mbox{\hyperlink{classfunc_1_1MetaTable_ade9529d8777b9e9586e069b7d4da7bd7}{operator()}} (TIN x, TIN2 ... args) const
\begin{DoxyCompactList}\small\item\em If LUT coefficients (of type TOUT) are callable, then apply each to {\ttfamily args} as soon as possible. \end{DoxyCompactList}\item 
TOUT \mbox{\hyperlink{classfunc_1_1MetaTable_ad6406f15f1b656dcde38acd434d0d3ce}{diff}} (unsigned int s, TIN x) const
\begin{DoxyCompactList}\small\item\em Return the $s$th derivative of $L$ at $x$\+: ie return $p_k^{(s)}(x)$. \end{DoxyCompactList}\item 
\Hypertarget{classfunc_1_1MetaTable_ac3278d7961d4a353ad5e82c9f8730184}\label{classfunc_1_1MetaTable_ac3278d7961d4a353ad5e82c9f8730184} 
{\footnotesize template$<$typename... TIN2$>$ }\\auto {\bfseries diff} (unsigned int s, TIN x, TIN2... args) const
\begin{DoxyCompactList}\small\item\em Same pattern as the variadic operator() but for the $s$th derivative. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxyparagraph*{Public Member Functions inherited from \mbox{\hyperlink{classfunc_1_1LookupTable}{Lookup\+Table$<$ TIN, TIN $>$}}}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{classfunc_1_1LookupTable_acd94ebee613378fb31e86a83d34eaf4c}{Lookup\+Table}} ()=default
\end{DoxyCompactItemize}
\doxysubsubsubsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
void \mbox{\hyperlink{classfunc_1_1MetaTable_a06026ce7da697d94db6418e29fb1ef87}{swap}} (\mbox{\hyperlink{classfunc_1_1MetaTable}{Meta\+Table}}$<$ N, TIN, TOUT, GT $>$ \&L) noexcept
\begin{DoxyCompactList}\small\item\em Copy-\/swap pattern, necessary for {\ttfamily operator=} \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsubsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classfunc_1_1MetaTable_adb41893ba19e889e56c559f25fc1a68a}\label{classfunc_1_1MetaTable_adb41893ba19e889e56c559f25fc1a68a} 
std\+::string {\bfseries m\+\_\+name}
\begin{DoxyCompactList}\small\item\em name of implementation type \end{DoxyCompactList}\item 
\Hypertarget{classfunc_1_1MetaTable_a045087dc07128e35a68195c54d38fcbc}\label{classfunc_1_1MetaTable_a045087dc07128e35a68195c54d38fcbc} 
TIN {\bfseries m\+\_\+min\+Arg}
\item 
\Hypertarget{classfunc_1_1MetaTable_a9e1a015fb23da0270de89f8209bcae63}\label{classfunc_1_1MetaTable_a9e1a015fb23da0270de89f8209bcae63} 
TIN {\bfseries m\+\_\+max\+Arg}
\begin{DoxyCompactList}\small\item\em bounds of evaluation \end{DoxyCompactList}\item 
\Hypertarget{classfunc_1_1MetaTable_abb7b48c238909149ab8878cd08e2f5bf}\label{classfunc_1_1MetaTable_abb7b48c238909149ab8878cd08e2f5bf} 
TIN {\bfseries m\+\_\+step\+Size}
\item 
\Hypertarget{classfunc_1_1MetaTable_aa1d958fba023995b91da66a19afe0126}\label{classfunc_1_1MetaTable_aa1d958fba023995b91da66a19afe0126} 
TIN {\bfseries m\+\_\+step\+Size\+\_\+inv}
\begin{DoxyCompactList}\small\item\em fixed grid spacing (and its inverse) \end{DoxyCompactList}\item 
\Hypertarget{classfunc_1_1MetaTable_aa749a357eae50e5b6b67332e35eadebd}\label{classfunc_1_1MetaTable_aa749a357eae50e5b6b67332e35eadebd} 
TIN {\bfseries m\+\_\+table\+Max\+Arg}
\begin{DoxyCompactList}\small\item\em \texorpdfstring{$>$}{>} m\+\_\+max\+Arg if (m\+\_\+max\+Arg-\/m\+\_\+min\+Arg)/m\+\_\+step\+Size is non-\/integer \end{DoxyCompactList}\item 
\Hypertarget{classfunc_1_1MetaTable_a4a0616a6ccd022f2643a4b1bceca9d19}\label{classfunc_1_1MetaTable_a4a0616a6ccd022f2643a4b1bceca9d19} 
unsigned int {\bfseries m\+\_\+order}
\begin{DoxyCompactList}\small\item\em order of accuracy of implementation \end{DoxyCompactList}\item 
\Hypertarget{classfunc_1_1MetaTable_a989ab98511a707423fb7a2db567910ec}\label{classfunc_1_1MetaTable_a989ab98511a707423fb7a2db567910ec} 
std\+::size\+\_\+t {\bfseries m\+\_\+data\+Size}
\begin{DoxyCompactList}\small\item\em size of relevant data for impl evaluation \end{DoxyCompactList}\item 
\Hypertarget{classfunc_1_1MetaTable_a8349c226b5d8ac18b3c06211e68f5e74}\label{classfunc_1_1MetaTable_a8349c226b5d8ac18b3c06211e68f5e74} 
unsigned int {\bfseries m\+\_\+num\+Intervals}
\begin{DoxyCompactList}\small\item\em = (m\+\_\+table\+Max\+Arg -\/ m\+\_\+min\+Arg)/m\+\_\+step\+Size; \end{DoxyCompactList}\item 
\Hypertarget{classfunc_1_1MetaTable_a1dfb8f058e0168be935adef31c575691}\label{classfunc_1_1MetaTable_a1dfb8f058e0168be935adef31c575691} 
unsigned int {\bfseries m\+\_\+num\+Table\+Entries}
\begin{DoxyCompactList}\small\item\em length of m\+\_\+table (usually = m\+\_\+num\+Intervals + 1) \end{DoxyCompactList}\item 
\+\_\+\+\_\+attribute\+\_\+\+\_\+((aligned)) std \mbox{\hyperlink{classfunc_1_1TransferFunction}{Transfer\+Function}}$<$ TIN $>$ \mbox{\hyperlink{classfunc_1_1MetaTable_aa1f66ead8e037b26b9e72a47dd7d7c3f}{m\+\_\+transfer\+Function}}
\begin{DoxyCompactList}\small\item\em \texorpdfstring{$<$}{<} holds polynomials coefficients \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsubsection*{Friends}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$unsigned int N1, typename TIN1, typename TOUT1, Grid\+Types GT1, typename std\+::enable\+\_\+if$<$ std\+::is\+\_\+constructible$<$ nlohmann\+::json, TIN1 $>$\+::value \&\&std\+::is\+\_\+constructible$<$ nlohmann\+::json, TOUT1 $>$\+::value, bool $>$\+::type$>$ }\\void \mbox{\hyperlink{classfunc_1_1MetaTable_ab6c4c3c45b2eac8c6f3fd9220736e3d3}{from\+\_\+json}} (const nlohmann\+::json \&json\+Stats, \mbox{\hyperlink{classfunc_1_1MetaTable}{Meta\+Table}}$<$ N1, TIN1, TOUT1, GT1 $>$ \&lut)
\end{DoxyCompactItemize}
\doxysubsubsubsection*{Additional Inherited Members}
\doxyparagraph*{Public Types inherited from \mbox{\hyperlink{classfunc_1_1LookupTable}{Lookup\+Table$<$ TIN, TIN $>$}}}
\begin{DoxyCompactItemize}
\item 
using {\bfseries input\+\_\+type}
\item 
using {\bfseries output\+\_\+type}
\end{DoxyCompactItemize}


\doxysubsubsection{Detailed Description}
\subsubsection*{template$<$unsigned int N, typename TIN, typename TOUT = TIN, Grid\+Types GT = Grid\+Types\+::\+UNIFORM$>$\newline
class func\+::\+Meta\+Table$<$ N, TIN, TOUT, GT $>$}
\doxylink{classfunc_1_1MetaTable}{Meta\+Table} handles any piecewise {\itshape polynomial} based interpolation. Highly templated. 

\begin{DoxyNote}{Note}
If (max-\/min)/stepsize is not an integer then the actual maximum allowable argument {\ttfamily m\+\_\+table\+Max\+Arg} is {\ttfamily std\+::ceil(m\+\_\+step\+Size\+\_\+inv\texorpdfstring{$\ast$}{*}(m\+\_\+max\+Arg-\/m\+\_\+min\+Arg)))} (which is slightly larger than the given max) 

If (max-\/min)/stepsize {\itshape is} an integer, then {\ttfamily hash(max)=index\+\_\+max+1}. To remedy this, every implementation must have an extra (unnecessary in most cases) entry in m\+\_\+table 

If {\ttfamily TIN} approximates a field and {\ttfamily TOUT} approximates a vector space over {\ttfamily TIN}, then {\ttfamily \doxylink{classfunc_1_1MetaTable}{Meta\+Table}\texorpdfstring{$<$}{<}N,TIN,TOUT,GT\texorpdfstring{$>$}{>}} approximates a vector space over {\ttfamily TIN}. \doxylink{classfunc_1_1MetaTable}{Meta\+Table} provides methods for addition/subtraction \& scalar multiplication/division. This feature makes the N-\/D LUTs possible. 

Provides functions to read/write LUTs from a JSON file by implementing nlohmann\textquotesingle{}s to/from\+\_\+json.
\end{DoxyNote}

\begin{DoxyTemplParams}{Template Parameters}
{\em N,unsigned} & int\+: is the number of coefficients required to represent each polynomial. So, N = deg(p\+\_\+k) + 1 where p\+\_\+k is the polynomial approximating f over interval k \\
\hline
{\em TIN,typename} & is the type of the inputs passed to f. \\
\hline
{\em TOUT,typename} & is the type that f outputs (and the type of the coefficients of each p\+\_\+k). \\
\hline
{\em GT,Grid\+Type} & is the type of partition that this LUT uses. The options are
\begin{DoxyItemize}
\item UNIFORM\+: Every subinterval is the same length so the hash takes 4 FLOPs \& zero comparisons; however, unnecessary subintervals might be needed
\item NONUNIFORM\+: Use a \doxylink{classfunc_1_1TransferFunction}{Transfer\+Function} to create a nonuniform partition of \mbox{[}a,b\mbox{]} with an O(1) hash. 
\end{DoxyItemize}\\
\hline
\end{DoxyTemplParams}


\label{doc-constructors}
\Hypertarget{classfunc_1_1MetaTable_doc-constructors}
\doxysubsubsection{Constructor \& Destructor Documentation}
\Hypertarget{classfunc_1_1MetaTable_a4b85e9ba4451023fa921e2be31acfbc1}\index{MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}!MetaTable@{MetaTable}}
\index{MetaTable@{MetaTable}!MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}}
\doxyparagraph{\texorpdfstring{MetaTable()}{MetaTable()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}}
{\footnotesize\ttfamily \label{classfunc_1_1MetaTable_a4b85e9ba4451023fa921e2be31acfbc1} 
template$<$unsigned int N, typename TIN, typename TOUT = TIN, Grid\+Types GT = Grid\+Types\+::\+UNIFORM$>$ \\
\mbox{\hyperlink{classfunc_1_1MetaTable}{Meta\+Table}} (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}}

Using a std\+::unique\+\_\+ptr member variables implicitly deletes the default move ctor so we must explicitly ask for the default move ctor \Hypertarget{classfunc_1_1MetaTable_a190be9a8afebc616cccf40325504e59f}\index{MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}!MetaTable@{MetaTable}}
\index{MetaTable@{MetaTable}!MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}}
\doxyparagraph{\texorpdfstring{MetaTable()}{MetaTable()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}}
{\footnotesize\ttfamily \label{classfunc_1_1MetaTable_a190be9a8afebc616cccf40325504e59f} 
template$<$unsigned int N, typename TIN, typename TOUT = TIN, Grid\+Types GT = Grid\+Types\+::\+UNIFORM$>$ \\
\mbox{\hyperlink{classfunc_1_1MetaTable}{Meta\+Table}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classfunc_1_1MetaTable}{Meta\+Table}}$<$ N, TIN, TOUT, GT $>$ \&}]{L}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

deepcopy constructor \Hypertarget{classfunc_1_1MetaTable_a3a1840aedfcbe631ccac7b1ccc5b6224}\index{MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}!MetaTable@{MetaTable}}
\index{MetaTable@{MetaTable}!MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}}
\doxyparagraph{\texorpdfstring{MetaTable()}{MetaTable()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}}
{\footnotesize\ttfamily \label{classfunc_1_1MetaTable_a3a1840aedfcbe631ccac7b1ccc5b6224} 
template$<$unsigned int N, typename TIN, typename TOUT = TIN, Grid\+Types GT = Grid\+Types\+::\+UNIFORM$>$ \\
\mbox{\hyperlink{classfunc_1_1MetaTable}{Meta\+Table}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classfunc_1_1FunctionContainer}{Function\+Container}}$<$ TIN, TOUT $>$ \&}]{func\+\_\+container}{, }\item[{const \mbox{\hyperlink{structfunc_1_1LookupTableParameters}{Lookup\+Table\+Parameters}}$<$ TIN $>$ \&}]{par}{, }\item[{const nlohmann\+::json \&}]{json\+Stats}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Use a json file to set every generic member variable 

\label{doc-func-members}
\Hypertarget{classfunc_1_1MetaTable_doc-func-members}
\doxysubsubsection{Member Function Documentation}
\Hypertarget{classfunc_1_1MetaTable_aea8465ad30b6260a0948d4305d984d9d}\index{MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}!bounds\_of\_subinterval@{bounds\_of\_subinterval}}
\index{bounds\_of\_subinterval@{bounds\_of\_subinterval}!MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}}
\doxyparagraph{\texorpdfstring{bounds\_of\_subinterval()}{bounds\_of\_subinterval()}}
{\footnotesize\ttfamily \label{classfunc_1_1MetaTable_aea8465ad30b6260a0948d4305d984d9d} 
template$<$unsigned int N, typename TIN, typename TOUT = TIN, Grid\+Types GT = Grid\+Types\+::\+UNIFORM$>$ \\
std\+::pair$<$ TIN, TIN $>$ bounds\+\_\+of\+\_\+subinterval (\begin{DoxyParamCaption}\item[{unsigned int}]{interval\+Number}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [final]}, {\ttfamily [virtual]}}



Implements \mbox{\hyperlink{classfunc_1_1LookupTable}{Lookup\+Table$<$ TIN, TIN $>$}}.

\Hypertarget{classfunc_1_1MetaTable_ad6406f15f1b656dcde38acd434d0d3ce}\index{MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}!diff@{diff}}
\index{diff@{diff}!MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}}
\doxyparagraph{\texorpdfstring{diff()}{diff()}}
{\footnotesize\ttfamily \label{classfunc_1_1MetaTable_ad6406f15f1b656dcde38acd434d0d3ce} 
template$<$unsigned int N, typename TIN, typename TOUT = TIN, Grid\+Types GT = Grid\+Types\+::\+UNIFORM$>$ \\
TOUT diff (\begin{DoxyParamCaption}\item[{unsigned int}]{s}{, }\item[{TIN}]{x}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Return the $s$th derivative of $L$ at $x$\+: ie return $p_k^{(s)}(x)$. 

\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000004}{Todo}}]Make this function virtual and override in \doxylink{classfunc_1_1PadeTable}{Pade\+Table} and Linear\+Raw\+Interp\+Tables \end{DoxyRefDesc}
\Hypertarget{classfunc_1_1MetaTable_aea0019b0ae25e0e8d8530ebc28002cf1}\index{MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}!hash@{hash}}
\index{hash@{hash}!MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}}
\doxyparagraph{\texorpdfstring{hash()}{hash()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{classfunc_1_1MetaTable_aea0019b0ae25e0e8d8530ebc28002cf1} 
template$<$unsigned int N, typename TIN, typename TOUT = TIN, Grid\+Types GT = Grid\+Types\+::\+UNIFORM$>$ \\
template$<$Grid\+Types GT1, typename std\+::enable\+\_\+if$<$ GT1==Grid\+Types\+::\+UNIFORM, bool $>$\+::type = true$>$ \\
std\+::pair$<$ unsigned int, TIN $>$ hash (\begin{DoxyParamCaption}\item[{TIN}]{x}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

Find which polynomial $p_k$ to evaluate. Also, each $p_k:[0,1]->R$ so we must set $dx=(x-x_k)/(x_{k+1}-x_k)$ \Hypertarget{classfunc_1_1MetaTable_aea0019b0ae25e0e8d8530ebc28002cf1}\index{MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}!hash@{hash}}
\index{hash@{hash}!MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}}
\doxyparagraph{\texorpdfstring{hash()}{hash()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{classfunc_1_1MetaTable_aea0019b0ae25e0e8d8530ebc28002cf1} 
template$<$unsigned int N, typename TIN, typename TOUT = TIN, Grid\+Types GT = Grid\+Types\+::\+UNIFORM$>$ \\
template$<$Grid\+Types GT1, typename std\+::enable\+\_\+if$<$ GT1==Grid\+Types\+::\+NONUNIFORM, bool $>$\+::type = true$>$ \\
std\+::pair$<$ unsigned int, TIN $>$ hash (\begin{DoxyParamCaption}\item[{TIN}]{x}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

The polynomials for nonuniform LUTs map $[x_k,x_{k+1}]->R$ so we don\textquotesingle{}t have to preprocess $x$. Calls m\+\_\+transfer\+Function.\+inverse(x), using 6 FLOPs and 4 std\+::array$<$\+TIN,4$>$ access \Hypertarget{classfunc_1_1MetaTable_a546555a620601a06a71c12a15f7a2769}\index{MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}!max\_arg@{max\_arg}}
\index{max\_arg@{max\_arg}!MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}}
\doxyparagraph{\texorpdfstring{max\_arg()}{max\_arg()}}
{\footnotesize\ttfamily \label{classfunc_1_1MetaTable_a546555a620601a06a71c12a15f7a2769} 
template$<$unsigned int N, typename TIN, typename TOUT = TIN, Grid\+Types GT = Grid\+Types\+::\+UNIFORM$>$ \\
TIN max\+\_\+arg (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [final]}, {\ttfamily [virtual]}}



Implements \mbox{\hyperlink{classfunc_1_1LookupTable}{Lookup\+Table$<$ TIN, TIN $>$}}.

\Hypertarget{classfunc_1_1MetaTable_a0476b531891a0e1e33696d1a737661d0}\index{MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}!min\_arg@{min\_arg}}
\index{min\_arg@{min\_arg}!MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}}
\doxyparagraph{\texorpdfstring{min\_arg()}{min\_arg()}}
{\footnotesize\ttfamily \label{classfunc_1_1MetaTable_a0476b531891a0e1e33696d1a737661d0} 
template$<$unsigned int N, typename TIN, typename TOUT = TIN, Grid\+Types GT = Grid\+Types\+::\+UNIFORM$>$ \\
TIN min\+\_\+arg (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [final]}, {\ttfamily [virtual]}}



Implements \mbox{\hyperlink{classfunc_1_1LookupTable}{Lookup\+Table$<$ TIN, TIN $>$}}.

\Hypertarget{classfunc_1_1MetaTable_accba19b44801ed79bb97513319885f31}\index{MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}!name@{name}}
\index{name@{name}!MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}}
\doxyparagraph{\texorpdfstring{name()}{name()}}
{\footnotesize\ttfamily \label{classfunc_1_1MetaTable_accba19b44801ed79bb97513319885f31} 
template$<$unsigned int N, typename TIN, typename TOUT = TIN, Grid\+Types GT = Grid\+Types\+::\+UNIFORM$>$ \\
std\+::string name (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [final]}, {\ttfamily [virtual]}}



Implements \mbox{\hyperlink{classfunc_1_1LookupTable}{Lookup\+Table$<$ TIN, TIN $>$}}.

\Hypertarget{classfunc_1_1MetaTable_a269a97d89895944456f32f2be1d37109}\index{MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}!num\_subintervals@{num\_subintervals}}
\index{num\_subintervals@{num\_subintervals}!MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}}
\doxyparagraph{\texorpdfstring{num\_subintervals()}{num\_subintervals()}}
{\footnotesize\ttfamily \label{classfunc_1_1MetaTable_a269a97d89895944456f32f2be1d37109} 
template$<$unsigned int N, typename TIN, typename TOUT = TIN, Grid\+Types GT = Grid\+Types\+::\+UNIFORM$>$ \\
unsigned int num\+\_\+subintervals (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [final]}, {\ttfamily [virtual]}}



Implements \mbox{\hyperlink{classfunc_1_1LookupTable}{Lookup\+Table$<$ TIN, TIN $>$}}.

\Hypertarget{classfunc_1_1MetaTable_a19a1de294ffbb53d7d95c3044b220d1c}\index{MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}!operator()@{operator()}}
\index{operator()@{operator()}!MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}}
\doxyparagraph{\texorpdfstring{operator()()}{operator()()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{classfunc_1_1MetaTable_a19a1de294ffbb53d7d95c3044b220d1c} 
template$<$unsigned int N, typename TIN, typename TOUT = TIN, Grid\+Types GT = Grid\+Types\+::\+UNIFORM$>$ \\
TOUT operator() (\begin{DoxyParamCaption}\item[{TIN}]{x}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}}

Find the subinterval $[x_k,x_{k+1})$ that $x$ belongs to, fetch the coefficients of the polynomial $p_k(x)$ from {\ttfamily m\+\_\+table\mbox{[}k\mbox{]}}, and use Horner\textquotesingle{}s method to compute $p_k(x)$.

\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000003}{Todo}}]\doxylink{classfunc_1_1PadeTable}{Pade\+Table} \& \doxylink{classfunc_1_1LinearRawInterpTable}{Linear\+Raw\+Interp\+Table} must override this operator. Maybe operator() will be faster if each implementation provides their own operator() and \doxylink{classfunc_1_1MetaTable_ad6406f15f1b656dcde38acd434d0d3ce}{diff()}. If the vtable isn\textquotesingle{}t optimized out then perchance removing the use of virtual will remove that overhead. 

surely this could use openmp simd... \end{DoxyRefDesc}


Implements \mbox{\hyperlink{classfunc_1_1LookupTable}{Lookup\+Table$<$ TIN, TIN $>$}}.



Reimplemented in \mbox{\hyperlink{classfunc_1_1PadeTable_a10047eb2c0e68f488037419e770084e6}{Pade\+Table$<$ M, N, TIN, TOUT, GT $>$}}, and \mbox{\hyperlink{classfunc_1_1PadeTable_a10047eb2c0e68f488037419e770084e6}{Pade\+Table$<$ M, N, TIN, TOUT, Grid\+Types\+::\+UNIFORM $>$}}.

\Hypertarget{classfunc_1_1MetaTable_ade9529d8777b9e9586e069b7d4da7bd7}\index{MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}!operator()@{operator()}}
\index{operator()@{operator()}!MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}}
\doxyparagraph{\texorpdfstring{operator()()}{operator()()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{classfunc_1_1MetaTable_ade9529d8777b9e9586e069b7d4da7bd7} 
template$<$unsigned int N, typename TIN, typename TOUT = TIN, Grid\+Types GT = Grid\+Types\+::\+UNIFORM$>$ \\
template$<$typename... TIN2$>$ \\
auto operator() (\begin{DoxyParamCaption}\item[{TIN}]{x}{, }\item[{TIN2 ...}]{args}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



If LUT coefficients (of type TOUT) are callable, then apply each to {\ttfamily args} as soon as possible. 

\begin{DoxyNote}{Note}
We must use an {\ttfamily auto} return type because there\textquotesingle{}s no straightforward way to statically deduce the return type ahead of time. 

This function does not perform well with template expressions (e.\+g. LUTs of arma\+::mat) so use the other {\ttfamily operator()} in that case. 

This variadic {\ttfamily operator()} cannot be in the LUT interface because it must be templated. 
\end{DoxyNote}
\Hypertarget{classfunc_1_1MetaTable_a9b1baea31c64bd1a64a89343eb41f909}\index{MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}!operator+=@{operator+=}}
\index{operator+=@{operator+=}!MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}}
\doxyparagraph{\texorpdfstring{operator+=()}{operator+=()}}
{\footnotesize\ttfamily \label{classfunc_1_1MetaTable_a9b1baea31c64bd1a64a89343eb41f909} 
template$<$unsigned int N, typename TIN, typename TOUT = TIN, Grid\+Types GT = Grid\+Types\+::\+UNIFORM$>$ \\
\mbox{\hyperlink{classfunc_1_1MetaTable}{Meta\+Table}}$<$ N, TIN, TOUT, GT $>$ \& operator+= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classfunc_1_1MetaTable}{Meta\+Table}}$<$ N, TIN, TOUT, GT $>$ \&}]{other}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

LUTs form a vector space over TIN if TOUT forms a vector space over TIN Note these operations could be heavily optimized with template expressions but that doesn\textquotesingle{}t work with the auto keyword (currectly used with operator()(...)) and that\textquotesingle{}d be a loooot of work...

Maybe we could implement polynomial using an existing linear algebra library with fast (possibly template expression based) operator+ and operator\texorpdfstring{$\ast$}{*}? \Hypertarget{classfunc_1_1MetaTable_a097a4e8415badeb0468a7b432e3d2741}\index{MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}!operator=@{operator=}}
\index{operator=@{operator=}!MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}}
\doxyparagraph{\texorpdfstring{operator=()}{operator=()}}
{\footnotesize\ttfamily \label{classfunc_1_1MetaTable_a097a4e8415badeb0468a7b432e3d2741} 
template$<$unsigned int N, typename TIN, typename TOUT = TIN, Grid\+Types GT = Grid\+Types\+::\+UNIFORM$>$ \\
\mbox{\hyperlink{classfunc_1_1MetaTable}{Meta\+Table}}$<$ N, TIN, TOUT, GT $>$ \& operator= (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classfunc_1_1MetaTable}{Meta\+Table}}$<$ N, TIN, TOUT, GT $>$}]{L}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Implemented with the copy-\/swap pattern \Hypertarget{classfunc_1_1MetaTable_a001c4e4c752e91195b970be3edee0b6d}\index{MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}!order@{order}}
\index{order@{order}!MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}}
\doxyparagraph{\texorpdfstring{order()}{order()}}
{\footnotesize\ttfamily \label{classfunc_1_1MetaTable_a001c4e4c752e91195b970be3edee0b6d} 
template$<$unsigned int N, typename TIN, typename TOUT = TIN, Grid\+Types GT = Grid\+Types\+::\+UNIFORM$>$ \\
unsigned int order (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [final]}, {\ttfamily [virtual]}}



Implements \mbox{\hyperlink{classfunc_1_1LookupTable}{Lookup\+Table$<$ TIN, TIN $>$}}.

\Hypertarget{classfunc_1_1MetaTable_a16138bbe5fe761854a353362ba7d9b2f}\index{MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}!print\_json@{print\_json}}
\index{print\_json@{print\_json}!MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}}
\doxyparagraph{\texorpdfstring{print\_json()}{print\_json()}}
{\footnotesize\ttfamily \label{classfunc_1_1MetaTable_a16138bbe5fe761854a353362ba7d9b2f} 
template$<$unsigned int N, typename TIN, typename TOUT = TIN, Grid\+Types GT = Grid\+Types\+::\+UNIFORM$>$ \\
void print\+\_\+json (\begin{DoxyParamCaption}\item[{std\+::ostream \&}]{out}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [final]}, {\ttfamily [virtual]}}

\begin{DoxyNote}{Note}
Every class implementing \doxylink{classfunc_1_1LookupTable}{Lookup\+Table} should call their implementation of nlohmann\textquotesingle{}s to\+\_\+json from print\+\_\+json 
\end{DoxyNote}


Implements \mbox{\hyperlink{classfunc_1_1LookupTable_a4b12bfc8ece1a97fa5ed8412d072e35d}{Lookup\+Table$<$ TIN, TIN $>$}}.

\Hypertarget{classfunc_1_1MetaTable_a5e82e200bee26238c342218d6d4f7042}\index{MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}!size@{size}}
\index{size@{size}!MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}}
\doxyparagraph{\texorpdfstring{size()}{size()}}
{\footnotesize\ttfamily \label{classfunc_1_1MetaTable_a5e82e200bee26238c342218d6d4f7042} 
template$<$unsigned int N, typename TIN, typename TOUT = TIN, Grid\+Types GT = Grid\+Types\+::\+UNIFORM$>$ \\
std\+::size\+\_\+t size (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [final]}, {\ttfamily [virtual]}}



Implements \mbox{\hyperlink{classfunc_1_1LookupTable}{Lookup\+Table$<$ TIN, TIN $>$}}.

\Hypertarget{classfunc_1_1MetaTable_a0b483cc80497aa809bead8161f14a284}\index{MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}!step\_size@{step\_size}}
\index{step\_size@{step\_size}!MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}}
\doxyparagraph{\texorpdfstring{step\_size()}{step\_size()}}
{\footnotesize\ttfamily \label{classfunc_1_1MetaTable_a0b483cc80497aa809bead8161f14a284} 
template$<$unsigned int N, typename TIN, typename TOUT = TIN, Grid\+Types GT = Grid\+Types\+::\+UNIFORM$>$ \\
TIN step\+\_\+size (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [final]}, {\ttfamily [virtual]}}



Implements \mbox{\hyperlink{classfunc_1_1LookupTable}{Lookup\+Table$<$ TIN, TIN $>$}}.

\Hypertarget{classfunc_1_1MetaTable_a06026ce7da697d94db6418e29fb1ef87}\index{MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}!swap@{swap}}
\index{swap@{swap}!MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}}
\doxyparagraph{\texorpdfstring{swap()}{swap()}}
{\footnotesize\ttfamily \label{classfunc_1_1MetaTable_a06026ce7da697d94db6418e29fb1ef87} 
template$<$unsigned int N, typename TIN, typename TOUT = TIN, Grid\+Types GT = Grid\+Types\+::\+UNIFORM$>$ \\
void swap (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classfunc_1_1MetaTable}{Meta\+Table}}$<$ N, TIN, TOUT, GT $>$ \&}]{L}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}}



Copy-\/swap pattern, necessary for {\ttfamily operator=} 

\begin{DoxyPostcond}{Postcondition}
L is overwritten by the data in {\ttfamily this\texorpdfstring{$\ast$}{*}} and {\ttfamily this\texorpdfstring{$\ast$}{*}} loses access to its data. 
\end{DoxyPostcond}


\label{doc-related-members}
\Hypertarget{classfunc_1_1MetaTable_doc-related-members}
\doxysubsubsection{Friends And Related Symbol Documentation}
\Hypertarget{classfunc_1_1MetaTable_ab6c4c3c45b2eac8c6f3fd9220736e3d3}\index{MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}!from\_json@{from\_json}}
\index{from\_json@{from\_json}!MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}}
\doxyparagraph{\texorpdfstring{from\_json}{from\_json}}
{\footnotesize\ttfamily \label{classfunc_1_1MetaTable_ab6c4c3c45b2eac8c6f3fd9220736e3d3} 
template$<$unsigned int N, typename TIN, typename TOUT = TIN, Grid\+Types GT = Grid\+Types\+::\+UNIFORM$>$ \\
template$<$unsigned int N1, typename TIN1, typename TOUT1, Grid\+Types GT1, typename std\+::enable\+\_\+if$<$ std\+::is\+\_\+constructible$<$ nlohmann\+::json, TIN1 $>$\+::value \&\&std\+::is\+\_\+constructible$<$ nlohmann\+::json, TOUT1 $>$\+::value, bool $>$\+::type$>$ \\
void from\+\_\+json (\begin{DoxyParamCaption}\item[{const nlohmann\+::json \&}]{json\+Stats}{, }\item[{\mbox{\hyperlink{classfunc_1_1MetaTable}{Meta\+Table}}$<$ N1, TIN1, TOUT1, GT1 $>$ \&}]{lut}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}}

This declaration gives the nlohmann json functions access to every member variable. This {\itshape must} use SFINAE because we want people to construct LUTs over arbitrary types regardless of whether those types have implemented to/from json 

\label{doc-variable-members}
\Hypertarget{classfunc_1_1MetaTable_doc-variable-members}
\doxysubsubsection{Member Data Documentation}
\Hypertarget{classfunc_1_1MetaTable_aa1f66ead8e037b26b9e72a47dd7d7c3f}\index{MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}!m\_transferFunction@{m\_transferFunction}}
\index{m\_transferFunction@{m\_transferFunction}!MetaTable$<$ N, TIN, TOUT, GT $>$@{MetaTable$<$ N, TIN, TOUT, GT $>$}}
\doxyparagraph{\texorpdfstring{m\_transferFunction}{m\_transferFunction}}
{\footnotesize\ttfamily \label{classfunc_1_1MetaTable_aa1f66ead8e037b26b9e72a47dd7d7c3f} 
template$<$unsigned int N, typename TIN, typename TOUT = TIN, Grid\+Types GT = Grid\+Types\+::\+UNIFORM$>$ \\
\+\_\+\+\_\+attribute\+\_\+\+\_\+ ((aligned)) std \mbox{\hyperlink{classfunc_1_1TransferFunction}{Transfer\+Function}}$<$TIN$>$ m\+\_\+transfer\+Function\hspace{0.3cm}{\ttfamily [protected]}}



\texorpdfstring{$<$}{<} holds polynomials coefficients 

used to make nonuniform grids (default constructable) 

The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
Meta\+Table.\+hpp\end{DoxyCompactItemize}
