25 #ifndef CRYPTO3_CHIA_POLICY_HPP
26 #define CRYPTO3_CHIA_POLICY_HPP
28 #if defined(CRYPTO3_VDF_FLINT)
30 #include <flint/fmpz.h>
32 #elif defined(CRYPTO3_VDF_GMP)
36 #elif defined(CRYPTO3_VDF_MPIR)
40 #elif defined(CRYPTO3_VDF_BOOST)
42 #include <nil/crypto3/multiprecision/number.hpp>
49 #ifdef CRYPTO3_VDF_BOOST
50 using namespace nil::crypto3::multiprecision;
57 template<
typename NumberType>
60 #if defined(CRYPTO3_VDF_GMP) || defined(CRYPTO3_VDF_MPIR)
63 mpz_inits(a, b, c, NULL);
66 #elif defined(CRYPTO3_VDF_FLINT)
80 #define LOG2(X) (63 - __builtin_clzll((X)))
82 constexpr
static const int64_t threshold = 1UL << 31;
83 constexpr
static const int64_t double_threshold = 1UL << 31;
84 constexpr
static const int64_t exp_threshold = 63;
85 constexpr
static const int64_t maxv = ((1UL << 63) - 1);
87 template<
typename NumberType>
91 #if defined(CRYPTO3_VDF_GMP) || defined(CRYPTO3_VDF_MPIR)
94 mpz_inits(D, L, NULL);
95 mpz_inits(r, ra, s, p, NULL);
96 mpz_inits(G, dx, dy, By, Dy, x, y, t1, t2, bx, by, ax, ay, q, t, Q1, NULL);
97 mpz_inits(faa, fab, fac, fba, fbb, fbc, fca, fcb, fcc, NULL);
100 #elif defined(CRYPTO3_VDF_FLINT)
139 number_type G, dx, dy, By, Dy, x, y, t1, t2, bx, by,
ax, ay, q, t, Q1;
Definition: chia_policy.hpp:88
binary_quadratic_form< number_type > form_type
Definition: chia_policy.hpp:90
number_type ax
Definition: chia_policy.hpp:139
number_type p
Definition: chia_policy.hpp:138
NumberType number_type
Definition: chia_policy.hpp:89
form_type form
Definition: chia_policy.hpp:143
number_type D
Definition: chia_policy.hpp:137
number_type faa
Definition: chia_policy.hpp:141
Definition: chia_policy.hpp:78