24 auto d2 = base_point.dbl();
26 point_table[128] = base_point;
27 for (
size_t i = 1; i < 128; ++i) {
28 point_table[i + 128] = point_table[i + 127] + d2;
30 for (
size_t i = 0; i < 128; ++i) {
31 point_table[127 - i] = -point_table[128 + i];
33 element::batch_normalize(&point_table[0], 256);
35 auto beta = G1::Fq::cube_root_of_unity();
36 for (
size_t i = 0; i < 256; ++i) {
46 constexpr size_t num_limb_bits = stdlib::NUM_LIMB_BITS_IN_FIELD_SIMULATION;
50 x = x >> num_limb_bits;
52 x = x >> num_limb_bits;
54 x = x >> num_limb_bits;
59 endo_x = endo_x >> num_limb_bits;
61 endo_x = endo_x >> num_limb_bits;
63 endo_x = endo_x >> num_limb_bits;
68 y = y >> num_limb_bits;
70 y = y >> num_limb_bits;
72 y = y >> num_limb_bits;
91 init_generator_tables();
92 const size_t index =
static_cast<size_t>(
key[0]);
102 init_generator_tables();
103 const size_t index =
static_cast<size_t>(
key[0]);
111template <
typename G1>
114 init_generator_tables();
115 const size_t index =
static_cast<size_t>(
key[0]);
123template <
typename G1>
126 init_generator_tables();
127 const size_t index =
static_cast<size_t>(
key[0]);
137 init_generator_tables();
138 const size_t index =
static_cast<size_t>(
key[0]);
148 init_generator_tables();
149 const size_t index =
static_cast<size_t>(
key[0]);
157template <
typename G1>
160 init_generator_tables();
161 const size_t index =
static_cast<size_t>(
key[0]);
169template <
typename G1>
172 init_generator_tables();
173 const size_t index =
static_cast<size_t>(
key[0]);
183 size_t table_size = 256;
186 for (
size_t i = 0; i < table_size; ++i) {
206 size_t table_size = 256;
209 for (
size_t i = 0; i < table_size; ++i) {
224template <
typename G1>
230 size_t table_size = 256;
233 for (
size_t i = 0; i < table_size; ++i) {
248template <
typename G1>
254 size_t table_size = 256;
257 for (
size_t i = 0; i < table_size; ++i) {
277 size_t table_size = 256;
280 for (
size_t i = 0; i < table_size; ++i) {
300 size_t table_size = 256;
303 for (
size_t i = 0; i < table_size; ++i) {
318template <
typename G1>
324 size_t table_size = 256;
327 for (
size_t i = 0; i < table_size; ++i) {
342template <
typename G1>
348 size_t table_size = 256;
351 for (
size_t i = 0; i < table_size; ++i) {
366template <
typename G1>
369 const size_t num_entries = 1;
373 for (
size_t i = 0; i < num_entries; ++i) {
381template <
typename G1>
384 const size_t num_entries = 1;
388 for (
size_t i = 0; i < num_entries; ++i) {
396template <
typename G1>
399 const size_t num_entries = 1;
403 for (
size_t i = 0; i < num_entries; ++i) {
411template <
typename G1>
414 const size_t num_entries = 1;
418 for (
size_t i = 0; i < num_entries; ++i) {
426template <
typename G1>
429 const size_t num_entries = 1;
433 for (
size_t i = 0; i < num_entries; ++i) {
441template <
typename G1>
444 const size_t num_entries = 1;
448 for (
size_t i = 0; i < num_entries; ++i) {
456template <
typename G1>
459 const size_t num_entries = 1;
463 for (
size_t i = 0; i < num_entries; ++i) {
471template <
typename G1>
474 const size_t num_entries = 1;
478 for (
size_t i = 0; i < num_entries; ++i) {
static MultiTable get_yhi_table(const MultiTableId id, const BasicTableId basic_id)
static MultiTable get_xyprime_endo_table(const MultiTableId id, const BasicTableId basic_id)
static BasicTable generate_xlo_table(BasicTableId id, const size_t table_index)
static std::array< fr, 2 > get_xlo_endo_values(const std::array< uint64_t, 2 > key)
static BasicTable generate_xyprime_endo_table(BasicTableId id, const size_t table_index)
static BasicTable generate_yhi_table(BasicTableId id, const size_t table_index)
static BasicTable generate_xlo_endo_table(BasicTableId id, const size_t table_index)
static std::array< fr, 2 > get_xhi_values(const std::array< uint64_t, 2 > key)
static std::array< fr, 2 > get_xyprime_endo_values(const std::array< uint64_t, 2 > key)
static std::array< fr, 2 > get_xlo_values(const std::array< uint64_t, 2 > key)
static BasicTable generate_ylo_table(BasicTableId id, const size_t table_index)
static BasicTable generate_xhi_table(BasicTableId id, const size_t table_index)
static std::array< fr, 2 > get_yhi_values(const std::array< uint64_t, 2 > key)
static void init_generator_tables()
typename G1::element element
static MultiTable get_xlo_endo_table(const MultiTableId id, const BasicTableId basic_id)
static std::array< fr, 2 > get_ylo_values(const std::array< uint64_t, 2 > key)
static std::array< fr, 2 > get_xhi_endo_values(const std::array< uint64_t, 2 > key)
static std::array< fr, 2 > get_xyprime_values(const std::array< uint64_t, 2 > key)
static MultiTable get_xyprime_table(const MultiTableId id, const BasicTableId basic_id)
static MultiTable get_xhi_endo_table(const MultiTableId id, const BasicTableId basic_id)
static BasicTable generate_xyprime_table(BasicTableId id, const size_t table_index)
static BasicTable generate_xhi_endo_table(BasicTableId id, const size_t table_index)
static MultiTable get_xhi_table(const MultiTableId id, const BasicTableId basic_id)
static MultiTable get_xlo_table(const MultiTableId id, const BasicTableId basic_id)
static MultiTable get_ylo_table(const MultiTableId id, const BasicTableId basic_id)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
A basic table from which we can perform lookups (for example, an xor table)
bb::fr column_2_step_size
bb::fr column_1_step_size
std::vector< bb::fr > column_3
std::vector< bb::fr > column_2
std::array< bb::fr, 2 >(* get_values_from_key)(const std::array< uint64_t, 2 >)
std::vector< bb::fr > column_1
bb::fr column_3_step_size
Container for managing multiple BasicTables plus the data needed to combine basic table outputs (e....
std::vector< BasicTableId > basic_table_ids
std::vector< uint64_t > slice_sizes
std::vector< table_out(*)(table_in)> get_table_values