barretenberg
Loading...
Searching...
No Matches
public_inputs_impl.hpp
1#pragma once
2
3namespace proof_system::plonk {
4
112template <typename Field>
113Field compute_public_input_delta(const std::vector<Field>& public_inputs,
114 const Field& beta,
115 const Field& gamma,
116 const Field& subgroup_generator)
117{
118 Field numerator = Field(1);
119 Field denominator = Field(1);
120
121 Field work_root = Field(1);
122 Field T0;
123 Field T1;
124 Field T2;
125 Field T3;
126 for (const auto& witness : public_inputs) {
127 T0 = witness + gamma;
128 T1 = work_root * beta;
129 T2 = T1 * Field::coset_generator(0);
130 T3 = T1 * Field::external_coset_generator();
131 T2 += T0;
132 T3 += T0;
133 numerator *= T2;
134 denominator *= T3;
135 work_root *= subgroup_generator;
136 }
137 T0 = numerator / denominator;
138 return T0;
139}
140} // namespace proof_system::plonk
Definition: widget.bench.cpp:13
Field compute_public_input_delta(const std::vector< Field > &inputs, const Field &beta, const Field &gamma, const Field &subgroup_generator)
Definition: public_inputs_impl.hpp:113