\doxysubsection{Failure\+Proof\+Table\texorpdfstring{$<$}{<} LUT\+\_\+\+TYPE \texorpdfstring{$>$}{>} Class Template Reference}
\hypertarget{classfunc_1_1FailureProofTable}{}\label{classfunc_1_1FailureProofTable}\index{FailureProofTable$<$ LUT\_TYPE $>$@{FailureProofTable$<$ LUT\_TYPE $>$}}


A wrapper for any implementation of \doxylink{classfunc_1_1LookupTable}{Lookup\+Table} $L$. The {\ttfamily operator()(x)} ensures $x$ is within the bounds of $L$ before returning $L(x)$. Returns $f(x)$ for out of bounds arguments. If {\ttfamily FUNC\+\_\+\+DEBUG} is defined then out of bounds arguments are recorded in a histogram.  




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

Inheritance diagram for Failure\+Proof\+Table\texorpdfstring{$<$}{<} LUT\+\_\+\+TYPE \texorpdfstring{$>$}{>}\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classfunc_1_1FailureProofTable}
\end{center}
\end{figure}
\doxysubsubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{classfunc_1_1FailureProofTable_ab4d8204cdafc1d612a18c9b453869a95}{Failure\+Proof\+Table}} (const \mbox{\hyperlink{classfunc_1_1FunctionContainer}{Function\+Container}}$<$ TIN, TOUT $>$ \&fc, const \mbox{\hyperlink{structfunc_1_1LookupTableParameters}{Lookup\+Table\+Parameters}}$<$ TIN $>$ \&par, TIN hist\+Min=1, TIN hist\+Max=0, unsigned int hist\+Size=10, std\+::ostream \texorpdfstring{$\ast$}{*}streamer=nullptr)
\item 
TOUT \mbox{\hyperlink{classfunc_1_1FailureProofTable_a10047eb2c0e68f488037419e770084e6}{operator()}} (TIN x) const final
\item 
std\+::string \mbox{\hyperlink{classfunc_1_1FailureProofTable_accba19b44801ed79bb97513319885f31}{name}} () const final
\item 
TIN \mbox{\hyperlink{classfunc_1_1FailureProofTable_a0476b531891a0e1e33696d1a737661d0}{min\+\_\+arg}} () const final
\item 
TIN \mbox{\hyperlink{classfunc_1_1FailureProofTable_a546555a620601a06a71c12a15f7a2769}{max\+\_\+arg}} () const final
\item 
unsigned int \mbox{\hyperlink{classfunc_1_1FailureProofTable_a001c4e4c752e91195b970be3edee0b6d}{order}} () const final
\item 
std\+::size\+\_\+t \mbox{\hyperlink{classfunc_1_1FailureProofTable_a5e82e200bee26238c342218d6d4f7042}{size}} () const final
\item 
unsigned int \mbox{\hyperlink{classfunc_1_1FailureProofTable_a269a97d89895944456f32f2be1d37109}{num\+\_\+subintervals}} () const final
\item 
TIN \mbox{\hyperlink{classfunc_1_1FailureProofTable_a0b483cc80497aa809bead8161f14a284}{step\+\_\+size}} () const final
\item 
std\+::pair$<$ TIN, TIN $>$ \mbox{\hyperlink{classfunc_1_1FailureProofTable_aea8465ad30b6260a0948d4305d984d9d}{bounds\+\_\+of\+\_\+subinterval}} (unsigned int interval\+Number) const final
\item 
void \mbox{\hyperlink{classfunc_1_1FailureProofTable_a16138bbe5fe761854a353362ba7d9b2f}{print\+\_\+json}} (std\+::ostream \&out) const final
\end{DoxyCompactItemize}
\doxyparagraph*{Public Member Functions inherited from \mbox{\hyperlink{classfunc_1_1LookupTable}{Lookup\+Table$<$ LUT\+\_\+\+TYPE\+::input\+\_\+type, LUT\+\_\+\+TYPE\+::output\+\_\+type $>$}}}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{classfunc_1_1LookupTable_acd94ebee613378fb31e86a83d34eaf4c}{Lookup\+Table}} ()=default
\end{DoxyCompactItemize}
\doxysubsubsubsection*{Additional Inherited Members}
\doxyparagraph*{Public Types inherited from \mbox{\hyperlink{classfunc_1_1LookupTable}{Lookup\+Table$<$ LUT\+\_\+\+TYPE\+::input\+\_\+type, LUT\+\_\+\+TYPE\+::output\+\_\+type $>$}}}
\begin{DoxyCompactItemize}
\item 
using {\bfseries input\+\_\+type}
\item 
using {\bfseries output\+\_\+type}
\end{DoxyCompactItemize}


