Closed Sword-Smith closed 4 months ago
For a faster recursive verifier, we need to implement "barycentric evaluation". Here's Rust code for that:
pub fn barycentric_evaluate( codeword: &[XFieldElement], indeterminate: XFieldElement, ) -> XFieldElement { let root_order = codeword.len().try_into().unwrap(); let generator = BFieldElement::primitive_root_of_unity(root_order).unwrap(); let mut numerator = xfe!(0); let mut denominator = xfe!(0); let mut domain_iter_elem = bfe!(1); for code_word_elem in codeword { let domain_shift_elem = indeterminate - domain_iter_elem; let domain_over_domain_shift_elem = domain_iter_elem.lift() / domain_shift_elem; numerator += domain_over_domain_shift_elem * *code_word_elem; denominator += domain_over_domain_shift_elem; domain_iter_elem *= generator; } numerator / denominator }
See (https://github.com/TritonVM/triton-vm/pull/266) for context.
For a faster recursive verifier, we need to implement "barycentric evaluation". Here's Rust code for that:
See (https://github.com/TritonVM/triton-vm/pull/266) for context.