\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 .}} \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 }} \DoxyCodeLine{\Hypertarget{stats_8h_source_l00035}00035 \textcolor{preprocessor}{\#include }} \DoxyCodeLine{\Hypertarget{stats_8h_source_l00036}00036 \textcolor{preprocessor}{\#include }} \DoxyCodeLine{\Hypertarget{stats_8h_source_l00037}00037 \textcolor{preprocessor}{\#include }} \DoxyCodeLine{\Hypertarget{stats_8h_source_l00038}00038 \textcolor{preprocessor}{\#include }} \DoxyCodeLine{\Hypertarget{stats_8h_source_l00039}00039 \textcolor{preprocessor}{\#include }} \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;} \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::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}} 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 () + 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}} \{} \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()), std::is\_unsigned::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}} 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();} \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::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::\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::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::\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::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(rhs)} \DoxyCodeLine{\Hypertarget{stats_8h_source_l00215}00215 : std::forward(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();} \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();} \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();} \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();} \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();} \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;} \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();} \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;} \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();} \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;} \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();} \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;} \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 ::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::\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::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::\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::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(lhs)} \DoxyCodeLine{\Hypertarget{stats_8h_source_l00326}00326 : std::forward(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();} \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();} \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();} \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();} \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();} \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;} \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();} \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;} \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();} \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;} \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();} \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;} \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;} \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::value}} and std::is\_integral::value} \DoxyCodeLine{\Hypertarget{stats_8h_source_l00484}00484 and std::is\_unsigned::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::value and std::is\_integral::value} \DoxyCodeLine{\Hypertarget{stats_8h_source_l00499}00499 and std::is\_signed::value} \DoxyCodeLine{\Hypertarget{stats_8h_source_l00500}00500 and std::is\_signed::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::value and std::is\_integral::value} \DoxyCodeLine{\Hypertarget{stats_8h_source_l00514}00514 and std::is\_signed::value} \DoxyCodeLine{\Hypertarget{stats_8h_source_l00515}00515 and std::is\_unsigned::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::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::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}