\doxysubsubsection{Detailed Description}
\subsubsection*{template$<$class LUT\+\_\+\+TYPE$>$\newline
class func\+::\+Failure\+Proof\+Table$<$ LUT\+\_\+\+TYPE $>$}
A wrapper for any implementation of \doxylink{classfunc_1_1LookupTable}{Lookup\+Table} $L$. The {\ttfamily operator()(x)} ensures $x$ is within the bounds of $L$ before returning $L(x)$. Returns $f(x)$ for out of bounds arguments. If {\ttfamily FUNC\+\_\+\+DEBUG} is defined then out of bounds arguments are recorded in a histogram. 


\begin{DoxyTemplParams}{Template Parameters}
{\em LUT\+\_\+\+TYPE} & is a specific implementation of \doxylink{classfunc_1_1LookupTable}{Lookup\+Table} (eg. \doxylink{classfunc_1_1ChebyInterpTable}{Cheby\+Interp\+Table$<$3,double$>$})\\
\hline
\end{DoxyTemplParams}
Usage example\+: 
\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{comment}{//\ Build\ a\ UniformChebyInterpTable<3,double>\ with\ the\ arguments\ \{0,10,0.0001\}}}
\DoxyCodeLine{\mbox{\hyperlink{classfunc_1_1FailureProofTable_ab4d8204cdafc1d612a18c9b453869a95}{FailureProofTable<UniformChebyInterpTable<3,double>}}>\ failsafe(}
\DoxyCodeLine{\ \ \{MyFunction\},\{0,10,0.0001\}}
\DoxyCodeLine{);}
\DoxyCodeLine{\textcolor{keywordtype}{double}\ val1\ =\ failsafe(0.87354);}
\DoxyCodeLine{\textcolor{keywordtype}{double}\ val2\ =\ failsafe(100);}

\end{DoxyCode}


\begin{DoxyNote}{Note}
Each member function is marked const 

User can optionally call the constructor with arguments for \doxylink{classfunc_1_1ArgumentRecord}{Argument\+Record} to improve binning (better tracking the max \& min arguments)
\end{DoxyNote}
\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000010}{Todo}}]This class will support {\ttfamily to\+\_\+json} but not {\ttfamily from\+\_\+json} because it needs a {\ttfamily \doxylink{classfunc_1_1FunctionContainer}{Function\+Container}}. Add another constructor to build this class from a {\ttfamily \doxylink{classfunc_1_1FunctionContainer}{Function\+Container}} and a {\ttfamily filename} \end{DoxyRefDesc}


\label{doc-constructors}
\Hypertarget{classfunc_1_1FailureProofTable_doc-constructors}
\doxysubsubsection{Constructor \& Destructor Documentation}
\Hypertarget{classfunc_1_1FailureProofTable_ab4d8204cdafc1d612a18c9b453869a95}\index{FailureProofTable$<$ LUT\_TYPE $>$@{FailureProofTable$<$ LUT\_TYPE $>$}!FailureProofTable@{FailureProofTable}}
\index{FailureProofTable@{FailureProofTable}!FailureProofTable$<$ LUT\_TYPE $>$@{FailureProofTable$<$ LUT\_TYPE $>$}}
\doxyparagraph{\texorpdfstring{FailureProofTable()}{FailureProofTable()}}
{\footnotesize\ttfamily \label{classfunc_1_1FailureProofTable_ab4d8204cdafc1d612a18c9b453869a95} 
template$<$class LUT\+\_\+\+TYPE$>$ \\
\mbox{\hyperlink{classfunc_1_1FailureProofTable}{Failure\+Proof\+Table}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classfunc_1_1FunctionContainer}{Function\+Container}}$<$ TIN, TOUT $>$ \&}]{fc}{, }\item[{const \mbox{\hyperlink{structfunc_1_1LookupTableParameters}{Lookup\+Table\+Parameters}}$<$ TIN $>$ \&}]{par}{, }\item[{TIN}]{hist\+Min}{ = {\ttfamily 1}, }\item[{TIN}]{hist\+Max}{ = {\ttfamily 0}, }\item[{unsigned int}]{hist\+Size}{ = {\ttfamily 10}, }\item[{std\+::ostream \texorpdfstring{$\ast$}{*}}]{streamer}{ = {\ttfamily nullptr}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Build our own LUT\+\_\+\+TYPE. This constructor will works if the template argument LUT\+\_\+\+TYPE is specific enough 

\label{doc-func-members}
\Hypertarget{classfunc_1_1FailureProofTable_doc-func-members}
\doxysubsubsection{Member Function Documentation}
\Hypertarget{classfunc_1_1FailureProofTable_aea8465ad30b6260a0948d4305d984d9d}\index{FailureProofTable$<$ LUT\_TYPE $>$@{FailureProofTable$<$ LUT\_TYPE $>$}!bounds\_of\_subinterval@{bounds\_of\_subinterval}}
\index{bounds\_of\_subinterval@{bounds\_of\_subinterval}!FailureProofTable$<$ LUT\_TYPE $>$@{FailureProofTable$<$ LUT\_TYPE $>$}}
\doxyparagraph{\texorpdfstring{bounds\_of\_subinterval()}{bounds\_of\_subinterval()}}
{\footnotesize\ttfamily \label{classfunc_1_1FailureProofTable_aea8465ad30b6260a0948d4305d984d9d} 
template$<$class LUT\+\_\+\+TYPE$>$ \\
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$<$ LUT\+\_\+\+TYPE\+::input\+\_\+type, LUT\+\_\+\+TYPE\+::output\+\_\+type $>$}}.

