2026-09-24 14:08:32 -06:00
/// @file grotto/gadgets/logarithm/ilogb.hpp
/// @author Ryan Henry <ryan.henry@ucalgary.ca>
2026-09-24 23:18:10 -06:00
/// @brief Cleartext reference for `ilogb`.
2026-09-24 14:08:32 -06:00
/// @copyright Copyright (c) 2019-2023 Ryan Henry and others
/// @license Released under a GNU General Public v2.0 (GPLv2) license;
2026-09-24 23:27:47 -06:00
/// see [LICENSE.md](@ref license) for details.
2026-09-24 14:08:32 -06:00
# ifndef LIBDPF_INCLUDE_GROTTO_GADGETS_LOGARITHM_ILOGB_HPP__
# define LIBDPF_INCLUDE_GROTTO_GADGETS_LOGARITHM_ILOGB_HPP__
# include <cmath>
# include <array>
# include <limits>
# include "grotto/gadget_hints.hpp"
namespace grotto
{
namespace gadgets
{
2026-09-24 23:18:10 -06:00
HEDLEY_DIAGNOSTIC_PUSH
HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED
2026-09-28 05:59:19 -06:00
/// @brief Cleartext `ilogb`.
/// @see grotto::exact_constant
/// @note Straight-line cleartext. Fixed-point evaluation is the symbol in `@see` when that symbol is a LUT or an `eval_*` function.
/// \complexity One evaluation of `operator()` as written in this header. There is no domain scan and no loop. `Θ(1)` time and extra space relative to that expression.
2026-09-24 23:18:10 -06:00
struct HEDLEY_DEPRECATED_FOR ( 2026 , grotto : : exact_constant ) ilogb
2026-09-24 14:08:32 -06:00
{
2026-09-28 05:59:19 -06:00
/// @brief Evaluate the cleartext map.
/// @tparam T argument and result type
/// @param x the input
/// @return the cleartext image of `x`
/// \complexity The body is straight-line. `Θ(1)` time and extra space.
2026-09-24 14:08:32 -06:00
template < typename T >
T operator ( ) ( T x )
{
if ( x < = 0 ) return 0 ; // TODO
return std : : ilogb ( static_cast < double > ( x ) ) ;
}
} ;
template < >
struct gadget_hints < grotto : : gadgets : : ilogb >
{
static constexpr double min = std : : exp2 ( - 63 ) ;
static constexpr double max = std : : numeric_limits < double > : : max ( ) ;
static constexpr double poles [ ] = { } ;
static constexpr double interesting_points [ ] = { 0 } ;
static constexpr unsigned degree = 0 ;
static constexpr bool has_canonical_representation = true ;
static constexpr std : : array < double , 508 > canonical_bounds = {
- 0x1 .0000000000000 p + 0063 , - 0x1 .0000000000000 p + 0063 ,
- 0x1 .0000000000000 p + 0062 , - 0x1 .0000000000000 p + 0062 ,
- 0x1 .0000000000000 p + 0061 , - 0x1 .0000000000000 p + 0061 ,
- 0x1 .0000000000000 p + 0060 , - 0x1 .0000000000000 p + 0060 ,
- 0x1 .0000000000000 p + 005 9 , - 0x1 .0000000000000 p + 005 9 ,
- 0x1 .0000000000000 p + 005 8 , - 0x1 .0000000000000 p + 005 8 ,
- 0x1 .0000000000000 p + 0057 , - 0x1 .0000000000000 p + 0057 ,
- 0x1 .0000000000000 p + 0056 , - 0x1 .0000000000000 p + 0056 ,
- 0x1 .0000000000000 p + 0055 , - 0x1 .0000000000000 p + 0055 ,
- 0x1 .0000000000000 p + 0054 , - 0x1 .0000000000000 p + 0054 ,
- 0x1 .0000000000000 p + 0053 , - 0x1 .0000000000000 p + 0053 ,
- 0x1 .0000000000000 p + 0052 , - 0x1 .0000000000000 p + 0052 ,
- 0x1 .0000000000000 p + 0051 , - 0x1 .0000000000000 p + 0051 ,
- 0x1 .0000000000000 p + 0050 , - 0x1 .0000000000000 p + 0050 ,
- 0x1 .0000000000000 p + 004 9 , - 0x1 .0000000000000 p + 004 9 ,
- 0x1 .0000000000000 p + 004 8 , - 0x1 .0000000000000 p + 004 8 ,
- 0x1 .0000000000000 p + 0047 , - 0x1 .0000000000000 p + 0047 ,
- 0x1 .0000000000000 p + 0046 , - 0x1 .0000000000000 p + 0046 ,
- 0x1 .0000000000000 p + 0045 , - 0x1 .0000000000000 p + 0045 ,
- 0x1 .0000000000000 p + 0044 , - 0x1 .0000000000000 p + 0044 ,
- 0x1 .0000000000000 p + 0043 , - 0x1 .0000000000000 p + 0043 ,
- 0x1 .0000000000000 p + 0042 , - 0x1 .0000000000000 p + 0042 ,
- 0x1 .0000000000000 p + 0041 , - 0x1 .0000000000000 p + 0041 ,
- 0x1 .0000000000000 p + 0040 , - 0x1 .0000000000000 p + 0040 ,
- 0x1 .0000000000000 p + 003 9 , - 0x1 .0000000000000 p + 003 9 ,
- 0x1 .0000000000000 p + 003 8 , - 0x1 .0000000000000 p + 003 8 ,
- 0x1 .0000000000000 p + 0037 , - 0x1 .0000000000000 p + 0037 ,
- 0x1 .0000000000000 p + 0036 , - 0x1 .0000000000000 p + 0036 ,
- 0x1 .0000000000000 p + 0035 , - 0x1 .0000000000000 p + 0035 ,
- 0x1 .0000000000000 p + 0034 , - 0x1 .0000000000000 p + 0034 ,
- 0x1 .0000000000000 p + 0033 , - 0x1 .0000000000000 p + 0033 ,
- 0x1 .0000000000000 p + 0032 , - 0x1 .0000000000000 p + 0032 ,
- 0x1 .0000000000000 p + 0031 , - 0x1 .0000000000000 p + 0031 ,
- 0x1 .0000000000000 p + 0030 , - 0x1 .0000000000000 p + 0030 ,
- 0x1 .0000000000000 p + 002 9 , - 0x1 .0000000000000 p + 002 9 ,
- 0x1 .0000000000000 p + 002 8 , - 0x1 .0000000000000 p + 002 8 ,
- 0x1 .0000000000000 p + 0027 , - 0x1 .0000000000000 p + 0027 ,
- 0x1 .0000000000000 p + 0026 , - 0x1 .0000000000000 p + 0026 ,
- 0x1 .0000000000000 p + 0025 , - 0x1 .0000000000000 p + 0025 ,
- 0x1 .0000000000000 p + 0024 , - 0x1 .0000000000000 p + 0024 ,
- 0x1 .0000000000000 p + 0023 , - 0x1 .0000000000000 p + 0023 ,
- 0x1 .0000000000000 p + 0022 , - 0x1 .0000000000000 p + 0022 ,
- 0x1 .0000000000000 p + 0021 , - 0x1 .0000000000000 p + 0021 ,
- 0x1 .0000000000000 p + 0020 , - 0x1 .0000000000000 p + 0020 ,
- 0x1 .0000000000000 p + 001 9 , - 0x1 .0000000000000 p + 001 9 ,
- 0x1 .0000000000000 p + 001 8 , - 0x1 .0000000000000 p + 001 8 ,
- 0x1 .0000000000000 p + 0017 , - 0x1 .0000000000000 p + 0017 ,
- 0x1 .0000000000000 p + 0016 , - 0x1 .0000000000000 p + 0016 ,
- 0x1 .0000000000000 p + 0015 , - 0x1 .0000000000000 p + 0015 ,
- 0x1 .0000000000000 p + 0014 , - 0x1 .0000000000000 p + 0014 ,
- 0x1 .0000000000000 p + 0013 , - 0x1 .0000000000000 p + 0013 ,
- 0x1 .0000000000000 p + 0012 , - 0x1 .0000000000000 p + 0012 ,
- 0x1 .0000000000000 p + 0011 , - 0x1 .0000000000000 p + 0011 ,
- 0x1 .0000000000000 p + 0010 , - 0x1 .0000000000000 p + 0010 ,
- 0x1 .0000000000000 p + 000 9 , - 0x1 .0000000000000 p + 000 9 ,
- 0x1 .0000000000000 p + 000 8 , - 0x1 .0000000000000 p + 000 8 ,
- 0x1 .0000000000000 p + 0007 , - 0x1 .0000000000000 p + 0007 ,
- 0x1 .0000000000000 p + 0006 , - 0x1 .0000000000000 p + 0006 ,
- 0x1 .0000000000000 p + 0005 , - 0x1 .0000000000000 p + 0005 ,
- 0x1 .0000000000000 p + 0004 , - 0x1 .0000000000000 p + 0004 ,
- 0x1 .0000000000000 p + 0003 , - 0x1 .0000000000000 p + 0003 ,
- 0x1 .0000000000000 p + 0002 , - 0x1 .0000000000000 p + 0002 ,
- 0x1 .0000000000000 p + 0001 , - 0x1 .0000000000000 p + 0001 ,
- 0x1 .0000000000000 p + 0000 , - 0x1 .0000000000000 p + 0000 ,
- 0x1 .0000000000000 p - 0001 , - 0x1 .0000000000000 p - 0001 ,
- 0x1 .0000000000000 p - 0002 , - 0x1 .0000000000000 p - 0002 ,
- 0x1 .0000000000000 p - 0003 , - 0x1 .0000000000000 p - 0003 ,
- 0x1 .0000000000000 p - 0004 , - 0x1 .0000000000000 p - 0004 ,
- 0x1 .0000000000000 p - 0005 , - 0x1 .0000000000000 p - 0005 ,
- 0x1 .0000000000000 p - 0006 , - 0x1 .0000000000000 p - 0006 ,
- 0x1 .0000000000000 p - 0007 , - 0x1 .0000000000000 p - 0007 ,
- 0x1 .0000000000000 p - 000 8 , - 0x1 .0000000000000 p - 000 8 ,
- 0x1 .0000000000000 p - 000 9 , - 0x1 .0000000000000 p - 000 9 ,
- 0x1 .0000000000000 p - 0010 , - 0x1 .0000000000000 p - 0010 ,
- 0x1 .0000000000000 p - 0011 , - 0x1 .0000000000000 p - 0011 ,
- 0x1 .0000000000000 p - 0012 , - 0x1 .0000000000000 p - 0012 ,
- 0x1 .0000000000000 p - 0013 , - 0x1 .0000000000000 p - 0013 ,
- 0x1 .0000000000000 p - 0014 , - 0x1 .0000000000000 p - 0014 ,
- 0x1 .0000000000000 p - 0015 , - 0x1 .0000000000000 p - 0015 ,
- 0x1 .0000000000000 p - 0016 , - 0x1 .0000000000000 p - 0016 ,
- 0x1 .0000000000000 p - 0017 , - 0x1 .0000000000000 p - 0017 ,
- 0x1 .0000000000000 p - 001 8 , - 0x1 .0000000000000 p - 001 8 ,
- 0x1 .0000000000000 p - 001 9 , - 0x1 .0000000000000 p - 001 9 ,
- 0x1 .0000000000000 p - 0020 , - 0x1 .0000000000000 p - 0020 ,
- 0x1 .0000000000000 p - 0021 , - 0x1 .0000000000000 p - 0021 ,
- 0x1 .0000000000000 p - 0022 , - 0x1 .0000000000000 p - 0022 ,
- 0x1 .0000000000000 p - 0023 , - 0x1 .0000000000000 p - 0023 ,
- 0x1 .0000000000000 p - 0024 , - 0x1 .0000000000000 p - 0024 ,
- 0x1 .0000000000000 p - 0025 , - 0x1 .0000000000000 p - 0025 ,
- 0x1 .0000000000000 p - 0026 , - 0x1 .0000000000000 p - 0026 ,
- 0x1 .0000000000000 p - 0027 , - 0x1 .0000000000000 p - 0027 ,
- 0x1 .0000000000000 p - 002 8 , - 0x1 .0000000000000 p - 002 8 ,
- 0x1 .0000000000000 p - 002 9 , - 0x1 .0000000000000 p - 002 9 ,
- 0x1 .0000000000000 p - 0030 , - 0x1 .0000000000000 p - 0030 ,
- 0x1 .0000000000000 p - 0031 , - 0x1 .0000000000000 p - 0031 ,
- 0x1 .0000000000000 p - 0032 , - 0x1 .0000000000000 p - 0032 ,
- 0x1 .0000000000000 p - 0033 , - 0x1 .0000000000000 p - 0033 ,
- 0x1 .0000000000000 p - 0034 , - 0x1 .0000000000000 p - 0034 ,
- 0x1 .0000000000000 p - 0035 , - 0x1 .0000000000000 p - 0035 ,
- 0x1 .0000000000000 p - 0036 , - 0x1 .0000000000000 p - 0036 ,
- 0x1 .0000000000000 p - 0037 , - 0x1 .0000000000000 p - 0037 ,
- 0x1 .0000000000000 p - 003 8 , - 0x1 .0000000000000 p - 003 8 ,
- 0x1 .0000000000000 p - 003 9 , - 0x1 .0000000000000 p - 003 9 ,
- 0x1 .0000000000000 p - 0040 , - 0x1 .0000000000000 p - 0040 ,
- 0x1 .0000000000000 p - 0041 , - 0x1 .0000000000000 p - 0041 ,
- 0x1 .0000000000000 p - 0042 , - 0x1 .0000000000000 p - 0042 ,
- 0x1 .0000000000000 p - 0043 , - 0x1 .0000000000000 p - 0043 ,
- 0x1 .0000000000000 p - 0044 , - 0x1 .0000000000000 p - 0044 ,
- 0x1 .0000000000000 p - 0045 , - 0x1 .0000000000000 p - 0045 ,
- 0x1 .0000000000000 p - 0046 , - 0x1 .0000000000000 p - 0046 ,
- 0x1 .0000000000000 p - 0047 , - 0x1 .0000000000000 p - 0047 ,
- 0x1 .0000000000000 p - 004 8 , - 0x1 .0000000000000 p - 004 8 ,
- 0x1 .0000000000000 p - 004 9 , - 0x1 .0000000000000 p - 004 9 ,
- 0x1 .0000000000000 p - 0050 , - 0x1 .0000000000000 p - 0050 ,
- 0x1 .0000000000000 p - 0051 , - 0x1 .0000000000000 p - 0051 ,
- 0x1 .0000000000000 p - 0052 , - 0x1 .0000000000000 p - 0052 ,
- 0x1 .0000000000000 p - 0053 , - 0x1 .0000000000000 p - 0053 ,
- 0x1 .0000000000000 p - 0054 , - 0x1 .0000000000000 p - 0054 ,
- 0x1 .0000000000000 p - 0055 , - 0x1 .0000000000000 p - 0055 ,
- 0x1 .0000000000000 p - 0056 , - 0x1 .0000000000000 p - 0056 ,
- 0x1 .0000000000000 p - 0057 , - 0x1 .0000000000000 p - 0057 ,
- 0x1 .0000000000000 p - 005 8 , - 0x1 .0000000000000 p - 005 8 ,
- 0x1 .0000000000000 p - 005 9 , - 0x1 .0000000000000 p - 005 9 ,
- 0x1 .0000000000000 p - 0060 , - 0x1 .0000000000000 p - 0060 ,
- 0x1 .0000000000000 p - 0061 , - 0x1 .0000000000000 p - 0061 ,
- 0x1 .0000000000000 p - 0062 , - 0x1 .0000000000000 p - 0062 ,
- 0x1 .0000000000000 p - 0063 , - 0x1 .0000000000000 p - 0063 ,
+ 0x0 .0000000000000 p + 0000 , + 0x0 .0000000000000 p + 0000 ,
+ 0x1 .0000000000000 p - 0063 , + 0x1 .0000000000000 p - 0063 ,
+ 0x1 .0000000000000 p - 0062 , + 0x1 .0000000000000 p - 0062 ,
+ 0x1 .0000000000000 p - 0061 , + 0x1 .0000000000000 p - 0061 ,
+ 0x1 .0000000000000 p - 0060 , + 0x1 .0000000000000 p - 0060 ,
+ 0x1 .0000000000000 p - 005 9 , + 0x1 .0000000000000 p - 005 9 ,
+ 0x1 .0000000000000 p - 005 8 , + 0x1 .0000000000000 p - 005 8 ,
+ 0x1 .0000000000000 p - 0057 , + 0x1 .0000000000000 p - 0057 ,
+ 0x1 .0000000000000 p - 0056 , + 0x1 .0000000000000 p - 0056 ,
+ 0x1 .0000000000000 p - 0055 , + 0x1 .0000000000000 p - 0055 ,
+ 0x1 .0000000000000 p - 0054 , + 0x1 .0000000000000 p - 0054 ,
+ 0x1 .0000000000000 p - 0053 , + 0x1 .0000000000000 p - 0053 ,
+ 0x1 .0000000000000 p - 0052 , + 0x1 .0000000000000 p - 0052 ,
+ 0x1 .0000000000000 p - 0051 , + 0x1 .0000000000000 p - 0051 ,
+ 0x1 .0000000000000 p - 0050 , + 0x1 .0000000000000 p - 0050 ,
+ 0x1 .0000000000000 p - 004 9 , + 0x1 .0000000000000 p - 004 9 ,
+ 0x1 .0000000000000 p - 004 8 , + 0x1 .0000000000000 p - 004 8 ,
+ 0x1 .0000000000000 p - 0047 , + 0x1 .0000000000000 p - 0047 ,
+ 0x1 .0000000000000 p - 0046 , + 0x1 .0000000000000 p - 0046 ,
+ 0x1 .0000000000000 p - 0045 , + 0x1 .0000000000000 p - 0045 ,
+ 0x1 .0000000000000 p - 0044 , + 0x1 .0000000000000 p - 0044 ,
+ 0x1 .0000000000000 p - 0043 , + 0x1 .0000000000000 p - 0043 ,
+ 0x1 .0000000000000 p - 0042 , + 0x1 .0000000000000 p - 0042 ,
+ 0x1 .0000000000000 p - 0041 , + 0x1 .0000000000000 p - 0041 ,
+ 0x1 .0000000000000 p - 0040 , + 0x1 .0000000000000 p - 0040 ,
+ 0x1 .0000000000000 p - 003 9 , + 0x1 .0000000000000 p - 003 9 ,
+ 0x1 .0000000000000 p - 003 8 , + 0x1 .0000000000000 p - 003 8 ,
+ 0x1 .0000000000000 p - 0037 , + 0x1 .0000000000000 p - 0037 ,
+ 0x1 .0000000000000 p - 0036 , + 0x1 .0000000000000 p - 0036 ,
+ 0x1 .0000000000000 p - 0035 , + 0x1 .0000000000000 p - 0035 ,
+ 0x1 .0000000000000 p - 0034 , + 0x1 .0000000000000 p - 0034 ,
+ 0x1 .0000000000000 p - 0033 , + 0x1 .0000000000000 p - 0033 ,
+ 0x1 .0000000000000 p - 0032 , + 0x1 .0000000000000 p - 0032 ,
+ 0x1 .0000000000000 p - 0031 , + 0x1 .0000000000000 p - 0031 ,
+ 0x1 .0000000000000 p - 0030 , + 0x1 .0000000000000 p - 0030 ,
+ 0x1 .0000000000000 p - 002 9 , + 0x1 .0000000000000 p - 002 9 ,
+ 0x1 .0000000000000 p - 002 8 , + 0x1 .0000000000000 p - 002 8 ,
+ 0x1 .0000000000000 p - 0027 , + 0x1 .0000000000000 p - 0027 ,
+ 0x1 .0000000000000 p - 0026 , + 0x1 .0000000000000 p - 0026 ,
+ 0x1 .0000000000000 p - 0025 , + 0x1 .0000000000000 p - 0025 ,
+ 0x1 .0000000000000 p - 0024 , + 0x1 .0000000000000 p - 0024 ,
+ 0x1 .0000000000000 p - 0023 , + 0x1 .0000000000000 p - 0023 ,
+ 0x1 .0000000000000 p - 0022 , + 0x1 .0000000000000 p - 0022 ,
+ 0x1 .0000000000000 p - 0021 , + 0x1 .0000000000000 p - 0021 ,
+ 0x1 .0000000000000 p - 0020 , + 0x1 .0000000000000 p - 0020 ,
+ 0x1 .0000000000000 p - 001 9 , + 0x1 .0000000000000 p - 001 9 ,
+ 0x1 .0000000000000 p - 001 8 , + 0x1 .0000000000000 p - 001 8 ,
+ 0x1 .0000000000000 p - 0017 , + 0x1 .0000000000000 p - 0017 ,
+ 0x1 .0000000000000 p - 0016 , + 0x1 .0000000000000 p - 0016 ,
+ 0x1 .0000000000000 p - 0015 , + 0x1 .0000000000000 p - 0015 ,
+ 0x1 .0000000000000 p - 0014 , + 0x1 .0000000000000 p - 0014 ,
+ 0x1 .0000000000000 p - 0013 , + 0x1 .0000000000000 p - 0013 ,
+ 0x1 .0000000000000 p - 0012 , + 0x1 .0000000000000 p - 0012 ,
+ 0x1 .0000000000000 p - 0011 , + 0x1 .0000000000000 p - 0011 ,
+ 0x1 .0000000000000 p - 0010 , + 0x1 .0000000000000 p - 0010 ,
+ 0x1 .0000000000000 p - 000 9 , + 0x1 .0000000000000 p - 000 9 ,
+ 0x1 .0000000000000 p - 000 8 , + 0x1 .0000000000000 p - 000 8 ,
+ 0x1 .0000000000000 p - 0007 , + 0x1 .0000000000000 p - 0007 ,
+ 0x1 .0000000000000 p - 0006 , + 0x1 .0000000000000 p - 0006 ,
+ 0x1 .0000000000000 p - 0005 , + 0x1 .0000000000000 p - 0005 ,
+ 0x1 .0000000000000 p - 0004 , + 0x1 .0000000000000 p - 0004 ,
+ 0x1 .0000000000000 p - 0003 , + 0x1 .0000000000000 p - 0003 ,
+ 0x1 .0000000000000 p - 0002 , + 0x1 .0000000000000 p - 0002 ,
+ 0x1 .0000000000000 p - 0001 , + 0x1 .0000000000000 p - 0001 ,
+ 0x1 .0000000000000 p + 0000 , + 0x1 .0000000000000 p + 0000 ,
+ 0x1 .0000000000000 p + 0001 , + 0x1 .0000000000000 p + 0001 ,
+ 0x1 .0000000000000 p + 0002 , + 0x1 .0000000000000 p + 0002 ,
+ 0x1 .0000000000000 p + 0003 , + 0x1 .0000000000000 p + 0003 ,
+ 0x1 .0000000000000 p + 0004 , + 0x1 .0000000000000 p + 0004 ,
+ 0x1 .0000000000000 p + 0005 , + 0x1 .0000000000000 p + 0005 ,
+ 0x1 .0000000000000 p + 0006 , + 0x1 .0000000000000 p + 0006 ,
+ 0x1 .0000000000000 p + 0007 , + 0x1 .0000000000000 p + 0007 ,
+ 0x1 .0000000000000 p + 000 8 , + 0x1 .0000000000000 p + 000 8 ,
+ 0x1 .0000000000000 p + 000 9 , + 0x1 .0000000000000 p + 000 9 ,
+ 0x1 .0000000000000 p + 0010 , + 0x1 .0000000000000 p + 0010 ,
+ 0x1 .0000000000000 p + 0011 , + 0x1 .0000000000000 p + 0011 ,
+ 0x1 .0000000000000 p + 0012 , + 0x1 .0000000000000 p + 0012 ,
+ 0x1 .0000000000000 p + 0013 , + 0x1 .0000000000000 p + 0013 ,
+ 0x1 .0000000000000 p + 0014 , + 0x1 .0000000000000 p + 0014 ,
+ 0x1 .0000000000000 p + 0015 , + 0x1 .0000000000000 p + 0015 ,
+ 0x1 .0000000000000 p + 0016 , + 0x1 .0000000000000 p + 0016 ,
+ 0x1 .0000000000000 p + 0017 , + 0x1 .0000000000000 p + 0017 ,
+ 0x1 .0000000000000 p + 001 8 , + 0x1 .0000000000000 p + 001 8 ,
+ 0x1 .0000000000000 p + 001 9 , + 0x1 .0000000000000 p + 001 9 ,
+ 0x1 .0000000000000 p + 0020 , + 0x1 .0000000000000 p + 0020 ,
+ 0x1 .0000000000000 p + 0021 , + 0x1 .0000000000000 p + 0021 ,
+ 0x1 .0000000000000 p + 0022 , + 0x1 .0000000000000 p + 0022 ,
+ 0x1 .0000000000000 p + 0023 , + 0x1 .0000000000000 p + 0023 ,
+ 0x1 .0000000000000 p + 0024 , + 0x1 .0000000000000 p + 0024 ,
+ 0x1 .0000000000000 p + 0025 , + 0x1 .0000000000000 p + 0025 ,
+ 0x1 .0000000000000 p + 0026 , + 0x1 .0000000000000 p + 0026 ,
+ 0x1 .0000000000000 p + 0027 , + 0x1 .0000000000000 p + 0027 ,
+ 0x1 .0000000000000 p + 002 8 , + 0x1 .0000000000000 p + 002 8 ,
+ 0x1 .0000000000000 p + 002 9 , + 0x1 .0000000000000 p + 002 9 ,
+ 0x1 .0000000000000 p + 0030 , + 0x1 .0000000000000 p + 0030 ,
+ 0x1 .0000000000000 p + 0031 , + 0x1 .0000000000000 p + 0031 ,
+ 0x1 .0000000000000 p + 0032 , + 0x1 .0000000000000 p + 0032 ,
+ 0x1 .0000000000000 p + 0033 , + 0x1 .0000000000000 p + 0033 ,
+ 0x1 .0000000000000 p + 0034 , + 0x1 .0000000000000 p + 0034 ,
+ 0x1 .0000000000000 p + 0035 , + 0x1 .0000000000000 p + 0035 ,
+ 0x1 .0000000000000 p + 0036 , + 0x1 .0000000000000 p + 0036 ,
+ 0x1 .0000000000000 p + 0037 , + 0x1 .0000000000000 p + 0037 ,
+ 0x1 .0000000000000 p + 003 8 , + 0x1 .0000000000000 p + 003 8 ,
+ 0x1 .0000000000000 p + 003 9 , + 0x1 .0000000000000 p + 003 9 ,
+ 0x1 .0000000000000 p + 0040 , + 0x1 .0000000000000 p + 0040 ,
+ 0x1 .0000000000000 p + 0041 , + 0x1 .0000000000000 p + 0041 ,
+ 0x1 .0000000000000 p + 0042 , + 0x1 .0000000000000 p + 0042 ,
+ 0x1 .0000000000000 p + 0043 , + 0x1 .0000000000000 p + 0043 ,
+ 0x1 .0000000000000 p + 0044 , + 0x1 .0000000000000 p + 0044 ,
+ 0x1 .0000000000000 p + 0045 , + 0x1 .0000000000000 p + 0045 ,
+ 0x1 .0000000000000 p + 0046 , + 0x1 .0000000000000 p + 0046 ,
+ 0x1 .0000000000000 p + 0047 , + 0x1 .0000000000000 p + 0047 ,
+ 0x1 .0000000000000 p + 004 8 , + 0x1 .0000000000000 p + 004 8 ,
+ 0x1 .0000000000000 p + 004 9 , + 0x1 .0000000000000 p + 004 9 ,
+ 0x1 .0000000000000 p + 0050 , + 0x1 .0000000000000 p + 0050 ,
+ 0x1 .0000000000000 p + 0051 , + 0x1 .0000000000000 p + 0051 ,
+ 0x1 .0000000000000 p + 0052 , + 0x1 .0000000000000 p + 0052 ,
+ 0x1 .0000000000000 p + 0053 , + 0x1 .0000000000000 p + 0053 ,
+ 0x1 .0000000000000 p + 0054 , + 0x1 .0000000000000 p + 0054 ,
+ 0x1 .0000000000000 p + 0055 , + 0x1 .0000000000000 p + 0055 ,
+ 0x1 .0000000000000 p + 0056 , + 0x1 .0000000000000 p + 0056 ,
+ 0x1 .0000000000000 p + 0057 , + 0x1 .0000000000000 p + 0057 ,
+ 0x1 .0000000000000 p + 005 8 , + 0x1 .0000000000000 p + 005 8 ,
+ 0x1 .0000000000000 p + 005 9 , + 0x1 .0000000000000 p + 005 9 ,
+ 0x1 .0000000000000 p + 0060 , + 0x1 .0000000000000 p + 0060 ,
+ 0x1 .0000000000000 p + 0061 , + 0x1 .0000000000000 p + 0061 ,
+ 0x1 .0000000000000 p + 0062 , + 0x1 .0000000000000 p + 0062
} ;
static constexpr std : : array < std : : array < double , degree + 1 > , 510 > canonical_polys = {
63 , 63 , 62 , 62 , 61 , 61 , 60 , 60 , 59 , 59 , 58 , 58 , 57 , 57 , 56 , 56 , 55 , 55 , 54 , 54 , 53 , 53 , 52 , 52 , 51 , 51 , 50 , 50 , 49 , 49 , 48 , 48 , 47 , 47 , 46 , 46 , 45 , 45 , 44 , 44 , 43 , 43 , 42 , 42 , 41 , 41 , 40 , 40 , 39 , 39 , 38 , 38 , 37 , 37 , 36 , 36 , 35 , 35 , 34 , 34 , 33 , 33 , 32 , 32 , 31 , 31 , 30 , 30 , 29 , 29 , 28 , 28 , 27 , 27 , 26 , 26 , 25 , 25 , 24 , 24 , 23 , 23 , 22 , 22 , 21 , 21 , 20 , 20 , 19 , 19 , 18 , 18 , 17 , 17 , 16 , 16 , 15 , 15 , 14 , 14 , 13 , 13 , 12 , 12 , 11 , 11 , 10 , 10 , 9 , 9 , 8 , 8 , 7 , 7 , 6 , 6 , 5 , 5 , 4 , 4 , 3 , 3 , 2 , 2 , 1 , 1 , 0 , 0 , - 1 , - 1 , - 2 , - 2 , - 3 , - 3 , - 4 , - 4 , - 5 , - 5 , - 6 , - 6 , - 7 , - 7 , - 8 , - 8 , - 9 , - 9 , - 10 , - 10 , - 11 , - 11 , - 12 , - 12 , - 13 , - 13 , - 14 , - 14 , - 15 , - 15 , - 16 , - 16 , - 17 , - 17 , - 18 , - 18 , - 19 , - 19 , - 20 , - 20 , - 21 , - 21 , - 22 , - 22 , - 23 , - 23 , - 24 , - 24 , - 25 , - 25 , - 26 , - 26 , - 27 , - 27 , - 28 , - 28 , - 29 , - 29 , - 30 , - 30 , - 31 , - 31 , - 32 , - 32 , - 33 , - 33 , - 34 , - 34 , - 35 , - 35 , - 36 , - 36 , - 37 , - 37 , - 38 , - 38 , - 39 , - 39 , - 40 , - 40 , - 41 , - 41 , - 42 , - 42 , - 43 , - 43 , - 44 , - 44 , - 45 , - 45 , - 46 , - 46 , - 47 , - 47 , - 48 , - 48 , - 49 , - 49 , - 50 , - 50 , - 51 , - 51 , - 52 , - 52 , - 53 , - 53 , - 54 , - 54 , - 55 , - 55 , - 56 , - 56 , - 57 , - 57 , - 58 , - 58 , - 59 , - 59 , - 60 , - 60 , - 61 , - 61 , - 62 , - 62 , - 63 , - 63 , - 64 , - 64 , - 63 , - 63 , - 62 , - 62 , - 61 , - 61 , - 60 , - 60 , - 59 , - 59 , - 58 , - 58 , - 57 , - 57 , - 56 , - 56 , - 55 , - 55 , - 54 , - 54 , - 53 , - 53 , - 52 , - 52 , - 51 , - 51 , - 50 , - 50 , - 49 , - 49 , - 48 , - 48 , - 47 , - 47 , - 46 , - 46 , - 45 , - 45 , - 44 , - 44 , - 43 , - 43 , - 42 , - 42 , - 41 , - 41 , - 40 , - 40 , - 39 , - 39 , - 38 , - 38 , - 37 , - 37 , - 36 , - 36 , - 35 , - 35 , - 34 , - 34 , - 33 , - 33 , - 32 , - 32 , - 31 , - 31 , - 30 , - 30 , - 29 , - 29 , - 28 , - 28 , - 27 , - 27 , - 26 , - 26 , - 25 , - 25 , - 24 , - 24 , - 23 , - 23 , - 22 , - 22 , - 21 , - 21 , - 20 , - 20 , - 19 , - 19 , - 18 , - 18 , - 17 , - 17 , - 16 , - 16 , - 15 , - 15 , - 14 , - 14 , - 13 , - 13 , - 12 , - 12 , - 11 , - 11 , - 10 , - 10 , - 9 , - 9 , - 8 , - 8 , - 7 , - 7 , - 6 , - 6 , - 5 , - 5 , - 4 , - 4 , - 3 , - 3 , - 2 , - 2 , - 1 , - 1 , 0 , 0 , 1 , 1 , 2 , 2 , 3 , 3 , 4 , 4 , 5 , 5 , 6 , 6 , 7 , 7 , 8 , 8 , 9 , 9 , 10 , 10 , 11 , 11 , 12 , 12 , 13 , 13 , 14 , 14 , 15 , 15 , 16 , 16 , 17 , 17 , 18 , 18 , 19 , 19 , 20 , 20 , 21 , 21 , 22 , 22 , 23 , 23 , 24 , 24 , 25 , 25 , 26 , 26 , 27 , 27 , 28 , 28 , 29 , 29 , 30 , 30 , 31 , 31 , 32 , 32 , 33 , 33 , 34 , 34 , 35 , 35 , 36 , 36 , 37 , 37 , 38 , 38 , 39 , 39 , 40 , 40 , 41 , 41 , 42 , 42 , 43 , 43 , 44 , 44 , 45 , 45 , 46 , 46 , 47 , 47 , 48 , 48 , 49 , 49 , 50 , 50 , 51 , 51 , 52 , 52 , 53 , 53 , 54 , 54 , 55 , 55 , 56 , 56 , 57 , 57 , 58 , 58 , 59 , 59 , 60 , 60 , 61 , 61 , 62 , 62 , 63 , 63
} ;
} ;
2026-09-24 23:18:10 -06:00
HEDLEY_DIAGNOSTIC_POP
2026-09-24 14:08:32 -06:00
} // namespace gadgets
} // namespace grotto
# endif // LIBDPF_INCLUDE_GROTTO_GADGETS_LOGARITHM_ILOGB_HPP__