\hypertarget{stats_8h_source}{}\doxysection{stats.\+h}
\label{stats_8h_source}\index{kblib/stats.h@{kblib/stats.h}}
\mbox{\hyperlink{stats_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00001}00001 \textcolor{comment}{/* *****************************************************************************}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00002}00002 \textcolor{comment}{ * kblib is a general utility library for C++14 and C++17, intended to provide}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00003}00003 \textcolor{comment}{ * performant high-\/level abstractions and more expressive ways to do simple}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00004}00004 \textcolor{comment}{ * things.}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00005}00005 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00006}00006 \textcolor{comment}{ * Copyright (c) 2021 killerbee}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00008}00008 \textcolor{comment}{ * This program is free software: you can redistribute it and/or modify}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00009}00009 \textcolor{comment}{ * it under the terms of the GNU General Public License as published by}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00010}00010 \textcolor{comment}{ * the Free Software Foundation, either version 3 of the License, or}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00011}00011 \textcolor{comment}{ * (at your option) any later version.}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00012}00012 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00013}00013 \textcolor{comment}{ * This program is distributed in the hope that it will be useful,}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00014}00014 \textcolor{comment}{ * but WITHOUT ANY WARRANTY; without even the implied warranty of}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00015}00015 \textcolor{comment}{ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00016}00016 \textcolor{comment}{ * GNU General Public License for more details.}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00017}00017 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00018}00018 \textcolor{comment}{ * You should have received a copy of the GNU General Public License}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00019}00019 \textcolor{comment}{ * along with this program.  If not, see <https://www.gnu.org/licenses/>.}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00020}00020 \textcolor{comment}{ * ****************************************************************************/}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00021}00021 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00031}00031 \textcolor{preprocessor}{\#ifndef KBLIB\_STATS\_H}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00032}00032 \textcolor{preprocessor}{\#define KBLIB\_STATS\_H}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00033}00033 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00034}00034 \textcolor{preprocessor}{\#include <array>}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00035}00035 \textcolor{preprocessor}{\#include <cassert>}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00036}00036 \textcolor{preprocessor}{\#include <cinttypes>}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00037}00037 \textcolor{preprocessor}{\#include <cstdlib>}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00038}00038 \textcolor{preprocessor}{\#include <limits>}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00039}00039 \textcolor{preprocessor}{\#include <numeric>}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00040}00040 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00041}00041 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{fakestd_8h}{fakestd.h}}"{}}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00042}00042 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{logic_8h}{logic.h}}"{}}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00043}00043 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{tdecl_8h}{tdecl.h}}"{}}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00044}00044 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00045}00045 \textcolor{keyword}{namespace }\mbox{\hyperlink{tdecl_8h_a4b5c574c663a392148218cd4410fd7a1}{KBLIB\_NS}} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00046}00046 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00047}00047 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} U>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00048}\mbox{\hyperlink{namespacekblib_abe1c06264c5e7d5b720416ff9d399fa6}{00048}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_abe1c06264c5e7d5b720416ff9d399fa6}{div}}(T num, U den) \textcolor{keyword}{noexcept}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00049}00049     -\/> \textcolor{keyword}{decltype}(\mbox{\hyperlink{namespacekblib_abe1c06264c5e7d5b720416ff9d399fa6}{std::div}}(num, den)) \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00050}00050    \textcolor{keyword}{decltype}(\mbox{\hyperlink{namespacekblib_abe1c06264c5e7d5b720416ff9d399fa6}{std::div}}(num, den)) ret\{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00051}00051    ret.quot = num / den;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00052}00052    ret.rem = num \% den;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00053}00053    \textcolor{keywordflow}{return} ret;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00054}00054 \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00055}00055 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00060}00060 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00061}\mbox{\hyperlink{structkblib_1_1trivial__pair}{00061}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1trivial__pair}{trivial\_pair}} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00062}\mbox{\hyperlink{structkblib_1_1trivial__pair_a29a240ad34214f587dc796ca0d7584ca}{00062}}    T \mbox{\hyperlink{structkblib_1_1trivial__pair_a29a240ad34214f587dc796ca0d7584ca}{first}};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00063}\mbox{\hyperlink{structkblib_1_1trivial__pair_ac271f53cf468457f5aae812411aac013}{00063}}    T \mbox{\hyperlink{structkblib_1_1trivial__pair_ac271f53cf468457f5aae812411aac013}{second}};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00064}00064 \};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00065}00065 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00066}00066 \textcolor{preprocessor}{\#if 0 and KBLIB\_USE\_CXX17}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00067}00067 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00074}00074 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, std::\textcolor{keywordtype}{size\_t} N>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00075}00075 \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1trivial__array}{trivial\_array}} = std::array<T, N>;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00076}00076 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00077}00077 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00078}00078 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00083}00083 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, std::\textcolor{keywordtype}{size\_t} N>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00084}\mbox{\hyperlink{structkblib_1_1trivial__array}{00084}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1trivial__array}{trivial\_array}} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00085}\mbox{\hyperlink{structkblib_1_1trivial__array_a1f46739e45cc34e476f19d35aea7127b}{00085}}    T arr[N];}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00086}\mbox{\hyperlink{structkblib_1_1trivial__array_adf3010e52fd18c4e40ba48707d3635ce}{00086}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1trivial__array_adf3010e52fd18c4e40ba48707d3635ce}{operator[]}}(std::size\_t n) -\/> T\& \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00087}00087       \textcolor{keywordflow}{return} arr[n];}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00088}00088    \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00089}\mbox{\hyperlink{structkblib_1_1trivial__array_ae091de8b7b86f6057bc33dc066bb5538}{00089}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1trivial__array_ae091de8b7b86f6057bc33dc066bb5538}{operator[]}}(std::size\_t n) \textcolor{keyword}{const} -\/> \textcolor{keyword}{const} T\& \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00090}00090       \textcolor{keywordflow}{return} arr[n];}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00091}00091    \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00092}\mbox{\hyperlink{structkblib_1_1trivial__array_a5086d4ef7959c5c543964801b7ed8535}{00092}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1trivial__array_a5086d4ef7959c5c543964801b7ed8535}{size}}() const -\/> \mbox{\hyperlink{namespacestd}{std}}::\textcolor{keywordtype}{size\_t} \{ \textcolor{keywordflow}{return} N; \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00093}\mbox{\hyperlink{structkblib_1_1trivial__array_a86ce58f6a54d3b7b4e5da2f6c662b6c1}{00093}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1trivial__array_a86ce58f6a54d3b7b4e5da2f6c662b6c1}{begin}}() \& \textcolor{keyword}{noexcept} -\/> T* \{ \textcolor{keywordflow}{return} arr; \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00094}\mbox{\hyperlink{structkblib_1_1trivial__array_a5a5f343c5d83f4fa5efa723d7ea3438d}{00094}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1trivial__array_a5a5f343c5d83f4fa5efa723d7ea3438d}{begin}}() const\& noexcept -\/> const T* \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00095}00095       \textcolor{keywordflow}{return} arr;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00096}00096    \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00097}\mbox{\hyperlink{structkblib_1_1trivial__array_ae99bf75074f9bcc2922138a9784ab5de}{00097}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1trivial__array_ae99bf75074f9bcc2922138a9784ab5de}{end}}() \& \textcolor{keyword}{noexcept} -\/> T* \{ \textcolor{keywordflow}{return} arr + N; \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00098}\mbox{\hyperlink{structkblib_1_1trivial__array_abc5905757a91d69a439ed63c5b85af06}{00098}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1trivial__array_abc5905757a91d69a439ed63c5b85af06}{end}}() const\& noexcept -\/> const T* \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00099}00099       \textcolor{keywordflow}{return} arr + N;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00100}00100    \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00101}00101 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00102}\mbox{\hyperlink{structkblib_1_1trivial__array_ae8d35fd6a7c4f7955b06d9dfa8490c5a}{00102}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1trivial__array_ae8d35fd6a7c4f7955b06d9dfa8490c5a}{operator==}}(}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00103}00103        \textcolor{keyword}{const} \mbox{\hyperlink{structkblib_1_1trivial__array}{trivial\_array}}\& \mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}, \textcolor{keyword}{const} \mbox{\hyperlink{structkblib_1_1trivial__array}{trivial\_array}}\& b) \textcolor{keyword}{noexcept} -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00104}00104       \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_afbec3807c1be9d0aea88c620d673823c}{equal}}(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}.begin(), \mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}.end(), b.begin());}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00105}00105    \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00106}\mbox{\hyperlink{structkblib_1_1trivial__array_afdd3d0ad0fba5ed12b58dfa68aebb5af}{00106}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1trivial__array_afdd3d0ad0fba5ed12b58dfa68aebb5af}{operator!=}}(}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00107}00107        \textcolor{keyword}{const} \mbox{\hyperlink{structkblib_1_1trivial__array}{trivial\_array}}\& \mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}, \textcolor{keyword}{const} \mbox{\hyperlink{structkblib_1_1trivial__array}{trivial\_array}}\& b) \textcolor{keyword}{noexcept} -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00108}00108       \textcolor{keywordflow}{return} not (\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}} == b);}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00109}00109    \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00110}00110 \};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00111}00111 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00112}00112 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00113}00113 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00131}00131 \textcolor{keyword}{template} <\textcolor{keyword}{typename} U>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00132}\mbox{\hyperlink{namespacekblib_a90baddc76df99c83665b9fa3d45609e2}{00132}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a90baddc76df99c83665b9fa3d45609e2}{calc\_fib\_size}}() noexcept -\/> \mbox{\hyperlink{namespacestd}{std}}::\textcolor{keywordtype}{size\_t} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00133}00133    \textcolor{keyword}{static\_assert}(std::is\_unsigned<U>::value, \textcolor{stringliteral}{"{}U must be unsigned"{}});}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00134}00134    std::size\_t n\{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00135}00135    \mbox{\hyperlink{structkblib_1_1trivial__pair}{trivial\_pair<U>}} state\{0, 1\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00136}00136    U\& \mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}} = state.first;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00137}00137    U\& b = state.second;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00138}00138    \textcolor{keywordflow}{while} (b >= \mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}}) \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00139}00139       state = \{b, \textcolor{keyword}{static\_cast<}U\textcolor{keyword}{>}(\mbox{\hyperlink{namespacekblib_a22831dce77d5f35c13930b5e30a59f07}{a}} + b)\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00140}00140       ++n;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00141}00141    \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00142}00142    \textcolor{keywordflow}{return} n;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00143}00143 \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00144}00144 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00155}00155 template <typename U, std::size\_t N = calc\_fib\_size<U>() + 1>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00156}\mbox{\hyperlink{namespacekblib_a96a777604ed38213d8fd0c1d53c3db70}{00156}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a96a777604ed38213d8fd0c1d53c3db70}{make\_fib\_arr}}() noexcept -\/> \mbox{\hyperlink{structkblib_1_1trivial__array}{trivial\_array}}<U, N> \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00157}00157    \textcolor{keyword}{static\_assert}(}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00158}00158        \mbox{\hyperlink{structkblib_1_1implies}{implies}}<(N > calc\_fib\_size<U>()), std::is\_unsigned<U>::value>::value,}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00159}00159        \textcolor{stringliteral}{"{}signed U with large N would trigger signed overflow"{}});}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00160}00160    \textcolor{comment}{// Initialize the first two elements of the array}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00161}00161    \mbox{\hyperlink{structkblib_1_1trivial__array}{trivial\_array<U, N>}} ret\{\{0, 1\}\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00162}00162    \textcolor{comment}{// A loop initializes the rest}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00163}00163    \textcolor{keywordflow}{for} (std::size\_t i = 2; i < N; ++i) \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00164}00164       ret[i] = ret[i -\/ 1] + ret[i -\/ 2];}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00165}00165    \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00166}00166    \textcolor{keywordflow}{return} ret;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00167}00167 \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00168}00168 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00176}00176 \textcolor{keyword}{template} <\textcolor{keyword}{typename} U = std::u\textcolor{keywordtype}{int}max\_t>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00177}\mbox{\hyperlink{namespacekblib_a23d97429c2ea683b83b8223699b30c68}{00177}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a23d97429c2ea683b83b8223699b30c68}{fibonacci}}(\textcolor{keywordtype}{int} n) \textcolor{keyword}{noexcept} -\/> U \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00178}00178    \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} arr = make\_fib\_arr<U>();}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00179}00179    assert(n >= 0 and \textcolor{keyword}{static\_cast<}std::size\_t\textcolor{keyword}{>}(n) < arr.size());}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00180}00180    \textcolor{keywordflow}{return} arr[\mbox{\hyperlink{namespacekblib_af9e250fffa2922e623baa08aa8994f54}{to\_unsigned}}(n)];}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00181}00181 \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00182}00182 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00183}\mbox{\hyperlink{namespacekblib_1_1nums}{00183}} \textcolor{keyword}{inline} \textcolor{keyword}{namespace }nums \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00194}\mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{00194}}    \textcolor{keyword}{constexpr} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00195}00195       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T,}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00196}00196                 std::enable\_if\_t<std::numeric\_limits<T>::is\_specialized,}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00197}00197                                  \textcolor{keywordtype}{void}>* = \textcolor{keyword}{nullptr}>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00198}\mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a92c67d0d0825367b378c2448394e8000}{00198}}       \textcolor{keyword}{constexpr} \textcolor{comment}{/* implicit*/} \textcolor{keyword}{operator} T() const}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00199}00199           noexcept(noexcept(\mbox{\hyperlink{namespacestd}{std}}::numeric\_limits<T>::\mbox{\hyperlink{namespacekblib_1_1nums_a64067ecc4167ce1cfe32860ef5c1dc47}{max}}())) \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00200}00200          \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_1_1nums_a64067ecc4167ce1cfe32860ef5c1dc47}{std::numeric\_limits<T>::max}}();}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00201}00201       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00202}00202       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00203}\mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a397ae4298d7eee21de990da3d5b5757d}{00203}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{static} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a397ae4298d7eee21de990da3d5b5757d}{of}}() noexcept(}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00204}00204           noexcept(\mbox{\hyperlink{namespacestd}{std}}::numeric\_limits<T>::\mbox{\hyperlink{namespacekblib_1_1nums_a64067ecc4167ce1cfe32860ef5c1dc47}{max}}())) \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00205}00205          \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_1_1nums_a64067ecc4167ce1cfe32860ef5c1dc47}{std::numeric\_limits<T>::max}}();}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00206}00206       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00207}00207 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00211}00211       \textcolor{keyword}{template} <\textcolor{keyword}{typename} L, \textcolor{keyword}{typename} R>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00212}\mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a5d732abc9e05f431eb75662a82acfc96}{00212}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a5d732abc9e05f431eb75662a82acfc96}{operator()}}(L\&\& lhs, R\&\& rhs) \textcolor{keyword}{const} \textcolor{keyword}{noexcept}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00213}00213           -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00214}00214          \textcolor{keywordflow}{return} std::less<>\{\}(lhs, rhs) ? std::forward<R>(rhs)}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00215}00215                                         : std::forward<L>(lhs);}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00216}00216       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00217}00217 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00218}\mbox{\hyperlink{structkblib_1_1nums_1_1max__t_ac2b12a682562ce245dfbc1da9ee20bbd}{00218}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1max__t_ac2b12a682562ce245dfbc1da9ee20bbd}{operator==}}(\mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00219}00219           -\/> std::true\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00220}00220          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00221}00221       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00222}\mbox{\hyperlink{structkblib_1_1nums_1_1max__t_aa22d76f7a32800f978491a7f3615cc49}{00222}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1max__t_aa22d76f7a32800f978491a7f3615cc49}{operator!=}}(\mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00223}00223           -\/> std::false\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00224}00224          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00225}00225       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00226}\mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a9f9d12c8f3d78eeaa1f15fa8515c4069}{00226}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a9f9d12c8f3d78eeaa1f15fa8515c4069}{operator<}}(\mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00227}00227           -\/> std::false\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00228}00228          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00229}00229       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00230}\mbox{\hyperlink{structkblib_1_1nums_1_1max__t_ab72f69a257ae94777f581f61bf89dc08}{00230}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1max__t_ab72f69a257ae94777f581f61bf89dc08}{operator>}}(\mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00231}00231           -\/> std::false\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00232}00232          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00233}00233       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00234}\mbox{\hyperlink{structkblib_1_1nums_1_1max__t_aa9ae39f427ac865cc9d8a5d5ce23f8e6}{00234}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1max__t_aa9ae39f427ac865cc9d8a5d5ce23f8e6}{operator<=}}(\mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00235}00235           -\/> std::true\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00236}00236          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00237}00237       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00238}\mbox{\hyperlink{structkblib_1_1nums_1_1max__t_aaf1ec36ebb4e0b07eae4fd8b22f2192d}{00238}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1max__t_aaf1ec36ebb4e0b07eae4fd8b22f2192d}{operator>=}}(\mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00239}00239           -\/> std::true\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00240}00240          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00241}00241       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00242}00242 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00243}00243       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00244}\mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a134e65ce04393fc8520cbda33693008a}{00244}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a134e65ce04393fc8520cbda33693008a}{operator==}}(T t, \mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00245}00245          \textcolor{keywordflow}{return} t == of<T>();}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00246}00246       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00247}00247       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00248}\mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a5d03e3edc37ce94ef200a9d9f4bd9a09}{00248}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a5d03e3edc37ce94ef200a9d9f4bd9a09}{operator==}}(\mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}, T t) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00249}00249          \textcolor{keywordflow}{return} t == of<T>();}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00250}00250       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00251}00251       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00252}\mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a12556ed16c7a3e138b4e667e2e67434e}{00252}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a12556ed16c7a3e138b4e667e2e67434e}{operator!=}}(T t, \mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00253}00253          \textcolor{keywordflow}{return} t != of<T>();}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00254}00254       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00255}00255       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00256}\mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a7a10e92175cdfa21e2c690455f324c03}{00256}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a7a10e92175cdfa21e2c690455f324c03}{operator!=}}(\mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}, T t) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00257}00257          \textcolor{keywordflow}{return} t != of<T>();}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00258}00258       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00259}00259 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00260}00260       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00261}\mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a51ba122c16b3b5cc8129395771900e86}{00261}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a51ba122c16b3b5cc8129395771900e86}{operator<}}(T t, \mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00262}00262          \textcolor{keywordflow}{return} t < of<T>();}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00263}00263       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00264}00264       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00265}\mbox{\hyperlink{structkblib_1_1nums_1_1max__t_af3045b82c99033280d68e284a6a6237e}{00265}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1max__t_af3045b82c99033280d68e284a6a6237e}{operator<}}(\mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}, T t) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00266}00266          \textcolor{keywordflow}{return} of<T>() < t;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00267}00267       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00268}00268       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00269}\mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a4b7281a0fd4498ddf9c30ab1206f1009}{00269}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a4b7281a0fd4498ddf9c30ab1206f1009}{operator>}}(T t, \mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00270}00270          \textcolor{keywordflow}{return} t > of<T>();}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00271}00271       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00272}00272       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00273}\mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a2081056093ad027ab815ffe0d08d71b2}{00273}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a2081056093ad027ab815ffe0d08d71b2}{operator>}}(\mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}, T t) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00274}00274          \textcolor{keywordflow}{return} of<T>() > t;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00275}00275       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00276}00276 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00277}00277       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00278}\mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a62ba2088f5366eb38276b211fce36736}{00278}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a62ba2088f5366eb38276b211fce36736}{operator<=}}(T t, \mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00279}00279          \textcolor{keywordflow}{return} t <= of<T>();}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00280}00280       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00281}00281       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00282}\mbox{\hyperlink{structkblib_1_1nums_1_1max__t_af959070d28688d6a857f4681f42a102d}{00282}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1max__t_af959070d28688d6a857f4681f42a102d}{operator<=}}(\mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}, T t) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00283}00283          \textcolor{keywordflow}{return} of<T>() <= t;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00284}00284       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00285}00285       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00286}\mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a5aab49ee6946289d885cde9451c386c7}{00286}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a5aab49ee6946289d885cde9451c386c7}{operator>=}}(T t, \mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00287}00287          \textcolor{keywordflow}{return} t >= of<T>();}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00288}00288       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00289}00289       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00290}\mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a0f1c4746c8ee68ac4ce5f3a0558f6d4d}{00290}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1max__t_a0f1c4746c8ee68ac4ce5f3a0558f6d4d}{operator>=}}(\mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}, T t) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00291}00291          \textcolor{keywordflow}{return} of<T>() >= t;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00292}00292       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00293}00293 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00294}00294    \} \mbox{\hyperlink{namespacekblib_1_1nums_a64067ecc4167ce1cfe32860ef5c1dc47}{max}}; }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00306}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{00306}}    \textcolor{keyword}{constexpr} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00307}00307       template <typename T, enable\_if\_t<std::numeric\_limits<T>::is\_specialized,}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00308}00308                                         \textcolor{keywordtype}{void}>* = \textcolor{keyword}{nullptr}>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00309}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a44e63b011b5a239ebd71f443ea34e7fa}{00309}}       \textcolor{keyword}{constexpr} \textcolor{comment}{/* implicit*/} \textcolor{keyword}{operator} T() const}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00310}00310           noexcept(noexcept(\mbox{\hyperlink{namespacestd}{std}}::numeric\_limits<T>::\mbox{\hyperlink{namespacekblib_1_1nums_a24555c4b07301e176bf192adf4e80499}{min}}())) \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00311}00311          \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_1_1nums_a24555c4b07301e176bf192adf4e80499}{std::numeric\_limits<T>::min}}();}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00312}00312       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00313}00313       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00314}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a7c84fda17a93f564e3122d98a1517cb0}{00314}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{static} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a7c84fda17a93f564e3122d98a1517cb0}{of}}() noexcept(}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00315}00315           noexcept(\mbox{\hyperlink{namespacestd}{std}}::numeric\_limits<T>::\mbox{\hyperlink{namespacekblib_1_1nums_a24555c4b07301e176bf192adf4e80499}{min}}())) \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00316}00316          \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_1_1nums_a24555c4b07301e176bf192adf4e80499}{std::numeric\_limits<T>::min}}();}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00317}00317       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00318}00318 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00322}00322       \textcolor{keyword}{template} <\textcolor{keyword}{typename} L, \textcolor{keyword}{typename} R>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00323}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a92b6225ea900c76a19c90fa57e15de75}{00323}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a92b6225ea900c76a19c90fa57e15de75}{operator()}}(L\&\& lhs, R\&\& rhs) \textcolor{keyword}{const} \textcolor{keyword}{noexcept}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00324}00324           -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00325}00325          \textcolor{keywordflow}{return} std::less<>\{\}(lhs, rhs) ? std::forward<R>(lhs)}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00326}00326                                         : std::forward<L>(rhs);}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00327}00327       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00328}00328 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00329}00329       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00330}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a53374f62c8580285d816745b9cfba023}{00330}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a53374f62c8580285d816745b9cfba023}{operator==}}(T t, \mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00331}00331          \textcolor{keywordflow}{return} t == of<T>();}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00332}00332       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00333}00333       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00334}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a6eccad0a11052faa31d002c190743e63}{00334}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a6eccad0a11052faa31d002c190743e63}{operator==}}(\mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}, T t) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00335}00335          \textcolor{keywordflow}{return} t == of<T>();}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00336}00336       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00337}00337       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00338}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a96470d4f988c3bf43600465af195c39d}{00338}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a96470d4f988c3bf43600465af195c39d}{operator!=}}(T t, \mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00339}00339          \textcolor{keywordflow}{return} t != of<T>();}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00340}00340       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00341}00341       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00342}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a7bf35df1862f28711142533a56315db4}{00342}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a7bf35df1862f28711142533a56315db4}{operator!=}}(\mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}, T t) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00343}00343          \textcolor{keywordflow}{return} t != of<T>();}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00344}00344       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00345}00345 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00346}00346       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00347}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a6bcd8669e0b8abbee989f8c2eaf23c36}{00347}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a6bcd8669e0b8abbee989f8c2eaf23c36}{operator<}}(T t, \mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00348}00348          \textcolor{keywordflow}{return} t < of<T>();}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00349}00349       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00350}00350       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00351}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a589efe5dfbcdd70ea06e138e4ae3cddb}{00351}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a589efe5dfbcdd70ea06e138e4ae3cddb}{operator<}}(\mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}, T t) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00352}00352          \textcolor{keywordflow}{return} of<T>() < t;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00353}00353       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00354}00354       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00355}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a014ac63fd2f4e57381839016ce43fe04}{00355}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a014ac63fd2f4e57381839016ce43fe04}{operator>}}(T t, \mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00356}00356          \textcolor{keywordflow}{return} t > of<T>();}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00357}00357       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00358}00358       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00359}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a25af7c6d8b368f5dd308ad316e1c6e44}{00359}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a25af7c6d8b368f5dd308ad316e1c6e44}{operator>}}(\mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}, T t) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00360}00360          \textcolor{keywordflow}{return} of<T>() > t;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00361}00361       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00362}00362 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00363}00363       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00364}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a20e5dbeaaad11de836814ea49137cc09}{00364}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a20e5dbeaaad11de836814ea49137cc09}{operator<=}}(T t, \mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00365}00365          \textcolor{keywordflow}{return} t <= of<T>();}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00366}00366       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00367}00367       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00368}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_afd6fb3cc393257ef773928606110e851}{00368}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_afd6fb3cc393257ef773928606110e851}{operator<=}}(\mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}, T t) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00369}00369          \textcolor{keywordflow}{return} of<T>() <= t;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00370}00370       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00371}00371       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00372}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a02ff99ee7e78664453e44ec7138286ba}{00372}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a02ff99ee7e78664453e44ec7138286ba}{operator>=}}(T t, \mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00373}00373          \textcolor{keywordflow}{return} t >= of<T>();}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00374}00374       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00375}00375       \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00376}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_ad6082c49ef1d40ee365a706ebcaea286}{00376}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_ad6082c49ef1d40ee365a706ebcaea286}{operator>=}}(\mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}, T t) -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00377}00377          \textcolor{keywordflow}{return} of<T>() >= t;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00378}00378       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00379}00379 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00380}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_ad518a2a896b4d048df1f9b51716e98db}{00380}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_ad518a2a896b4d048df1f9b51716e98db}{operator==}}(\mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00381}00381           -\/> std::true\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00382}00382          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00383}00383       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00384}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a14e7fb6d723ebe5b963daa92745a6ffb}{00384}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a14e7fb6d723ebe5b963daa92745a6ffb}{operator!=}}(\mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00385}00385           -\/> std::false\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00386}00386          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00387}00387       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00388}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a55e6866f54789179a0a69def6bb19c84}{00388}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a55e6866f54789179a0a69def6bb19c84}{operator<}}(\mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00389}00389           -\/> std::false\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00390}00390          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00391}00391       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00392}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a88f5e374acd0e0e0413e82278334419f}{00392}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a88f5e374acd0e0e0413e82278334419f}{operator>}}(\mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00393}00393           -\/> std::false\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00394}00394          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00395}00395       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00396}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a007d07cae1ee3ce46bcbc7e1ca40f2c9}{00396}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a007d07cae1ee3ce46bcbc7e1ca40f2c9}{operator<=}}(\mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00397}00397           -\/> std::true\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00398}00398          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00399}00399       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00400}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_afec60b093dde3bdc70c6a6df35c9ad79}{00400}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_afec60b093dde3bdc70c6a6df35c9ad79}{operator>=}}(\mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00401}00401           -\/> std::true\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00402}00402          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00403}00403       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00404}00404 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00405}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a566a735188de22d505d1a2e4cae65932}{00405}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a566a735188de22d505d1a2e4cae65932}{operator==}}(\mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00406}00406           -\/> std::false\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00407}00407          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00408}00408       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00409}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a286d607a7dfc1fe35bc5a2ab83f7e7ef}{00409}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a286d607a7dfc1fe35bc5a2ab83f7e7ef}{operator==}}(\mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00410}00410           -\/> std::false\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00411}00411          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00412}00412       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00413}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_adf10acb72b7171f70e826b3a251f76ad}{00413}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_adf10acb72b7171f70e826b3a251f76ad}{operator!=}}(\mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00414}00414           -\/> std::true\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00415}00415          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00416}00416       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00417}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_afce59781d8b32d98b8b1db7042ba9bcd}{00417}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_afce59781d8b32d98b8b1db7042ba9bcd}{operator!=}}(\mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00418}00418           -\/> std::true\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00419}00419          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00420}00420       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00421}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_afe74802aa4b0df95db50398bf107248b}{00421}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_afe74802aa4b0df95db50398bf107248b}{operator<}}(\mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00422}00422           -\/> std::false\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00423}00423          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00424}00424       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00425}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a2a7f4832ee798ae81a46319c1afc999f}{00425}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a2a7f4832ee798ae81a46319c1afc999f}{operator<}}(\mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00426}00426           -\/> std::true\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00427}00427          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00428}00428       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00429}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a0a4fb6f968ca4bc6174c8462ef7bd988}{00429}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a0a4fb6f968ca4bc6174c8462ef7bd988}{operator>}}(\mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00430}00430           -\/> std::true\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00431}00431          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00432}00432       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00433}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a69c09b6a5a7e0bd19db0e458b47676a6}{00433}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a69c09b6a5a7e0bd19db0e458b47676a6}{operator>}}(\mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00434}00434           -\/> std::false\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00435}00435          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00436}00436       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00437}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_af0e666eede118398ea1ec313422bac6f}{00437}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_af0e666eede118398ea1ec313422bac6f}{operator<=}}(\mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00438}00438           -\/> std::false\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00439}00439          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00440}00440       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00441}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_ac098679aa2ed478a28470d48ba3c2840}{00441}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_ac098679aa2ed478a28470d48ba3c2840}{operator<=}}(\mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00442}00442           -\/> std::true\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00443}00443          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00444}00444       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00445}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a4a63f65abc0bab23742c162734a07eb0}{00445}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a4a63f65abc0bab23742c162734a07eb0}{operator>=}}(\mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00446}00446           -\/> std::true\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00447}00447          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00448}00448       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00449}\mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a65e9117591ba5e51d911af0479c8894a}{00449}}       \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1nums_1_1min__t_a65e9117591ba5e51d911af0479c8894a}{operator>=}}(\mbox{\hyperlink{structkblib_1_1nums_1_1min__t}{min\_t}}, \mbox{\hyperlink{structkblib_1_1nums_1_1max__t}{max\_t}})}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00450}00450           -\/> std::false\_type \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00451}00451          \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00452}00452       \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00453}00453 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00454}00454    \} \mbox{\hyperlink{namespacekblib_1_1nums_a24555c4b07301e176bf192adf4e80499}{min}}; }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00457}00457 \} \textcolor{comment}{// namespace nums}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00458}00458 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00459}00459 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T = \textcolor{keywordtype}{double}>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00460}\mbox{\hyperlink{namespacekblib_a6a405377fe79d25ae9ef7a306ee0a32c}{00460}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a6a405377fe79d25ae9ef7a306ee0a32c}{pi}}() -\/> T \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00461}00461    \textcolor{keywordflow}{return} 3.1415926535897932384626433832795028841971693993751l;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00462}00462 \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00463}00463 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T = \textcolor{keywordtype}{double}>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00464}\mbox{\hyperlink{namespacekblib_aa2267a7d93c70cf8e895349e67c33134}{00464}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_aa2267a7d93c70cf8e895349e67c33134}{tau}}() -\/> T \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00465}00465    \textcolor{keywordflow}{return} 2 * pi<T>;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00466}00466 \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00467}00467 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T = \textcolor{keywordtype}{double}>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00468}\mbox{\hyperlink{namespacekblib_a536badb265b62a85034f48e0eac76a1b}{00468}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a536badb265b62a85034f48e0eac76a1b}{e}}() -\/> T \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00469}00469    \textcolor{keywordflow}{return} 2.7182818284590452353602874713526624977572470937000l;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00470}00470 \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00471}00471 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T = \textcolor{keywordtype}{double}>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00472}\mbox{\hyperlink{namespacekblib_a34b4ea421aff0111137a362312e102b3}{00472}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a34b4ea421aff0111137a362312e102b3}{root\_2}}() -\/> T \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00473}00473    \textcolor{keywordflow}{return} 1.4142135623730950488016887242096980785696718753769l;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00474}00474 \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00475}00475 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T = \textcolor{keywordtype}{double}>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00476}\mbox{\hyperlink{namespacekblib_a92ed80d087175fc1c71cb1894b55671a}{00476}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a92ed80d087175fc1c71cb1894b55671a}{phi}}() -\/> T \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00477}00477    \textcolor{keywordflow}{return} 1.6180339887498948482045868343656381177203091798058l;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00478}00478 \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00479}00479 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00480}00480 \textcolor{comment}{// saturating to\_unsigned}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00481}00481 \textcolor{keyword}{template} <\textcolor{keyword}{typename} A, \textcolor{keyword}{typename} F>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00482}\mbox{\hyperlink{namespacekblib_ab43fe07bcd0ea78681fada07d8b9016b}{00482}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ab43fe07bcd0ea78681fada07d8b9016b}{saturating\_cast}}(F x) \textcolor{keyword}{noexcept}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00483}00483     -\/> \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t<std::is\_integral<A>::value}} and std::is\_integral<F>::value}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00484}00484                        and std::is\_unsigned<A>::value,}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00485}00485                    A> \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00486}00486    \textcolor{keywordflow}{if} (x < 0) \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00487}00487       \textcolor{keywordflow}{return} 0;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00488}00488    \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (\mbox{\hyperlink{namespacekblib_af9e250fffa2922e623baa08aa8994f54}{to\_unsigned}}(x) > A(\mbox{\hyperlink{namespacekblib_1_1nums_a64067ecc4167ce1cfe32860ef5c1dc47}{max}})) \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00489}00489       \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_1_1nums_a64067ecc4167ce1cfe32860ef5c1dc47}{max}};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00490}00490    \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00491}00491       \textcolor{keywordflow}{return} \textcolor{keyword}{static\_cast<}A\textcolor{keyword}{>}(x);}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00492}00492    \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00493}00493 \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00494}00494 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00495}00495 \textcolor{comment}{// saturating to\_signed(signed)}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00496}00496 \textcolor{keyword}{template} <\textcolor{keyword}{typename} A, \textcolor{keyword}{typename} F>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00497}00497 \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ab43fe07bcd0ea78681fada07d8b9016b}{saturating\_cast}}(F x) \textcolor{keyword}{noexcept}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00498}00498     -\/> enable\_if\_t<std::is\_integral<A>::value and std::is\_integral<F>::value}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00499}00499                        and std::is\_signed<A>::value}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00500}00500                        and std::is\_signed<F>::value,}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00501}00501                    A> \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00502}00502    \textcolor{keywordflow}{if} (x < A(\mbox{\hyperlink{namespacekblib_1_1nums_a24555c4b07301e176bf192adf4e80499}{min}})) \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00503}00503       \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_1_1nums_a24555c4b07301e176bf192adf4e80499}{min}};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00504}00504    \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (\mbox{\hyperlink{namespacekblib_af9e250fffa2922e623baa08aa8994f54}{to\_unsigned}}(x) > A(\mbox{\hyperlink{namespacekblib_1_1nums_a64067ecc4167ce1cfe32860ef5c1dc47}{max}})) \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00505}00505       \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_1_1nums_a64067ecc4167ce1cfe32860ef5c1dc47}{max}};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00506}00506    \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00507}00507       \textcolor{keywordflow}{return} x;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00508}00508    \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00509}00509 \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00510}00510 \textcolor{comment}{// saturating to\_signed(unsigned)}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00511}00511 \textcolor{keyword}{template} <\textcolor{keyword}{typename} A, \textcolor{keyword}{typename} F>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00512}00512 \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ab43fe07bcd0ea78681fada07d8b9016b}{saturating\_cast}}(F x) \textcolor{keyword}{noexcept}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00513}00513     -\/> enable\_if\_t<std::is\_integral<A>::value and std::is\_integral<F>::value}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00514}00514                        and std::is\_signed<A>::value}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00515}00515                        and std::is\_unsigned<F>::value,}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00516}00516                    A> \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00517}00517    \textcolor{keywordflow}{if} (x > \mbox{\hyperlink{namespacekblib_af9e250fffa2922e623baa08aa8994f54}{to\_unsigned}}(A(\mbox{\hyperlink{namespacekblib_1_1nums_a64067ecc4167ce1cfe32860ef5c1dc47}{max}}))) \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00518}00518       \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_1_1nums_a64067ecc4167ce1cfe32860ef5c1dc47}{max}};}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00519}00519    \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00520}00520       \textcolor{keywordflow}{return} x;}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00521}00521    \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00522}00522 \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00523}00523 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00526}00526 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00536}00536 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} F>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00537}\mbox{\hyperlink{namespacekblib_a21af775319a41ef201e83f51c227f66a}{00537}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a21af775319a41ef201e83f51c227f66a}{quantize\_step}}(F low, F delta, F val) \textcolor{keyword}{noexcept}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00538}00538     -\/> T \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00539}00539    \textcolor{keyword}{static\_assert}(std::is\_unsigned<T>::value, \textcolor{stringliteral}{"{}Destination must be unsigned."{}});}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00540}00540    \textcolor{keywordflow}{return} \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}((val -\/ low) * \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(\mbox{\hyperlink{namespacekblib_1_1nums_a64067ecc4167ce1cfe32860ef5c1dc47}{max}}) * delta);}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00541}00541 \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00542}00542 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00552}00552 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} F>}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00553}\mbox{\hyperlink{namespacekblib_aa279b601e1bea7b5ae3f50954d398bb2}{00553}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_aa279b601e1bea7b5ae3f50954d398bb2}{quantize\_range}}(F low, F high, F val) \textcolor{keyword}{noexcept}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00554}00554     -\/> T \{}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00555}00555    \textcolor{keyword}{static\_assert}(std::is\_unsigned<T>::value, \textcolor{stringliteral}{"{}Destination must be unsigned."{}});}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00556}00556    \textcolor{keyword}{auto} delta = (high -\/ low) / \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(\mbox{\hyperlink{namespacekblib_1_1nums_a64067ecc4167ce1cfe32860ef5c1dc47}{max}});}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00557}00557    \textcolor{keywordflow}{return} \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}((val -\/ low) * \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(\mbox{\hyperlink{namespacekblib_1_1nums_a64067ecc4167ce1cfe32860ef5c1dc47}{max}}) * delta);}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00558}00558 \}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00559}00559 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00560}00560 \} \textcolor{comment}{// namespace KBLIB\_NS}}
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00561}00561 }
\DoxyCodeLine{\Hypertarget{stats_8h_source_l00562}00562 \textcolor{preprocessor}{\#endif }\textcolor{comment}{// KBLIB\_STATS\_H}}

\end{DoxyCode}