\Hypertarget{classfunc_1_1FailureProofTable_a546555a620601a06a71c12a15f7a2769}\index{FailureProofTable$<$ LUT\_TYPE $>$@{FailureProofTable$<$ LUT\_TYPE $>$}!max\_arg@{max\_arg}}
\index{max\_arg@{max\_arg}!FailureProofTable$<$ LUT\_TYPE $>$@{FailureProofTable$<$ LUT\_TYPE $>$}}
\doxyparagraph{\texorpdfstring{max\_arg()}{max\_arg()}}
{\footnotesize\ttfamily \label{classfunc_1_1FailureProofTable_a546555a620601a06a71c12a15f7a2769} 
template$<$class LUT\+\_\+\+TYPE$>$ \\
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$<$ LUT\+\_\+\+TYPE\+::input\+\_\+type, LUT\+\_\+\+TYPE\+::output\+\_\+type $>$}}.

\Hypertarget{classfunc_1_1FailureProofTable_a0476b531891a0e1e33696d1a737661d0}\index{FailureProofTable$<$ LUT\_TYPE $>$@{FailureProofTable$<$ LUT\_TYPE $>$}!min\_arg@{min\_arg}}
\index{min\_arg@{min\_arg}!FailureProofTable$<$ LUT\_TYPE $>$@{FailureProofTable$<$ LUT\_TYPE $>$}}
\doxyparagraph{\texorpdfstring{min\_arg()}{min\_arg()}}
{\footnotesize\ttfamily \label{classfunc_1_1FailureProofTable_a0476b531891a0e1e33696d1a737661d0} 
template$<$class LUT\+\_\+\+TYPE$>$ \\
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$<$ LUT\+\_\+\+TYPE\+::input\+\_\+type, LUT\+\_\+\+TYPE\+::output\+\_\+type $>$}}.

\Hypertarget{classfunc_1_1FailureProofTable_accba19b44801ed79bb97513319885f31}\index{FailureProofTable$<$ LUT\_TYPE $>$@{FailureProofTable$<$ LUT\_TYPE $>$}!name@{name}}
\index{name@{name}!FailureProofTable$<$ LUT\_TYPE $>$@{FailureProofTable$<$ LUT\_TYPE $>$}}
\doxyparagraph{\texorpdfstring{name()}{name()}}
{\footnotesize\ttfamily \label{classfunc_1_1FailureProofTable_accba19b44801ed79bb97513319885f31} 
template$<$class LUT\+\_\+\+TYPE$>$ \\
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$<$ LUT\+\_\+\+TYPE\+::input\+\_\+type, LUT\+\_\+\+TYPE\+::output\+\_\+type $>$}}.

\Hypertarget{classfunc_1_1FailureProofTable_a269a97d89895944456f32f2be1d37109}\index{FailureProofTable$<$ LUT\_TYPE $>$@{FailureProofTable$<$ LUT\_TYPE $>$}!num\_subintervals@{num\_subintervals}}
\index{num\_subintervals@{num\_subintervals}!FailureProofTable$<$ LUT\_TYPE $>$@{FailureProofTable$<$ LUT\_TYPE $>$}}
\doxyparagraph{\texorpdfstring{num\_subintervals()}{num\_subintervals()}}
{\footnotesize\ttfamily \label{classfunc_1_1FailureProofTable_a269a97d89895944456f32f2be1d37109} 
template$<$class LUT\+\_\+\+TYPE$>$ \\
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$<$ LUT\+\_\+\+TYPE\+::input\+\_\+type, LUT\+\_\+\+TYPE\+::output\+\_\+type $>$}}.

