-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathpb_variable.i
119 lines (117 loc) · 5.06 KB
/
pb_variable.i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
template<typename FieldT>
class pb_variable : public variable<FieldT> {
public:
//pb_variable(const var_index_t index = 0) : variable<FieldT>(index) {};
pb_variable() : variable<FieldT>(index) {};
void allocate(libsnark::protoboard<FieldT> &pb, const std::string &annotation="");
};
//template<typename FieldT>
//class pb_variable_array : private std::vector<pb_variable<FieldT> >
//{
// typedef std::vector<pb_variable<FieldT> > contents;
//public:
// using typename contents::iterator;
// using typename contents::const_iterator;
// using typename contents::reverse_iterator;
// using typename contents::const_reverse_iterator;
//
// using contents::begin;
// using contents::end;
// using contents::rbegin;
// using contents::rend;
// using contents::emplace_back;
// using contents::insert;
// using contents::reserve;
// using contents::size;
// using contents::empty;
// using contents::operator[];
// using contents::resize;
//
// pb_variable_array() : contents() {};
// pb_variable_array(size_t count, const pb_variable<FieldT> &value) : contents(count, value) {};
// pb_variable_array(typename contents::const_iterator first, typename contents::const_iterator last) : contents(first, last) {};
// pb_variable_array(typename contents::const_reverse_iterator first, typename contents::const_reverse_iterator last) : contents(first, last) {};
// void allocate(protoboard<FieldT> &pb, const size_t n, const std::string &annotation_prefix="");
//
// void fill_with_field_elements(protoboard<FieldT> &pb, const std::vector<FieldT>& vals) const;
// void fill_with_bits(protoboard<FieldT> &pb, const libff::bit_vector& bits) const;
// void fill_with_bits_of_ulong(protoboard<FieldT> &pb, const unsigned long i) const;
// void fill_with_bits_of_field_element(protoboard<FieldT> &pb, const FieldT &r) const;
//
// std::vector<FieldT> get_vals(const protoboard<FieldT> &pb) const;
// libff::bit_vector get_bits(const protoboard<FieldT> &pb) const;
//
// FieldT get_field_element_from_bits(const protoboard<FieldT> &pb) const;
//};
//
///* index 0 corresponds to the constant term (used in legacy code) */
//#define ONE pb_variable<FieldT>(0)
//
//template<typename FieldT>
//class pb_linear_combination : public linear_combination<FieldT> {
//public:
// bool is_variable;
// lc_index_t index;
//
// pb_linear_combination();
// pb_linear_combination(const pb_variable<FieldT> &var);
//
// void assign(protoboard<FieldT> &pb, const linear_combination<FieldT> &lc);
// void evaluate(protoboard<FieldT> &pb) const;
//
// bool is_constant() const;
// FieldT constant_term() const;
//};
//
//template<typename FieldT>
//class pb_linear_combination_array : private std::vector<pb_linear_combination<FieldT> >
//{
// typedef std::vector<pb_linear_combination<FieldT> > contents;
//public:
// using typename contents::iterator;
// using typename contents::const_iterator;
// using typename contents::reverse_iterator;
// using typename contents::const_reverse_iterator;
//
// using contents::begin;
// using contents::end;
// using contents::rbegin;
// using contents::rend;
// using contents::emplace_back;
// using contents::insert;
// using contents::reserve;
// using contents::size;
// using contents::empty;
// using contents::operator[];
// using contents::resize;
//
// pb_linear_combination_array() : contents() {};
// pb_linear_combination_array(const pb_variable_array<FieldT> &arr) { for (auto &v : arr) this->emplace_back(pb_linear_combination<FieldT>(v)); };
// pb_linear_combination_array(size_t count) : contents(count) {};
// pb_linear_combination_array(size_t count, const pb_linear_combination<FieldT> &value) : contents(count, value) {};
// pb_linear_combination_array(typename contents::const_iterator first, typename contents::const_iterator last) : contents(first, last) {};
// pb_linear_combination_array(typename contents::const_reverse_iterator first, typename contents::const_reverse_iterator last) : contents(first, last) {};
//
// void evaluate(protoboard<FieldT> &pb) const;
//
// void fill_with_field_elements(protoboard<FieldT> &pb, const std::vector<FieldT>& vals) const;
// void fill_with_bits(protoboard<FieldT> &pb, const libff::bit_vector& bits) const;
// void fill_with_bits_of_ulong(protoboard<FieldT> &pb, const unsigned long i) const;
// void fill_with_bits_of_field_element(protoboard<FieldT> &pb, const FieldT &r) const;
//
// std::vector<FieldT> get_vals(const protoboard<FieldT> &pb) const;
// libff::bit_vector get_bits(const protoboard<FieldT> &pb) const;
//
// FieldT get_field_element_from_bits(const protoboard<FieldT> &pb) const;
//};
//
//template<typename FieldT>
//linear_combination<FieldT> pb_sum(const pb_linear_combination_array<FieldT> &v);
//
//template<typename FieldT>
//linear_combination<FieldT> pb_packing_sum(const pb_linear_combination_array<FieldT> &v);
//
//template<typename FieldT>
//linear_combination<FieldT> pb_coeff_sum(const pb_linear_combination_array<FieldT> &v, const std::vector<FieldT> &coeffs);
//
//