26 auto d2 = base_point.dbl();
28 point_table[128] = base_point;
29 for (
size_t i = 1; i < 128; ++i) {
30 point_table[i + 128] = point_table[i + 127] + d2;
32 for (
size_t i = 0; i < 128; ++i) {
33 point_table[127 - i] = -point_table[128 + i];
35 element::batch_normalize(&point_table[0], 256);
37 auto beta = G1::Fq::cube_root_of_unity();
38 for (
size_t i = 0; i < 256; ++i) {
48 constexpr size_t num_limb_bits = stdlib::NUM_LIMB_BITS_IN_FIELD_SIMULATION;
52 x = x >> num_limb_bits;
54 x = x >> num_limb_bits;
56 x = x >> num_limb_bits;
61 endo_x = endo_x >> num_limb_bits;
63 endo_x = endo_x >> num_limb_bits;
65 endo_x = endo_x >> num_limb_bits;
70 y = y >> num_limb_bits;
72 y = y >> num_limb_bits;
74 y = y >> num_limb_bits;
93 init_generator_tables();
94 const size_t index =
static_cast<size_t>(
key[0]);
104 init_generator_tables();
105 const size_t index =
static_cast<size_t>(
key[0]);
113template <
typename G1>
116 init_generator_tables();
117 const size_t index =
static_cast<size_t>(
key[0]);
125template <
typename G1>
128 init_generator_tables();
129 const size_t index =
static_cast<size_t>(
key[0]);
139 init_generator_tables();
140 const size_t index =
static_cast<size_t>(
key[0]);
150 init_generator_tables();
151 const size_t index =
static_cast<size_t>(
key[0]);
159template <
typename G1>
162 init_generator_tables();
163 const size_t index =
static_cast<size_t>(
key[0]);
171template <
typename G1>
174 init_generator_tables();
175 const size_t index =
static_cast<size_t>(
key[0]);
185 size_t table_size = 256;
188 for (
size_t i = 0; i < table_size; ++i) {
208 size_t table_size = 256;
211 for (
size_t i = 0; i < table_size; ++i) {
226template <
typename G1>
232 size_t table_size = 256;
235 for (
size_t i = 0; i < table_size; ++i) {
250template <
typename G1>
256 size_t table_size = 256;
259 for (
size_t i = 0; i < table_size; ++i) {
279 size_t table_size = 256;
282 for (
size_t i = 0; i < table_size; ++i) {
302 size_t table_size = 256;
305 for (
size_t i = 0; i < table_size; ++i) {
320template <
typename G1>
326 size_t table_size = 256;
329 for (
size_t i = 0; i < table_size; ++i) {
344template <
typename G1>
350 size_t table_size = 256;
353 for (
size_t i = 0; i < table_size; ++i) {
368template <
typename G1>
371 const size_t num_entries = 1;
375 for (
size_t i = 0; i < num_entries; ++i) {
383template <
typename G1>
386 const size_t num_entries = 1;
390 for (
size_t i = 0; i < num_entries; ++i) {
398template <
typename G1>
401 const size_t num_entries = 1;
405 for (
size_t i = 0; i < num_entries; ++i) {
413template <
typename G1>
416 const size_t num_entries = 1;
420 for (
size_t i = 0; i < num_entries; ++i) {
428template <
typename G1>
431 const size_t num_entries = 1;
435 for (
size_t i = 0; i < num_entries; ++i) {
443template <
typename G1>
446 const size_t num_entries = 1;
450 for (
size_t i = 0; i < num_entries; ++i) {
458template <
typename G1>
461 const size_t num_entries = 1;
465 for (
size_t i = 0; i < num_entries; ++i) {
473template <
typename G1>
476 const size_t num_entries = 1;
480 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