\Hypertarget{classfunc_1_1FailureProofTable_a10047eb2c0e68f488037419e770084e6}\index{FailureProofTable$<$ LUT\_TYPE $>$@{FailureProofTable$<$ LUT\_TYPE $>$}!operator()@{operator()}}
\index{operator()@{operator()}!FailureProofTable$<$ LUT\_TYPE $>$@{FailureProofTable$<$ LUT\_TYPE $>$}}
\doxyparagraph{\texorpdfstring{operator()()}{operator()()}}
{\footnotesize\ttfamily \label{classfunc_1_1FailureProofTable_a10047eb2c0e68f488037419e770084e6} 
template$<$class LUT\+\_\+\+TYPE$>$ \\
TOUT operator() (\begin{DoxyParamCaption}\item[{TIN}]{x}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [final]}, {\ttfamily [virtual]}}

if x isn\textquotesingle{}t in the LUT\textquotesingle{}s bounds, then return f(x) 

Implements \mbox{\hyperlink{classfunc_1_1LookupTable}{Lookup\+Table$<$ LUT\+\_\+\+TYPE\+::input\+\_\+type, LUT\+\_\+\+TYPE\+::output\+\_\+type $>$}}.

\Hypertarget{classfunc_1_1FailureProofTable_a001c4e4c752e91195b970be3edee0b6d}\index{FailureProofTable$<$ LUT\_TYPE $>$@{FailureProofTable$<$ LUT\_TYPE $>$}!order@{order}}
\index{order@{order}!FailureProofTable$<$ LUT\_TYPE $>$@{FailureProofTable$<$ LUT\_TYPE $>$}}
\doxyparagraph{\texorpdfstring{order()}{order()}}
{\footnotesize\ttfamily \label{classfunc_1_1FailureProofTable_a001c4e4c752e91195b970be3edee0b6d} 
template$<$class LUT\+\_\+\+TYPE$>$ \\
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$<$ LUT\+\_\+\+TYPE\+::input\+\_\+type, LUT\+\_\+\+TYPE\+::output\+\_\+type $>$}}.

\Hypertarget{classfunc_1_1FailureProofTable_a16138bbe5fe761854a353362ba7d9b2f}\index{FailureProofTable$<$ LUT\_TYPE $>$@{FailureProofTable$<$ LUT\_TYPE $>$}!print\_json@{print\_json}}
\index{print\_json@{print\_json}!FailureProofTable$<$ LUT\_TYPE $>$@{FailureProofTable$<$ LUT\_TYPE $>$}}
\doxyparagraph{\texorpdfstring{print\_json()}{print\_json()}}
{\footnotesize\ttfamily \label{classfunc_1_1FailureProofTable_a16138bbe5fe761854a353362ba7d9b2f} 
template$<$class LUT\+\_\+\+TYPE$>$ \\
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$<$ LUT\+\_\+\+TYPE\+::input\+\_\+type, LUT\+\_\+\+TYPE\+::output\+\_\+type $>$}}.

\Hypertarget{classfunc_1_1FailureProofTable_a5e82e200bee26238c342218d6d4f7042}\index{FailureProofTable$<$ LUT\_TYPE $>$@{FailureProofTable$<$ LUT\_TYPE $>$}!size@{size}}
\index{size@{size}!FailureProofTable$<$ LUT\_TYPE $>$@{FailureProofTable$<$ LUT\_TYPE $>$}}
\doxyparagraph{\texorpdfstring{size()}{size()}}
{\footnotesize\ttfamily \label{classfunc_1_1FailureProofTable_a5e82e200bee26238c342218d6d4f7042} 
template$<$class LUT\+\_\+\+TYPE$>$ \\
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$<$ LUT\+\_\+\+TYPE\+::input\+\_\+type, LUT\+\_\+\+TYPE\+::output\+\_\+type $>$}}.

\Hypertarget{classfunc_1_1FailureProofTable_a0b483cc80497aa809bead8161f14a284}\index{FailureProofTable$<$ LUT\_TYPE $>$@{FailureProofTable$<$ LUT\_TYPE $>$}!step\_size@{step\_size}}
\index{step\_size@{step\_size}!FailureProofTable$<$ LUT\_TYPE $>$@{FailureProofTable$<$ LUT\_TYPE $>$}}
\doxyparagraph{\texorpdfstring{step\_size()}{step\_size()}}
{\footnotesize\ttfamily \label{classfunc_1_1FailureProofTable_a0b483cc80497aa809bead8161f14a284} 
template$<$class LUT\+\_\+\+TYPE$>$ \\
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$<$ LUT\+\_\+\+TYPE\+::input\+\_\+type, LUT\+\_\+\+TYPE\+::output\+\_\+type $>$}}.



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