From 7cb899556622c033c6202494ae27a8db3b9c2b58 Mon Sep 17 00:00:00 2001 From: Bartosz Nowak Date: Sat, 13 Jul 2024 15:13:49 +0200 Subject: [PATCH 1/3] program hash and output hash --- crates/air/src/layout/mod.rs | 14 ++- crates/air/src/layout/recursive/mod.rs | 150 ++++++++++++++++++------- crates/air/src/public_memory.rs | 6 +- crates/air/src/tests/public_input.rs | 2 +- crates/stark/src/stark.rs | 14 +-- crates/stark/src/tests/proof.rs | 4 +- 6 files changed, 134 insertions(+), 56 deletions(-) diff --git a/crates/air/src/layout/mod.rs b/crates/air/src/layout/mod.rs index 095e240..5143596 100644 --- a/crates/air/src/layout/mod.rs +++ b/crates/air/src/layout/mod.rs @@ -25,10 +25,10 @@ pub trait LayoutTrait { trace_generator: &Felt, ) -> Felt; - fn validate( + fn validate_public_input( public_input: &PublicInput, stark_domains: &StarkDomains, - ) -> Result<(), PublicInputValidateError>; + ) -> Result<(), PublicInputError>; fn traces_commit( transcript: &mut Transcript, @@ -42,6 +42,8 @@ pub trait LayoutTrait { decommitment: crate::trace::Decommitment, witness: crate::trace::Witness, ) -> Result<(), crate::trace::decommit::Error>; + + fn verify_public_input(public_input: &PublicInput) -> Result<(Felt, Felt), PublicInputError>; } use thiserror::Error; @@ -53,7 +55,7 @@ pub enum CompositionPolyEvalError { } #[derive(Error, Debug)] -pub enum PublicInputValidateError { +pub enum PublicInputError { #[error("max steps exceeded")] MaxSteps, @@ -72,3 +74,9 @@ pub enum PublicInputValidateError { #[error("invalid number of builtin uses")] UsesInvalid, } + +pub mod segments { + pub const EXECUTION: usize = 1; + pub const OUTPUT: usize = 2; + pub const PROGRAM: usize = 0; +} diff --git a/crates/air/src/layout/recursive/mod.rs b/crates/air/src/layout/recursive/mod.rs index 31aa22d..eed52a5 100644 --- a/crates/air/src/layout/recursive/mod.rs +++ b/crates/air/src/layout/recursive/mod.rs @@ -4,15 +4,15 @@ pub mod global_values; use crate::{ diluted::get_diluted_product, periodic_columns::{eval_pedersen_x, eval_pedersen_y}, - public_memory::{PublicInput, MAX_LOG_N_STEPS, MAX_RANGE_CHECK}, + public_memory::{PublicInput, INITIAL_PC, MAX_ADDRESS, MAX_LOG_N_STEPS, MAX_RANGE_CHECK}, }; use bail_out::ensure; use cairovm_verifier_commitment::table::{commit::table_commit, decommit::table_decommit}; use global_values::{EcPoint, GlobalValues, InteractionElements}; use starknet_core::types::NonZeroFelt; -use starknet_crypto::Felt; +use starknet_crypto::{poseidon_hash_many, Felt}; -use super::{CompositionPolyEvalError, LayoutTrait, PublicInputValidateError}; +use super::{CompositionPolyEvalError, LayoutTrait, PublicInputError}; // Recursive layout consts pub const BITWISE_RATIO: u32 = 8; @@ -51,11 +51,8 @@ pub const RANGE_CHECK_N_PARTS: u32 = 8; pub mod segments { pub const BITWISE: usize = 5; - pub const EXECUTION: usize = 1; pub const N_SEGMENTS: usize = 6; - pub const OUTPUT: usize = 2; pub const PEDERSEN: usize = 3; - pub const PROGRAM: usize = 0; pub const RANGE_CHECK: usize = 4; } @@ -127,23 +124,31 @@ impl LayoutTrait for RecursiveLayout { trace_length: *trace_domain_size, initial_pc: public_input .segments - .get(segments::PROGRAM) - .ok_or(CompositionPolyEvalError::SegmentMissing { segment: segments::PROGRAM })? + .get(crate::layout::segments::PROGRAM) + .ok_or(CompositionPolyEvalError::SegmentMissing { + segment: crate::layout::segments::PROGRAM, + })? .begin_addr, final_pc: public_input .segments - .get(segments::PROGRAM) - .ok_or(CompositionPolyEvalError::SegmentMissing { segment: segments::PROGRAM })? + .get(crate::layout::segments::PROGRAM) + .ok_or(CompositionPolyEvalError::SegmentMissing { + segment: crate::layout::segments::PROGRAM, + })? .stop_ptr, initial_ap: public_input .segments - .get(segments::EXECUTION) - .ok_or(CompositionPolyEvalError::SegmentMissing { segment: segments::EXECUTION })? + .get(crate::layout::segments::EXECUTION) + .ok_or(CompositionPolyEvalError::SegmentMissing { + segment: crate::layout::segments::EXECUTION, + })? .begin_addr, final_ap: public_input .segments - .get(segments::EXECUTION) - .ok_or(CompositionPolyEvalError::SegmentMissing { segment: segments::EXECUTION })? + .get(crate::layout::segments::EXECUTION) + .ok_or(CompositionPolyEvalError::SegmentMissing { + segment: crate::layout::segments::EXECUTION, + })? .stop_ptr, initial_pedersen_addr: public_input .segments @@ -243,64 +248,62 @@ impl LayoutTrait for RecursiveLayout { witness.interaction, ))?) } - fn validate( + fn validate_public_input( public_input: &PublicInput, stark_domains: &crate::domains::StarkDomains, - ) -> Result<(), PublicInputValidateError> { - ensure!(public_input.log_n_steps < MAX_LOG_N_STEPS, PublicInputValidateError::MaxSteps); + ) -> Result<(), PublicInputError> { + ensure!(public_input.log_n_steps < MAX_LOG_N_STEPS, PublicInputError::MaxSteps); let n_steps = Felt::TWO.pow_felt(&public_input.log_n_steps); let trace_length = stark_domains.trace_domain_size; ensure!( n_steps * Felt::from(CPU_COMPONENT_HEIGHT) * Felt::from(CPU_COMPONENT_STEP) == trace_length, - PublicInputValidateError::TraceLengthInvalid + PublicInputError::TraceLengthInvalid ); - ensure!( - Felt::ZERO <= public_input.range_check_min, - PublicInputValidateError::RangeCheckInvalid - ); + ensure!(Felt::ZERO <= public_input.range_check_min, PublicInputError::RangeCheckInvalid); ensure!( public_input.range_check_min < public_input.range_check_max, - PublicInputValidateError::RangeCheckInvalid + PublicInputError::RangeCheckInvalid ); ensure!( public_input.range_check_max <= MAX_RANGE_CHECK, - PublicInputValidateError::RangeCheckInvalid + PublicInputError::RangeCheckInvalid ); - ensure!( - public_input.layout == LAYOUT_CODE.into(), - PublicInputValidateError::LayoutCodeInvalid - ); + ensure!(public_input.layout == LAYOUT_CODE.into(), PublicInputError::LayoutCodeInvalid); let output_uses = public_input .segments - .get(segments::OUTPUT) - .ok_or(PublicInputValidateError::SegmentMissing { segment: segments::OUTPUT })? + .get(crate::layout::segments::OUTPUT) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::OUTPUT })? .stop_ptr - public_input .segments - .get(segments::OUTPUT) - .ok_or(PublicInputValidateError::SegmentMissing { segment: segments::OUTPUT })? + .get(crate::layout::segments::OUTPUT) + .ok_or(PublicInputError::SegmentMissing { + segment: crate::layout::segments::OUTPUT, + })? .begin_addr; - ensure!(output_uses < u128::MAX.into(), PublicInputValidateError::UsesInvalid); + ensure!(output_uses < u128::MAX.into(), PublicInputError::UsesInvalid); let pedersen_copies = trace_length .field_div(&NonZeroFelt::from_felt_unchecked(Felt::from(PEDERSEN_BUILTIN_ROW_RATIO))); let pedersen_uses = (public_input .segments .get(segments::PEDERSEN) - .ok_or(PublicInputValidateError::SegmentMissing { segment: segments::OUTPUT })? + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::OUTPUT })? .stop_ptr - public_input .segments .get(segments::PEDERSEN) - .ok_or(PublicInputValidateError::SegmentMissing { segment: segments::OUTPUT })? + .ok_or(PublicInputError::SegmentMissing { + segment: crate::layout::segments::OUTPUT, + })? .begin_addr) .field_div(&NonZeroFelt::from_felt_unchecked(Felt::THREE)); - ensure!(pedersen_uses < pedersen_copies, PublicInputValidateError::UsesInvalid); + ensure!(pedersen_uses < pedersen_copies, PublicInputError::UsesInvalid); let range_check_copies = trace_length.field_div(&NonZeroFelt::from_felt_unchecked( Felt::from(RANGE_CHECK_BUILTIN_ROW_RATIO), @@ -308,29 +311,92 @@ impl LayoutTrait for RecursiveLayout { let range_check_uses = public_input .segments .get(segments::RANGE_CHECK) - .ok_or(PublicInputValidateError::SegmentMissing { segment: segments::OUTPUT })? + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::OUTPUT })? .stop_ptr - public_input .segments .get(segments::RANGE_CHECK) - .ok_or(PublicInputValidateError::SegmentMissing { segment: segments::OUTPUT })? + .ok_or(PublicInputError::SegmentMissing { + segment: crate::layout::segments::OUTPUT, + })? .begin_addr; - ensure!(range_check_uses < range_check_copies, PublicInputValidateError::UsesInvalid); + ensure!(range_check_uses < range_check_copies, PublicInputError::UsesInvalid); let bitwise_copies = trace_length .field_div(&NonZeroFelt::from_felt_unchecked(Felt::from(BITWISE_ROW_RATIO))); let bitwise_uses = (public_input .segments .get(segments::BITWISE) - .ok_or(PublicInputValidateError::SegmentMissing { segment: segments::OUTPUT })? + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::OUTPUT })? .stop_ptr - public_input .segments .get(segments::BITWISE) - .ok_or(PublicInputValidateError::SegmentMissing { segment: segments::OUTPUT })? + .ok_or(PublicInputError::SegmentMissing { + segment: crate::layout::segments::OUTPUT, + })? .begin_addr) .field_div(&NonZeroFelt::from_felt_unchecked(Felt::from(0x5))); - ensure!(bitwise_uses < bitwise_copies, PublicInputValidateError::UsesInvalid); + ensure!(bitwise_uses < bitwise_copies, PublicInputError::UsesInvalid); Ok(()) } + + fn verify_public_input(public_input: &PublicInput) -> Result<(Felt, Felt), PublicInputError> { + let public_segments = &public_input.segments; + + let initial_pc = public_segments + .get(crate::layout::segments::PROGRAM) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::PROGRAM })? + .begin_addr; + let final_pc = public_segments + .get(crate::layout::segments::PROGRAM) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::PROGRAM })? + .stop_ptr; + let initial_ap = public_segments + .get(crate::layout::segments::EXECUTION) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::PROGRAM })? + .begin_addr; + let initial_fp = initial_ap; + let final_ap = public_segments + .get(crate::layout::segments::EXECUTION) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::PROGRAM })? + .stop_ptr; + let output_start = public_segments + .get(crate::layout::segments::OUTPUT) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::PROGRAM })? + .begin_addr; + let output_stop = public_segments + .get(crate::layout::segments::OUTPUT) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::PROGRAM })? + .stop_ptr; + + ensure!(initial_ap < MAX_ADDRESS, PublicInputError::MaxSteps); + ensure!(final_ap < MAX_ADDRESS, PublicInputError::MaxSteps); + + // TODO support more pages? + ensure!(public_input.continuous_page_headers.is_empty(), PublicInputError::MaxSteps); + + let memory = &public_input + .main_page + .iter() + .flat_map(|v| vec![v.address, v.value]) + .collect::>(); + + // 1. Program segment + ensure!(initial_pc == INITIAL_PC, PublicInputError::MaxSteps); + ensure!(final_pc == INITIAL_PC + 4, PublicInputError::MaxSteps); + + let program_end_pc = initial_fp - 2; + let program = &memory[initial_pc.to_bigint().try_into().unwrap() + ..program_end_pc.to_bigint().try_into().unwrap()]; + + let program_hash = poseidon_hash_many(program); + + let output_len: usize = (output_stop - output_start).to_bigint().try_into().unwrap(); + // 3. Output segment + let output = &memory[memory.len() - output_len..memory.len()]; + let output_hash = poseidon_hash_many(output); + + Ok((program_hash, output_hash)) + } } diff --git a/crates/air/src/public_memory.rs b/crates/air/src/public_memory.rs index 205debe..a4ef76e 100644 --- a/crates/air/src/public_memory.rs +++ b/crates/air/src/public_memory.rs @@ -5,7 +5,9 @@ use starknet_core::{serde::unsigned_field_element::UfeHex, types::NonZeroFelt}; use starknet_crypto::{pedersen_hash, poseidon_hash_many, Felt}; pub const MAX_LOG_N_STEPS: Felt = Felt::from_hex_unchecked("50"); -pub const MAX_RANGE_CHECK: Felt = Felt::from_hex_unchecked("0xffff"); // 2 ** 16 - 1 +pub const MAX_RANGE_CHECK: Felt = Felt::from_hex_unchecked("0xffff"); +pub const MAX_ADDRESS: Felt = Felt::from_hex_unchecked("0xffffffffffffffff"); +pub const INITIAL_PC: Felt = Felt::from_hex_unchecked("0x1"); #[serde_as] #[derive(Debug, PartialEq, Serialize, Deserialize)] @@ -65,7 +67,7 @@ impl PublicInput { (prod, total_length) } - pub fn get_public_input_hash(&self) -> Felt { + pub fn get_hash(&self) -> Felt { let mut main_page_hash = Felt::ZERO; for memory in self.main_page.iter() { main_page_hash = pedersen_hash(&main_page_hash, &memory.address); diff --git a/crates/air/src/tests/public_input.rs b/crates/air/src/tests/public_input.rs index 92affba..349c3b8 100644 --- a/crates/air/src/tests/public_input.rs +++ b/crates/air/src/tests/public_input.rs @@ -5,7 +5,7 @@ use starknet_crypto::Felt; fn test_public_input_hash() { let public_input = get(); assert_eq!( - public_input.get_public_input_hash(), + public_input.get_hash(), Felt::from_hex_unchecked( "0xaf91f2c71f4a594b1575d258ce82464475c82d8fb244142d0db450491c1b52" ) diff --git a/crates/stark/src/stark.rs b/crates/stark/src/stark.rs index 86d9031..563faec 100644 --- a/crates/stark/src/stark.rs +++ b/crates/stark/src/stark.rs @@ -3,17 +3,17 @@ use crate::{ }; impl StarkProof { - pub fn verify(&self, security_bits: Felt) -> Result { + pub fn verify(&self, security_bits: Felt) -> Result<(Felt, Felt), Error> { self.config.validate(security_bits)?; // Validate the public input. let stark_domains = StarkDomains::new(self.config.log_trace_domain_size, self.config.log_n_cosets); - Layout::validate(&self.public_input, &stark_domains)?; + Layout::validate_public_input(&self.public_input, &stark_domains)?; // Compute the initial hash seed for the Fiat-Shamir transcript. - let digest = self.public_input.get_public_input_hash(); + let digest = self.public_input.get_hash(); // Construct the transcript. let mut transcript = Transcript::new(digest); @@ -43,7 +43,7 @@ impl StarkProof { &stark_domains, )?; - Ok(digest) + Ok(Layout::verify_public_input(&self.public_input)?) } } @@ -51,7 +51,7 @@ use cairovm_verifier_air::{ domains::StarkDomains, layout::{ recursive::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND}, - LayoutTrait, PublicInputValidateError, + LayoutTrait, PublicInputError, }, }; use cairovm_verifier_transcript::transcript::Transcript; @@ -63,8 +63,8 @@ pub enum Error { #[error("Vector Error")] Validation(#[from] crate::config::Error), - #[error("PublicInputValidateError Error")] - PublicInputValidateError(#[from] PublicInputValidateError), + #[error("PublicInputError Error")] + PublicInputError(#[from] PublicInputError), #[error("Commit Error")] Commit(#[from] crate::commit::Error), diff --git a/crates/stark/src/tests/proof.rs b/crates/stark/src/tests/proof.rs index 0becaaa..a9276ae 100644 --- a/crates/stark/src/tests/proof.rs +++ b/crates/stark/src/tests/proof.rs @@ -16,5 +16,7 @@ fn test_stark_proof_fibonacci_verify() { witness: witness::get(), }; - stark_proof.verify::(security_bits).unwrap(); + let (program_hash, output_hash) = stark_proof.verify::(security_bits).unwrap(); + assert_eq!(program_hash, Felt::from_hex_unchecked("0x603f45d671891116de1e763d11d71d25102ff93707dafc97a8d06e18145baf5")); + assert_eq!(output_hash, Felt::from_hex_unchecked("0x21e35055ced9a22156eed737abcea133f8406f7f7e78222cf4f0f1271216adb")); } From f6cf3bf4f6358ae9d1384bb0f7c31418a2574ff7 Mon Sep 17 00:00:00 2001 From: Bartosz Nowak Date: Sat, 13 Jul 2024 19:49:49 +0200 Subject: [PATCH 2/3] dex recursive recursive_with_poseidon layouts --- crates/air/src/layout/dex/autogenerated.rs | 2306 +++++++++++++++++ crates/air/src/layout/dex/global_values.rs | 102 + crates/air/src/layout/dex/mod.rs | 396 +++ crates/air/src/layout/mod.rs | 21 + crates/air/src/layout/recursive/mod.rs | 4 +- .../recursive_with_poseidon/autogenerated.rs | 2177 ++++++++++++++++ .../recursive_with_poseidon/global_values.rs | 120 + .../src/layout/recursive_with_poseidon/mod.rs | 444 ++++ crates/stark/src/tests/proof.rs | 14 +- 9 files changed, 5580 insertions(+), 4 deletions(-) create mode 100644 crates/air/src/layout/dex/autogenerated.rs create mode 100644 crates/air/src/layout/dex/global_values.rs create mode 100644 crates/air/src/layout/dex/mod.rs create mode 100644 crates/air/src/layout/recursive_with_poseidon/autogenerated.rs create mode 100644 crates/air/src/layout/recursive_with_poseidon/global_values.rs create mode 100644 crates/air/src/layout/recursive_with_poseidon/mod.rs diff --git a/crates/air/src/layout/dex/autogenerated.rs b/crates/air/src/layout/dex/autogenerated.rs new file mode 100644 index 0000000..c613a74 --- /dev/null +++ b/crates/air/src/layout/dex/autogenerated.rs @@ -0,0 +1,2306 @@ +use super::global_values::GlobalValues; +use super::{CONSTRAINT_DEGREE, NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND}; +use starknet_core::types::NonZeroFelt; +use starknet_crypto::Felt; + +pub fn eval_composition_polynomial_inner( + mask_values: &[Felt], + constraint_coefficients: &[Felt], + point: &Felt, + trace_generator: &Felt, + global_values: &GlobalValues, +) -> Felt { + // Compute powers. + let pow0 = point.pow_felt( + &global_values.trace_length.floor_div(&NonZeroFelt::from_felt_unchecked(Felt::from(8192))), + ); + let pow1 = pow0 * pow0; // pow(point, (safe_div(global_values.trace_length, 4096))). + let pow2 = point.pow_felt( + &global_values.trace_length.floor_div(&NonZeroFelt::from_felt_unchecked(Felt::from(512))), + ); + let pow3 = pow2 * pow2; // pow(point, (safe_div(global_values.trace_length, 256))). + let pow4 = pow3 * pow3; // pow(point, (safe_div(global_values.trace_length, 128))). + let pow5 = point.pow_felt( + &global_values.trace_length.floor_div(&NonZeroFelt::from_felt_unchecked(Felt::from(32))), + ); + let pow6 = pow5 * pow5; // pow(point, (safe_div(global_values.trace_length, 16))). + let pow7 = pow6 * pow6; // pow(point, (safe_div(global_values.trace_length, 8))). + let pow8 = pow7 * pow7; // pow(point, (safe_div(global_values.trace_length, 4))). + let pow9 = pow8 * pow8; // pow(point, (safe_div(global_values.trace_length, 2))). + let pow10 = pow9 * pow9; // pow(point, global_values.trace_length). + let pow11 = trace_generator.pow_felt(&(global_values.trace_length - 8192)); + let pow12 = trace_generator.pow_felt(&(global_values.trace_length - 128)); + let pow13 = trace_generator.pow_felt(&(global_values.trace_length - 4)); + let pow14 = trace_generator.pow_felt(&(global_values.trace_length - 2)); + let pow15 = trace_generator.pow_felt(&(global_values.trace_length - 16)); + let pow16 = trace_generator.pow_felt( + &(Felt::from(251) + * global_values + .trace_length + .floor_div(&NonZeroFelt::from_felt_unchecked(Felt::from(256)))), + ); + let pow17 = trace_generator.pow_felt( + &(global_values.trace_length.floor_div(&NonZeroFelt::from_felt_unchecked(Felt::from(2)))), + ); + let pow18 = trace_generator.pow_felt( + &(Felt::from(63) + * global_values + .trace_length + .floor_div(&NonZeroFelt::from_felt_unchecked(Felt::from(64)))), + ); + let pow19 = trace_generator.pow_felt( + &(Felt::from(255) + * global_values + .trace_length + .floor_div(&NonZeroFelt::from_felt_unchecked(Felt::from(256)))), + ); + let pow20 = trace_generator.pow_felt( + &(Felt::from(15) + * global_values + .trace_length + .floor_div(&NonZeroFelt::from_felt_unchecked(Felt::from(16)))), + ); + + // Compute domains. + let domain0 = pow10 - 1; + let domain1 = pow9 - 1; + let domain2 = pow8 - 1; + let domain3 = pow7 - 1; + let domain4 = pow6 - pow20; + let domain5 = pow6 - 1; + let domain6 = pow5 - 1; + let domain7 = pow4 - 1; + let domain8 = pow3 - 1; + let domain9 = pow3 - pow19; + let domain10 = pow3 - pow18; + let domain11 = pow2 - pow17; + let domain12 = pow2 - 1; + let domain13 = pow1 - pow19; + let domain14 = pow1 - pow16; + let domain15 = pow1 - 1; + let domain16 = pow0 - pow19; + let domain17 = pow0 - pow16; + let domain18 = pow0 - 1; + let domain19 = point - pow15; + let domain20 = point - 1; + let domain21 = point - pow14; + let domain22 = point - pow13; + let domain23 = point - pow12; + let domain24 = point - pow11; + + // Fetch mask variables. + let column0_row0 = mask_values[0]; + let column0_row1 = mask_values[1]; + let column0_row2 = mask_values[2]; + let column0_row3 = mask_values[3]; + let column0_row4 = mask_values[4]; + let column0_row5 = mask_values[5]; + let column0_row6 = mask_values[6]; + let column0_row7 = mask_values[7]; + let column0_row8 = mask_values[8]; + let column0_row9 = mask_values[9]; + let column0_row10 = mask_values[10]; + let column0_row11 = mask_values[11]; + let column0_row12 = mask_values[12]; + let column0_row13 = mask_values[13]; + let column0_row14 = mask_values[14]; + let column0_row15 = mask_values[15]; + let column1_row0 = mask_values[16]; + let column1_row1 = mask_values[17]; + let column1_row255 = mask_values[18]; + let column1_row256 = mask_values[19]; + let column1_row511 = mask_values[20]; + let column2_row0 = mask_values[21]; + let column2_row1 = mask_values[22]; + let column2_row255 = mask_values[23]; + let column2_row256 = mask_values[24]; + let column3_row0 = mask_values[25]; + let column3_row1 = mask_values[26]; + let column3_row192 = mask_values[27]; + let column3_row193 = mask_values[28]; + let column3_row196 = mask_values[29]; + let column3_row197 = mask_values[30]; + let column3_row251 = mask_values[31]; + let column3_row252 = mask_values[32]; + let column3_row256 = mask_values[33]; + let column4_row0 = mask_values[34]; + let column4_row1 = mask_values[35]; + let column4_row255 = mask_values[36]; + let column4_row256 = mask_values[37]; + let column4_row511 = mask_values[38]; + let column5_row0 = mask_values[39]; + let column5_row1 = mask_values[40]; + let column5_row255 = mask_values[41]; + let column5_row256 = mask_values[42]; + let column6_row0 = mask_values[43]; + let column6_row1 = mask_values[44]; + let column6_row192 = mask_values[45]; + let column6_row193 = mask_values[46]; + let column6_row196 = mask_values[47]; + let column6_row197 = mask_values[48]; + let column6_row251 = mask_values[49]; + let column6_row252 = mask_values[50]; + let column6_row256 = mask_values[51]; + let column7_row0 = mask_values[52]; + let column7_row1 = mask_values[53]; + let column7_row255 = mask_values[54]; + let column7_row256 = mask_values[55]; + let column7_row511 = mask_values[56]; + let column8_row0 = mask_values[57]; + let column8_row1 = mask_values[58]; + let column8_row255 = mask_values[59]; + let column8_row256 = mask_values[60]; + let column9_row0 = mask_values[61]; + let column9_row1 = mask_values[62]; + let column9_row192 = mask_values[63]; + let column9_row193 = mask_values[64]; + let column9_row196 = mask_values[65]; + let column9_row197 = mask_values[66]; + let column9_row251 = mask_values[67]; + let column9_row252 = mask_values[68]; + let column9_row256 = mask_values[69]; + let column10_row0 = mask_values[70]; + let column10_row1 = mask_values[71]; + let column10_row255 = mask_values[72]; + let column10_row256 = mask_values[73]; + let column10_row511 = mask_values[74]; + let column11_row0 = mask_values[75]; + let column11_row1 = mask_values[76]; + let column11_row255 = mask_values[77]; + let column11_row256 = mask_values[78]; + let column12_row0 = mask_values[79]; + let column12_row1 = mask_values[80]; + let column12_row192 = mask_values[81]; + let column12_row193 = mask_values[82]; + let column12_row196 = mask_values[83]; + let column12_row197 = mask_values[84]; + let column12_row251 = mask_values[85]; + let column12_row252 = mask_values[86]; + let column12_row256 = mask_values[87]; + let column13_row0 = mask_values[88]; + let column13_row255 = mask_values[89]; + let column14_row0 = mask_values[90]; + let column14_row255 = mask_values[91]; + let column15_row0 = mask_values[92]; + let column15_row255 = mask_values[93]; + let column16_row0 = mask_values[94]; + let column16_row255 = mask_values[95]; + let column17_row0 = mask_values[96]; + let column17_row1 = mask_values[97]; + let column17_row2 = mask_values[98]; + let column17_row3 = mask_values[99]; + let column17_row4 = mask_values[100]; + let column17_row5 = mask_values[101]; + let column17_row6 = mask_values[102]; + let column17_row7 = mask_values[103]; + let column17_row8 = mask_values[104]; + let column17_row9 = mask_values[105]; + let column17_row12 = mask_values[106]; + let column17_row13 = mask_values[107]; + let column17_row16 = mask_values[108]; + let column17_row22 = mask_values[109]; + let column17_row23 = mask_values[110]; + let column17_row38 = mask_values[111]; + let column17_row39 = mask_values[112]; + let column17_row70 = mask_values[113]; + let column17_row71 = mask_values[114]; + let column17_row102 = mask_values[115]; + let column17_row103 = mask_values[116]; + let column17_row134 = mask_values[117]; + let column17_row135 = mask_values[118]; + let column17_row167 = mask_values[119]; + let column17_row199 = mask_values[120]; + let column17_row230 = mask_values[121]; + let column17_row263 = mask_values[122]; + let column17_row295 = mask_values[123]; + let column17_row327 = mask_values[124]; + let column17_row391 = mask_values[125]; + let column17_row423 = mask_values[126]; + let column17_row455 = mask_values[127]; + let column17_row4118 = mask_values[128]; + let column17_row4119 = mask_values[129]; + let column17_row8214 = mask_values[130]; + let column18_row0 = mask_values[131]; + let column18_row1 = mask_values[132]; + let column18_row2 = mask_values[133]; + let column18_row3 = mask_values[134]; + let column19_row0 = mask_values[135]; + let column19_row1 = mask_values[136]; + let column19_row2 = mask_values[137]; + let column19_row3 = mask_values[138]; + let column19_row4 = mask_values[139]; + let column19_row5 = mask_values[140]; + let column19_row6 = mask_values[141]; + let column19_row7 = mask_values[142]; + let column19_row8 = mask_values[143]; + let column19_row9 = mask_values[144]; + let column19_row11 = mask_values[145]; + let column19_row12 = mask_values[146]; + let column19_row13 = mask_values[147]; + let column19_row15 = mask_values[148]; + let column19_row17 = mask_values[149]; + let column19_row23 = mask_values[150]; + let column19_row25 = mask_values[151]; + let column19_row28 = mask_values[152]; + let column19_row31 = mask_values[153]; + let column19_row44 = mask_values[154]; + let column19_row60 = mask_values[155]; + let column19_row76 = mask_values[156]; + let column19_row92 = mask_values[157]; + let column19_row108 = mask_values[158]; + let column19_row124 = mask_values[159]; + let column19_row4103 = mask_values[160]; + let column19_row4111 = mask_values[161]; + let column20_row0 = mask_values[162]; + let column20_row1 = mask_values[163]; + let column20_row2 = mask_values[164]; + let column20_row4 = mask_values[165]; + let column20_row6 = mask_values[166]; + let column20_row8 = mask_values[167]; + let column20_row10 = mask_values[168]; + let column20_row12 = mask_values[169]; + let column20_row14 = mask_values[170]; + let column20_row16 = mask_values[171]; + let column20_row17 = mask_values[172]; + let column20_row20 = mask_values[173]; + let column20_row22 = mask_values[174]; + let column20_row24 = mask_values[175]; + let column20_row30 = mask_values[176]; + let column20_row38 = mask_values[177]; + let column20_row46 = mask_values[178]; + let column20_row54 = mask_values[179]; + let column20_row81 = mask_values[180]; + let column20_row145 = mask_values[181]; + let column20_row209 = mask_values[182]; + let column20_row4080 = mask_values[183]; + let column20_row4082 = mask_values[184]; + let column20_row4088 = mask_values[185]; + let column20_row4090 = mask_values[186]; + let column20_row4092 = mask_values[187]; + let column20_row8161 = mask_values[188]; + let column20_row8166 = mask_values[189]; + let column20_row8176 = mask_values[190]; + let column20_row8178 = mask_values[191]; + let column20_row8182 = mask_values[192]; + let column20_row8184 = mask_values[193]; + let column20_row8186 = mask_values[194]; + let column20_row8190 = mask_values[195]; + let column21_inter1_row0 = mask_values[196]; + let column21_inter1_row1 = mask_values[197]; + let column21_inter1_row2 = mask_values[198]; + let column21_inter1_row5 = mask_values[199]; + + // Compute intermediate values. + // Compute intermediate values. + let cpu_decode_opcode_range_check_bit_0 = column0_row0 - (column0_row1 + column0_row1); + let cpu_decode_opcode_range_check_bit_2 = column0_row2 - (column0_row3 + column0_row3); + let cpu_decode_opcode_range_check_bit_4 = column0_row4 - (column0_row5 + column0_row5); + let cpu_decode_opcode_range_check_bit_3 = column0_row3 - (column0_row4 + column0_row4); + let cpu_decode_flag_op1_base_op0_0 = Felt::ONE + - (cpu_decode_opcode_range_check_bit_2 + + cpu_decode_opcode_range_check_bit_4 + + cpu_decode_opcode_range_check_bit_3); + let cpu_decode_opcode_range_check_bit_5 = column0_row5 - (column0_row6 + column0_row6); + let cpu_decode_opcode_range_check_bit_6 = column0_row6 - (column0_row7 + column0_row7); + let cpu_decode_opcode_range_check_bit_9 = column0_row9 - (column0_row10 + column0_row10); + let cpu_decode_flag_res_op1_0 = Felt::ONE + - (cpu_decode_opcode_range_check_bit_5 + + cpu_decode_opcode_range_check_bit_6 + + cpu_decode_opcode_range_check_bit_9); + let cpu_decode_opcode_range_check_bit_7 = column0_row7 - (column0_row8 + column0_row8); + let cpu_decode_opcode_range_check_bit_8 = column0_row8 - (column0_row9 + column0_row9); + let cpu_decode_flag_pc_update_regular_0 = Felt::ONE + - (cpu_decode_opcode_range_check_bit_7 + + cpu_decode_opcode_range_check_bit_8 + + cpu_decode_opcode_range_check_bit_9); + let cpu_decode_opcode_range_check_bit_12 = column0_row12 - (column0_row13 + column0_row13); + let cpu_decode_opcode_range_check_bit_13 = column0_row13 - (column0_row14 + column0_row14); + let cpu_decode_fp_update_regular_0 = + Felt::ONE - (cpu_decode_opcode_range_check_bit_12 + cpu_decode_opcode_range_check_bit_13); + let cpu_decode_opcode_range_check_bit_1 = column0_row1 - (column0_row2 + column0_row2); + let npc_reg_0 = column17_row0 + cpu_decode_opcode_range_check_bit_2 + 1; + let cpu_decode_opcode_range_check_bit_10 = column0_row10 - (column0_row11 + column0_row11); + let cpu_decode_opcode_range_check_bit_11 = column0_row11 - (column0_row12 + column0_row12); + let cpu_decode_opcode_range_check_bit_14 = column0_row14 - (column0_row15 + column0_row15); + let memory_address_diff_0 = column18_row2 - column18_row0; + let range_check16_diff_0 = column19_row6 - column19_row2; + let pedersen_hash0_ec_subset_sum_bit_0 = column3_row0 - (column3_row1 + column3_row1); + let pedersen_hash0_ec_subset_sum_bit_neg_0 = Felt::ONE - pedersen_hash0_ec_subset_sum_bit_0; + let pedersen_hash1_ec_subset_sum_bit_0 = column6_row0 - (column6_row1 + column6_row1); + let pedersen_hash1_ec_subset_sum_bit_neg_0 = Felt::ONE - pedersen_hash1_ec_subset_sum_bit_0; + let pedersen_hash2_ec_subset_sum_bit_0 = column9_row0 - (column9_row1 + column9_row1); + let pedersen_hash2_ec_subset_sum_bit_neg_0 = Felt::ONE - pedersen_hash2_ec_subset_sum_bit_0; + let pedersen_hash3_ec_subset_sum_bit_0 = column12_row0 - (column12_row1 + column12_row1); + let pedersen_hash3_ec_subset_sum_bit_neg_0 = Felt::ONE - pedersen_hash3_ec_subset_sum_bit_0; + let range_check_builtin_value0_0 = column19_row12; + let range_check_builtin_value1_0 = + range_check_builtin_value0_0 * global_values.offset_size + column19_row28; + let range_check_builtin_value2_0 = + range_check_builtin_value1_0 * global_values.offset_size + column19_row44; + let range_check_builtin_value3_0 = + range_check_builtin_value2_0 * global_values.offset_size + column19_row60; + let range_check_builtin_value4_0 = + range_check_builtin_value3_0 * global_values.offset_size + column19_row76; + let range_check_builtin_value5_0 = + range_check_builtin_value4_0 * global_values.offset_size + column19_row92; + let range_check_builtin_value6_0 = + range_check_builtin_value5_0 * global_values.offset_size + column19_row108; + let range_check_builtin_value7_0 = + range_check_builtin_value6_0 * global_values.offset_size + column19_row124; + let ecdsa_signature0_doubling_key_x_squared = column19_row7 * column19_row7; + let ecdsa_signature0_exponentiate_generator_bit_0 = + column20_row14 - (column20_row46 + column20_row46); + let ecdsa_signature0_exponentiate_generator_bit_neg_0 = + Felt::ONE - ecdsa_signature0_exponentiate_generator_bit_0; + let ecdsa_signature0_exponentiate_key_bit_0 = column20_row4 - (column20_row20 + column20_row20); + let ecdsa_signature0_exponentiate_key_bit_neg_0 = + Felt::ONE - ecdsa_signature0_exponentiate_key_bit_0; + + // Sum constraints. + let mut total_sum = Felt::ZERO; + + // Constraint: cpu/decode/opcode_range_check/bit. + let mut value = (cpu_decode_opcode_range_check_bit_0 * cpu_decode_opcode_range_check_bit_0 + - cpu_decode_opcode_range_check_bit_0) + * domain4.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[0] * value; + + // Constraint: cpu/decode/opcode_range_check/zero. + value = (column0_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain4)); + total_sum = total_sum + constraint_coefficients[1] * value; + + // Constraint: cpu/decode/opcode_range_check_input. + value = (column17_row1 + - (((column0_row0 * global_values.offset_size + column19_row4) + * global_values.offset_size + + column19_row8) + * global_values.offset_size + + column19_row0)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[2] * value; + + // Constraint: cpu/decode/flag_op1_base_op0_bit. + value = (cpu_decode_flag_op1_base_op0_0 * cpu_decode_flag_op1_base_op0_0 + - cpu_decode_flag_op1_base_op0_0) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[3] * value; + + // Constraint: cpu/decode/flag_res_op1_bit. + value = (cpu_decode_flag_res_op1_0 * cpu_decode_flag_res_op1_0 - cpu_decode_flag_res_op1_0) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[4] * value; + + // Constraint: cpu/decode/flag_pc_update_regular_bit. + value = (cpu_decode_flag_pc_update_regular_0 * cpu_decode_flag_pc_update_regular_0 + - cpu_decode_flag_pc_update_regular_0) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[5] * value; + + // Constraint: cpu/decode/fp_update_regular_bit. + value = (cpu_decode_fp_update_regular_0 * cpu_decode_fp_update_regular_0 + - cpu_decode_fp_update_regular_0) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[6] * value; + + // Constraint: cpu/operands/mem_dst_addr. + value = (column17_row8 + global_values.half_offset_size + - (cpu_decode_opcode_range_check_bit_0 * column19_row9 + + (Felt::ONE - cpu_decode_opcode_range_check_bit_0) * column19_row1 + + column19_row0)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[7] * value; + + // Constraint: cpu/operands/mem0_addr. + value = (column17_row4 + global_values.half_offset_size + - (cpu_decode_opcode_range_check_bit_1 * column19_row9 + + (Felt::ONE - cpu_decode_opcode_range_check_bit_1) * column19_row1 + + column19_row8)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[8] * value; + + // Constraint: cpu/operands/mem1_addr. + value = (column17_row12 + global_values.half_offset_size + - (cpu_decode_opcode_range_check_bit_2 * column17_row0 + + cpu_decode_opcode_range_check_bit_4 * column19_row1 + + cpu_decode_opcode_range_check_bit_3 * column19_row9 + + cpu_decode_flag_op1_base_op0_0 * column17_row5 + + column19_row4)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[9] * value; + + // Constraint: cpu/operands/ops_mul. + value = (column19_row5 - column17_row5 * column17_row13) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[10] * value; + + // Constraint: cpu/operands/res. + value = ((Felt::ONE - cpu_decode_opcode_range_check_bit_9) * column19_row13 + - (cpu_decode_opcode_range_check_bit_5 * (column17_row5 + column17_row13) + + cpu_decode_opcode_range_check_bit_6 * column19_row5 + + cpu_decode_flag_res_op1_0 * column17_row13)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[11] * value; + + // Constraint: cpu/update_registers/update_pc/tmp0. + value = (column19_row3 - cpu_decode_opcode_range_check_bit_9 * column17_row9) + * domain19.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[12] * value; + + // Constraint: cpu/update_registers/update_pc/tmp1. + value = (column19_row11 - column19_row3 * column19_row13) + * domain19.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[13] * value; + + // Constraint: cpu/update_registers/update_pc/pc_cond_negative. + value = ((Felt::ONE - cpu_decode_opcode_range_check_bit_9) * column17_row16 + + column19_row3 * (column17_row16 - (column17_row0 + column17_row13)) + - (cpu_decode_flag_pc_update_regular_0 * npc_reg_0 + + cpu_decode_opcode_range_check_bit_7 * column19_row13 + + cpu_decode_opcode_range_check_bit_8 * (column17_row0 + column19_row13))) + * domain19.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[14] * value; + + // Constraint: cpu/update_registers/update_pc/pc_cond_positive. + value = ((column19_row11 - cpu_decode_opcode_range_check_bit_9) * (column17_row16 - npc_reg_0)) + * domain19.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[15] * value; + + // Constraint: cpu/update_registers/update_ap/ap_update. + value = (column19_row17 + - (column19_row1 + + cpu_decode_opcode_range_check_bit_10 * column19_row13 + + cpu_decode_opcode_range_check_bit_11 + + cpu_decode_opcode_range_check_bit_12 * Felt::TWO)) + * domain19.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[16] * value; + + // Constraint: cpu/update_registers/update_fp/fp_update. + value = (column19_row25 + - (cpu_decode_fp_update_regular_0 * column19_row9 + + cpu_decode_opcode_range_check_bit_13 * column17_row9 + + cpu_decode_opcode_range_check_bit_12 * (column19_row1 + 2))) + * domain19.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[17] * value; + + // Constraint: cpu/opcodes/call/push_fp. + value = (cpu_decode_opcode_range_check_bit_12 * (column17_row9 - column19_row9)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[18] * value; + + // Constraint: cpu/opcodes/call/push_pc. + value = (cpu_decode_opcode_range_check_bit_12 + * (column17_row5 - (column17_row0 + cpu_decode_opcode_range_check_bit_2 + 1))) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[19] * value; + + // Constraint: cpu/opcodes/call/off0. + value = (cpu_decode_opcode_range_check_bit_12 + * (column19_row0 - global_values.half_offset_size)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[20] * value; + + // Constraint: cpu/opcodes/call/off1. + value = (cpu_decode_opcode_range_check_bit_12 + * (column19_row8 - (global_values.half_offset_size + 1))) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[21] * value; + + // Constraint: cpu/opcodes/call/flags. + value = (cpu_decode_opcode_range_check_bit_12 + * (cpu_decode_opcode_range_check_bit_12 + cpu_decode_opcode_range_check_bit_12 + 1 + 1 + - (cpu_decode_opcode_range_check_bit_0 + cpu_decode_opcode_range_check_bit_1 + 4))) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[22] * value; + + // Constraint: cpu/opcodes/ret/off0. + value = (cpu_decode_opcode_range_check_bit_13 + * (column19_row0 + 2 - global_values.half_offset_size)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[23] * value; + + // Constraint: cpu/opcodes/ret/off2. + value = (cpu_decode_opcode_range_check_bit_13 + * (column19_row4 + 1 - global_values.half_offset_size)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[24] * value; + + // Constraint: cpu/opcodes/ret/flags. + value = (cpu_decode_opcode_range_check_bit_13 + * (cpu_decode_opcode_range_check_bit_7 + + cpu_decode_opcode_range_check_bit_0 + + cpu_decode_opcode_range_check_bit_3 + + cpu_decode_flag_res_op1_0 + - 4)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[25] * value; + + // Constraint: cpu/opcodes/assert_eq/assert_eq. + value = (cpu_decode_opcode_range_check_bit_14 * (column17_row9 - column19_row13)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[26] * value; + + // Constraint: initial_ap. + value = (column19_row1 - global_values.initial_ap) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain20)); + total_sum = total_sum + constraint_coefficients[27] * value; + + // Constraint: initial_fp. + value = (column19_row9 - global_values.initial_ap) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain20)); + total_sum = total_sum + constraint_coefficients[28] * value; + + // Constraint: initial_pc. + value = (column17_row0 - global_values.initial_pc) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain20)); + total_sum = total_sum + constraint_coefficients[29] * value; + + // Constraint: final_ap. + value = (column19_row1 - global_values.final_ap) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain19)); + total_sum = total_sum + constraint_coefficients[30] * value; + + // Constraint: final_fp. + value = (column19_row9 - global_values.initial_ap) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain19)); + total_sum = total_sum + constraint_coefficients[31] * value; + + // Constraint: final_pc. + value = (column17_row0 - global_values.final_pc) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain19)); + total_sum = total_sum + constraint_coefficients[32] * value; + + // Constraint: memory/multi_column_perm/perm/init0. + value = ((global_values.memory_multi_column_perm_perm_interaction_elm + - (column18_row0 + + global_values.memory_multi_column_perm_hash_interaction_elm0 * column18_row1)) + * column21_inter1_row0 + + column17_row0 + + global_values.memory_multi_column_perm_hash_interaction_elm0 * column17_row1 + - global_values.memory_multi_column_perm_perm_interaction_elm) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain20)); + total_sum = total_sum + constraint_coefficients[33] * value; + + // Constraint: memory/multi_column_perm/perm/step0. + value = ((global_values.memory_multi_column_perm_perm_interaction_elm + - (column18_row2 + + global_values.memory_multi_column_perm_hash_interaction_elm0 * column18_row3)) + * column21_inter1_row2 + - (global_values.memory_multi_column_perm_perm_interaction_elm + - (column17_row2 + + global_values.memory_multi_column_perm_hash_interaction_elm0 * column17_row3)) + * column21_inter1_row0) + * domain21.floor_div(&NonZeroFelt::from_felt_unchecked(domain1)); + total_sum = total_sum + constraint_coefficients[34] * value; + + // Constraint: memory/multi_column_perm/perm/last. + value = (column21_inter1_row0 - global_values.memory_multi_column_perm_perm_public_memory_prod) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain21)); + total_sum = total_sum + constraint_coefficients[35] * value; + + // Constraint: memory/diff_is_bit. + value = (memory_address_diff_0 * memory_address_diff_0 - memory_address_diff_0) + * domain21.floor_div(&NonZeroFelt::from_felt_unchecked(domain1)); + total_sum = total_sum + constraint_coefficients[36] * value; + + // Constraint: memory/is_func. + value = ((memory_address_diff_0 - 1) * (column18_row1 - column18_row3)) + * domain21.floor_div(&NonZeroFelt::from_felt_unchecked(domain1)); + total_sum = total_sum + constraint_coefficients[37] * value; + + // Constraint: memory/initial_addr. + value = (column18_row0 - 1).floor_div(&NonZeroFelt::from_felt_unchecked(domain20)); + total_sum = total_sum + constraint_coefficients[38] * value; + + // Constraint: public_memory_addr_zero. + value = (column17_row2).floor_div(&NonZeroFelt::from_felt_unchecked(domain3)); + total_sum = total_sum + constraint_coefficients[39] * value; + + // Constraint: public_memory_value_zero. + value = (column17_row3).floor_div(&NonZeroFelt::from_felt_unchecked(domain3)); + total_sum = total_sum + constraint_coefficients[40] * value; + + // Constraint: range_check16/perm/init0. + value = ((global_values.range_check16_perm_interaction_elm - column19_row2) + * column21_inter1_row1 + + column19_row0 + - global_values.range_check16_perm_interaction_elm) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain20)); + total_sum = total_sum + constraint_coefficients[41] * value; + + // Constraint: range_check16/perm/step0. + value = ((global_values.range_check16_perm_interaction_elm - column19_row6) + * column21_inter1_row5 + - (global_values.range_check16_perm_interaction_elm - column19_row4) + * column21_inter1_row1) + * domain22.floor_div(&NonZeroFelt::from_felt_unchecked(domain2)); + total_sum = total_sum + constraint_coefficients[42] * value; + + // Constraint: range_check16/perm/last. + value = (column21_inter1_row1 - global_values.range_check16_perm_public_memory_prod) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain22)); + total_sum = total_sum + constraint_coefficients[43] * value; + + // Constraint: range_check16/diff_is_bit. + value = (range_check16_diff_0 * range_check16_diff_0 - range_check16_diff_0) + * domain22.floor_div(&NonZeroFelt::from_felt_unchecked(domain2)); + total_sum = total_sum + constraint_coefficients[44] * value; + + // Constraint: range_check16/minimum. + value = (column19_row2 - global_values.range_check_min) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain20)); + total_sum = total_sum + constraint_coefficients[45] * value; + + // Constraint: range_check16/maximum. + value = (column19_row2 - global_values.range_check_max) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain22)); + total_sum = total_sum + constraint_coefficients[46] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/last_one_is_zero. + value = (column14_row255 * (column3_row0 - (column3_row1 + column3_row1))) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[47] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/zeroes_between_ones0. + value = (column14_row255 + * (column3_row1 + - Felt::from_hex_unchecked("0x800000000000000000000000000000000000000000000000") + * column3_row192)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[48] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/cumulative_bit192. + value = (column14_row255 + - column13_row255 * (column3_row192 - (column3_row193 + column3_row193))) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[49] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/zeroes_between_ones192. + value = (column13_row255 * (column3_row193 - Felt::from(8) * column3_row196)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[50] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/cumulative_bit196. + value = (column13_row255 + - (column3_row251 - (column3_row252 + column3_row252)) + * (column3_row196 - (column3_row197 + column3_row197))) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[51] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/zeroes_between_ones196. + value = ((column3_row251 - (column3_row252 + column3_row252)) + * (column3_row197 - Felt::from_hex_unchecked("0x40000000000000") * column3_row251)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[52] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/booleanity_test. + value = (pedersen_hash0_ec_subset_sum_bit_0 * (pedersen_hash0_ec_subset_sum_bit_0 - 1)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[53] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/bit_extraction_end. + value = (column3_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain10)); + total_sum = total_sum + constraint_coefficients[54] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/zeros_tail. + value = (column3_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain9)); + total_sum = total_sum + constraint_coefficients[55] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/add_points/slope. + value = (pedersen_hash0_ec_subset_sum_bit_0 * (column2_row0 - global_values.pedersen_points_y) + - column13_row0 * (column1_row0 - global_values.pedersen_points_x)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[56] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/add_points/x. + value = (column13_row0 * column13_row0 + - pedersen_hash0_ec_subset_sum_bit_0 + * (column1_row0 + global_values.pedersen_points_x + column1_row1)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[57] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/add_points/y. + value = (pedersen_hash0_ec_subset_sum_bit_0 * (column2_row0 + column2_row1) + - column13_row0 * (column1_row0 - column1_row1)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[58] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/copy_point/x. + value = (pedersen_hash0_ec_subset_sum_bit_neg_0 * (column1_row1 - column1_row0)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[59] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/copy_point/y. + value = (pedersen_hash0_ec_subset_sum_bit_neg_0 * (column2_row1 - column2_row0)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[60] * value; + + // Constraint: pedersen/hash0/copy_point/x. + value = (column1_row256 - column1_row255) + * domain11.floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[61] * value; + + // Constraint: pedersen/hash0/copy_point/y. + value = (column2_row256 - column2_row255) + * domain11.floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[62] * value; + + // Constraint: pedersen/hash0/init/x. + value = (column1_row0 - global_values.pedersen_shift_point.x) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); + total_sum = total_sum + constraint_coefficients[63] * value; + + // Constraint: pedersen/hash0/init/y. + value = (column2_row0 - global_values.pedersen_shift_point.y) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); + total_sum = total_sum + constraint_coefficients[64] * value; + + // Constraint: pedersen/hash1/ec_subset_sum/bit_unpacking/last_one_is_zero. + value = (column16_row255 * (column6_row0 - (column6_row1 + column6_row1))) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[65] * value; + + // Constraint: pedersen/hash1/ec_subset_sum/bit_unpacking/zeroes_between_ones0. + value = (column16_row255 + * (column6_row1 + - Felt::from_hex_unchecked("0x800000000000000000000000000000000000000000000000") + * column6_row192)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[66] * value; + + // Constraint: pedersen/hash1/ec_subset_sum/bit_unpacking/cumulative_bit192. + value = (column16_row255 + - column15_row255 * (column6_row192 - (column6_row193 + column6_row193))) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[67] * value; + + // Constraint: pedersen/hash1/ec_subset_sum/bit_unpacking/zeroes_between_ones192. + value = (column15_row255 * (column6_row193 - Felt::from(8) * column6_row196)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[68] * value; + + // Constraint: pedersen/hash1/ec_subset_sum/bit_unpacking/cumulative_bit196. + value = (column15_row255 + - (column6_row251 - (column6_row252 + column6_row252)) + * (column6_row196 - (column6_row197 + column6_row197))) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[69] * value; + + // Constraint: pedersen/hash1/ec_subset_sum/bit_unpacking/zeroes_between_ones196. + value = ((column6_row251 - (column6_row252 + column6_row252)) + * (column6_row197 - Felt::from_hex_unchecked("0x40000000000000") * column6_row251)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[70] * value; + + // Constraint: pedersen/hash1/ec_subset_sum/booleanity_test. + value = (pedersen_hash1_ec_subset_sum_bit_0 * (pedersen_hash1_ec_subset_sum_bit_0 - 1)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[71] * value; + + // Constraint: pedersen/hash1/ec_subset_sum/bit_extraction_end. + value = (column6_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain10)); + total_sum = total_sum + constraint_coefficients[72] * value; + + // Constraint: pedersen/hash1/ec_subset_sum/zeros_tail. + value = (column6_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain9)); + total_sum = total_sum + constraint_coefficients[73] * value; + + // Constraint: pedersen/hash1/ec_subset_sum/add_points/slope. + value = (pedersen_hash1_ec_subset_sum_bit_0 * (column5_row0 - global_values.pedersen_points_y) + - column14_row0 * (column4_row0 - global_values.pedersen_points_x)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[74] * value; + + // Constraint: pedersen/hash1/ec_subset_sum/add_points/x. + value = (column14_row0 * column14_row0 + - pedersen_hash1_ec_subset_sum_bit_0 + * (column4_row0 + global_values.pedersen_points_x + column4_row1)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[75] * value; + + // Constraint: pedersen/hash1/ec_subset_sum/add_points/y. + value = (pedersen_hash1_ec_subset_sum_bit_0 * (column5_row0 + column5_row1) + - column14_row0 * (column4_row0 - column4_row1)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[76] * value; + + // Constraint: pedersen/hash1/ec_subset_sum/copy_point/x. + value = (pedersen_hash1_ec_subset_sum_bit_neg_0 * (column4_row1 - column4_row0)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[77] * value; + + // Constraint: pedersen/hash1/ec_subset_sum/copy_point/y. + value = (pedersen_hash1_ec_subset_sum_bit_neg_0 * (column5_row1 - column5_row0)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[78] * value; + + // Constraint: pedersen/hash1/copy_point/x. + value = (column4_row256 - column4_row255) + * domain11.floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[79] * value; + + // Constraint: pedersen/hash1/copy_point/y. + value = (column5_row256 - column5_row255) + * domain11.floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[80] * value; + + // Constraint: pedersen/hash1/init/x. + value = (column4_row0 - global_values.pedersen_shift_point.x) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); + total_sum = total_sum + constraint_coefficients[81] * value; + + // Constraint: pedersen/hash1/init/y. + value = (column5_row0 - global_values.pedersen_shift_point.y) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); + total_sum = total_sum + constraint_coefficients[82] * value; + + // Constraint: pedersen/hash2/ec_subset_sum/bit_unpacking/last_one_is_zero. + value = (column20_row145 * (column9_row0 - (column9_row1 + column9_row1))) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[83] * value; + + // Constraint: pedersen/hash2/ec_subset_sum/bit_unpacking/zeroes_between_ones0. + value = (column20_row145 + * (column9_row1 + - Felt::from_hex_unchecked("0x800000000000000000000000000000000000000000000000") + * column9_row192)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[84] * value; + + // Constraint: pedersen/hash2/ec_subset_sum/bit_unpacking/cumulative_bit192. + value = (column20_row145 + - column20_row17 * (column9_row192 - (column9_row193 + column9_row193))) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[85] * value; + + // Constraint: pedersen/hash2/ec_subset_sum/bit_unpacking/zeroes_between_ones192. + value = (column20_row17 * (column9_row193 - Felt::from(8) * column9_row196)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[86] * value; + + // Constraint: pedersen/hash2/ec_subset_sum/bit_unpacking/cumulative_bit196. + value = (column20_row17 + - (column9_row251 - (column9_row252 + column9_row252)) + * (column9_row196 - (column9_row197 + column9_row197))) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[87] * value; + + // Constraint: pedersen/hash2/ec_subset_sum/bit_unpacking/zeroes_between_ones196. + value = ((column9_row251 - (column9_row252 + column9_row252)) + * (column9_row197 - Felt::from_hex_unchecked("0x40000000000000") * column9_row251)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[88] * value; + + // Constraint: pedersen/hash2/ec_subset_sum/booleanity_test. + value = (pedersen_hash2_ec_subset_sum_bit_0 * (pedersen_hash2_ec_subset_sum_bit_0 - 1)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[89] * value; + + // Constraint: pedersen/hash2/ec_subset_sum/bit_extraction_end. + value = (column9_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain10)); + total_sum = total_sum + constraint_coefficients[90] * value; + + // Constraint: pedersen/hash2/ec_subset_sum/zeros_tail. + value = (column9_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain9)); + total_sum = total_sum + constraint_coefficients[91] * value; + + // Constraint: pedersen/hash2/ec_subset_sum/add_points/slope. + value = (pedersen_hash2_ec_subset_sum_bit_0 * (column8_row0 - global_values.pedersen_points_y) + - column15_row0 * (column7_row0 - global_values.pedersen_points_x)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[92] * value; + + // Constraint: pedersen/hash2/ec_subset_sum/add_points/x. + value = (column15_row0 * column15_row0 + - pedersen_hash2_ec_subset_sum_bit_0 + * (column7_row0 + global_values.pedersen_points_x + column7_row1)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[93] * value; + + // Constraint: pedersen/hash2/ec_subset_sum/add_points/y. + value = (pedersen_hash2_ec_subset_sum_bit_0 * (column8_row0 + column8_row1) + - column15_row0 * (column7_row0 - column7_row1)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[94] * value; + + // Constraint: pedersen/hash2/ec_subset_sum/copy_point/x. + value = (pedersen_hash2_ec_subset_sum_bit_neg_0 * (column7_row1 - column7_row0)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[95] * value; + + // Constraint: pedersen/hash2/ec_subset_sum/copy_point/y. + value = (pedersen_hash2_ec_subset_sum_bit_neg_0 * (column8_row1 - column8_row0)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[96] * value; + + // Constraint: pedersen/hash2/copy_point/x. + value = (column7_row256 - column7_row255) + * domain11.floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[97] * value; + + // Constraint: pedersen/hash2/copy_point/y. + value = (column8_row256 - column8_row255) + * domain11.floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[98] * value; + + // Constraint: pedersen/hash2/init/x. + value = (column7_row0 - global_values.pedersen_shift_point.x) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); + total_sum = total_sum + constraint_coefficients[99] * value; + + // Constraint: pedersen/hash2/init/y. + value = (column8_row0 - global_values.pedersen_shift_point.y) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); + total_sum = total_sum + constraint_coefficients[100] * value; + + // Constraint: pedersen/hash3/ec_subset_sum/bit_unpacking/last_one_is_zero. + value = (column20_row209 * (column12_row0 - (column12_row1 + column12_row1))) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[101] * value; + + // Constraint: pedersen/hash3/ec_subset_sum/bit_unpacking/zeroes_between_ones0. + value = (column20_row209 + * (column12_row1 + - Felt::from_hex_unchecked("0x800000000000000000000000000000000000000000000000") + * column12_row192)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[102] * value; + + // Constraint: pedersen/hash3/ec_subset_sum/bit_unpacking/cumulative_bit192. + value = (column20_row209 + - column20_row81 * (column12_row192 - (column12_row193 + column12_row193))) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[103] * value; + + // Constraint: pedersen/hash3/ec_subset_sum/bit_unpacking/zeroes_between_ones192. + value = (column20_row81 * (column12_row193 - Felt::from(8) * column12_row196)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[104] * value; + + // Constraint: pedersen/hash3/ec_subset_sum/bit_unpacking/cumulative_bit196. + value = (column20_row81 + - (column12_row251 - (column12_row252 + column12_row252)) + * (column12_row196 - (column12_row197 + column12_row197))) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[105] * value; + + // Constraint: pedersen/hash3/ec_subset_sum/bit_unpacking/zeroes_between_ones196. + value = ((column12_row251 - (column12_row252 + column12_row252)) + * (column12_row197 - Felt::from_hex_unchecked("0x40000000000000") * column12_row251)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[106] * value; + + // Constraint: pedersen/hash3/ec_subset_sum/booleanity_test. + value = (pedersen_hash3_ec_subset_sum_bit_0 * (pedersen_hash3_ec_subset_sum_bit_0 - 1)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[107] * value; + + // Constraint: pedersen/hash3/ec_subset_sum/bit_extraction_end. + value = (column12_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain10)); + total_sum = total_sum + constraint_coefficients[108] * value; + + // Constraint: pedersen/hash3/ec_subset_sum/zeros_tail. + value = (column12_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain9)); + total_sum = total_sum + constraint_coefficients[109] * value; + + // Constraint: pedersen/hash3/ec_subset_sum/add_points/slope. + value = (pedersen_hash3_ec_subset_sum_bit_0 + * (column11_row0 - global_values.pedersen_points_y) + - column16_row0 * (column10_row0 - global_values.pedersen_points_x)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[110] * value; + + // Constraint: pedersen/hash3/ec_subset_sum/add_points/x. + value = (column16_row0 * column16_row0 + - pedersen_hash3_ec_subset_sum_bit_0 + * (column10_row0 + global_values.pedersen_points_x + column10_row1)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[111] * value; + + // Constraint: pedersen/hash3/ec_subset_sum/add_points/y. + value = (pedersen_hash3_ec_subset_sum_bit_0 * (column11_row0 + column11_row1) + - column16_row0 * (column10_row0 - column10_row1)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[112] * value; + + // Constraint: pedersen/hash3/ec_subset_sum/copy_point/x. + value = (pedersen_hash3_ec_subset_sum_bit_neg_0 * (column10_row1 - column10_row0)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[113] * value; + + // Constraint: pedersen/hash3/ec_subset_sum/copy_point/y. + value = (pedersen_hash3_ec_subset_sum_bit_neg_0 * (column11_row1 - column11_row0)) + * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[114] * value; + + // Constraint: pedersen/hash3/copy_point/x. + value = (column10_row256 - column10_row255) + * domain11.floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[115] * value; + + // Constraint: pedersen/hash3/copy_point/y. + value = (column11_row256 - column11_row255) + * domain11.floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[116] * value; + + // Constraint: pedersen/hash3/init/x. + value = (column10_row0 - global_values.pedersen_shift_point.x) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); + total_sum = total_sum + constraint_coefficients[117] * value; + + // Constraint: pedersen/hash3/init/y. + value = (column11_row0 - global_values.pedersen_shift_point.y) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); + total_sum = total_sum + constraint_coefficients[118] * value; + + // Constraint: pedersen/input0_value0. + value = (column17_row7 - column3_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); + total_sum = total_sum + constraint_coefficients[119] * value; + + // Constraint: pedersen/input0_value1. + value = (column17_row135 - column6_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); + total_sum = total_sum + constraint_coefficients[120] * value; + + // Constraint: pedersen/input0_value2. + value = (column17_row263 - column9_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); + total_sum = total_sum + constraint_coefficients[121] * value; + + // Constraint: pedersen/input0_value3. + value = + (column17_row391 - column12_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); + total_sum = total_sum + constraint_coefficients[122] * value; + + // Constraint: pedersen/input0_addr. + value = (column17_row134 - (column17_row38 + 1)) + * domain23.floor_div(&NonZeroFelt::from_felt_unchecked(domain7)); + total_sum = total_sum + constraint_coefficients[123] * value; + + // Constraint: pedersen/init_addr. + value = (column17_row6 - global_values.initial_pedersen_addr) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain20)); + total_sum = total_sum + constraint_coefficients[124] * value; + + // Constraint: pedersen/input1_value0. + value = + (column17_row71 - column3_row256).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); + total_sum = total_sum + constraint_coefficients[125] * value; + + // Constraint: pedersen/input1_value1. + value = + (column17_row199 - column6_row256).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); + total_sum = total_sum + constraint_coefficients[126] * value; + + // Constraint: pedersen/input1_value2. + value = + (column17_row327 - column9_row256).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); + total_sum = total_sum + constraint_coefficients[127] * value; + + // Constraint: pedersen/input1_value3. + value = + (column17_row455 - column12_row256).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); + total_sum = total_sum + constraint_coefficients[128] * value; + + // Constraint: pedersen/input1_addr. + value = (column17_row70 - (column17_row6 + 1)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain7)); + total_sum = total_sum + constraint_coefficients[129] * value; + + // Constraint: pedersen/output_value0. + value = + (column17_row39 - column1_row511).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); + total_sum = total_sum + constraint_coefficients[130] * value; + + // Constraint: pedersen/output_value1. + value = + (column17_row167 - column4_row511).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); + total_sum = total_sum + constraint_coefficients[131] * value; + + // Constraint: pedersen/output_value2. + value = + (column17_row295 - column7_row511).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); + total_sum = total_sum + constraint_coefficients[132] * value; + + // Constraint: pedersen/output_value3. + value = + (column17_row423 - column10_row511).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); + total_sum = total_sum + constraint_coefficients[133] * value; + + // Constraint: pedersen/output_addr. + value = (column17_row38 - (column17_row70 + 1)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain7)); + total_sum = total_sum + constraint_coefficients[134] * value; + + // Constraint: range_check_builtin/value. + value = (range_check_builtin_value7_0 - column17_row103) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain7)); + total_sum = total_sum + constraint_coefficients[135] * value; + + // Constraint: range_check_builtin/addr_step. + value = (column17_row230 - (column17_row102 + 1)) + * domain23.floor_div(&NonZeroFelt::from_felt_unchecked(domain7)); + total_sum = total_sum + constraint_coefficients[136] * value; + + // Constraint: range_check_builtin/init_addr. + value = (column17_row102 - global_values.initial_range_check_addr) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain20)); + total_sum = total_sum + constraint_coefficients[137] * value; + + // Constraint: ecdsa/signature0/doubling_key/slope. + value = (ecdsa_signature0_doubling_key_x_squared + + ecdsa_signature0_doubling_key_x_squared + + ecdsa_signature0_doubling_key_x_squared + + global_values.ecdsa_sig_config.alpha + - (column19_row15 + column19_row15) * column20_row12) + * domain13.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[138] * value; + + // Constraint: ecdsa/signature0/doubling_key/x. + value = (column20_row12 * column20_row12 - (column19_row7 + column19_row7 + column19_row23)) + * domain13.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[139] * value; + + // Constraint: ecdsa/signature0/doubling_key/y. + value = (column19_row15 + column19_row31 - column20_row12 * (column19_row7 - column19_row23)) + * domain13.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[140] * value; + + // Constraint: ecdsa/signature0/exponentiate_generator/booleanity_test. + value = (ecdsa_signature0_exponentiate_generator_bit_0 + * (ecdsa_signature0_exponentiate_generator_bit_0 - 1)) + * domain16.floor_div(&NonZeroFelt::from_felt_unchecked(domain6)); + total_sum = total_sum + constraint_coefficients[141] * value; + + // Constraint: ecdsa/signature0/exponentiate_generator/bit_extraction_end. + value = (column20_row14).floor_div(&NonZeroFelt::from_felt_unchecked(domain17)); + total_sum = total_sum + constraint_coefficients[142] * value; + + // Constraint: ecdsa/signature0/exponentiate_generator/zeros_tail. + value = (column20_row14).floor_div(&NonZeroFelt::from_felt_unchecked(domain6)); + total_sum = total_sum + constraint_coefficients[143] * value; + + // Constraint: ecdsa/signature0/exponentiate_generator/add_points/slope. + value = (ecdsa_signature0_exponentiate_generator_bit_0 + * (column20_row22 - global_values.ecdsa_generator_points_y) + - column20_row30 * (column20_row6 - global_values.ecdsa_generator_points_x)) + * domain16.floor_div(&NonZeroFelt::from_felt_unchecked(domain6)); + total_sum = total_sum + constraint_coefficients[144] * value; + + // Constraint: ecdsa/signature0/exponentiate_generator/add_points/x. + value = (column20_row30 * column20_row30 + - ecdsa_signature0_exponentiate_generator_bit_0 + * (column20_row6 + global_values.ecdsa_generator_points_x + column20_row38)) + * domain16.floor_div(&NonZeroFelt::from_felt_unchecked(domain6)); + total_sum = total_sum + constraint_coefficients[145] * value; + + // Constraint: ecdsa/signature0/exponentiate_generator/add_points/y. + value = (ecdsa_signature0_exponentiate_generator_bit_0 * (column20_row22 + column20_row54) + - column20_row30 * (column20_row6 - column20_row38)) + * domain16.floor_div(&NonZeroFelt::from_felt_unchecked(domain6)); + total_sum = total_sum + constraint_coefficients[146] * value; + + // Constraint: ecdsa/signature0/exponentiate_generator/add_points/x_diff_inv. + value = (column20_row1 * (column20_row6 - global_values.ecdsa_generator_points_x) - 1) + * domain16.floor_div(&NonZeroFelt::from_felt_unchecked(domain6)); + total_sum = total_sum + constraint_coefficients[147] * value; + + // Constraint: ecdsa/signature0/exponentiate_generator/copy_point/x. + value = (ecdsa_signature0_exponentiate_generator_bit_neg_0 * (column20_row38 - column20_row6)) + * domain16.floor_div(&NonZeroFelt::from_felt_unchecked(domain6)); + total_sum = total_sum + constraint_coefficients[148] * value; + + // Constraint: ecdsa/signature0/exponentiate_generator/copy_point/y. + value = (ecdsa_signature0_exponentiate_generator_bit_neg_0 * (column20_row54 - column20_row22)) + * domain16.floor_div(&NonZeroFelt::from_felt_unchecked(domain6)); + total_sum = total_sum + constraint_coefficients[149] * value; + + // Constraint: ecdsa/signature0/exponentiate_key/booleanity_test. + value = (ecdsa_signature0_exponentiate_key_bit_0 + * (ecdsa_signature0_exponentiate_key_bit_0 - 1)) + * domain13.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[150] * value; + + // Constraint: ecdsa/signature0/exponentiate_key/bit_extraction_end. + value = (column20_row4).floor_div(&NonZeroFelt::from_felt_unchecked(domain14)); + total_sum = total_sum + constraint_coefficients[151] * value; + + // Constraint: ecdsa/signature0/exponentiate_key/zeros_tail. + value = (column20_row4).floor_div(&NonZeroFelt::from_felt_unchecked(domain13)); + total_sum = total_sum + constraint_coefficients[152] * value; + + // Constraint: ecdsa/signature0/exponentiate_key/add_points/slope. + value = (ecdsa_signature0_exponentiate_key_bit_0 * (column20_row8 - column19_row15) + - column20_row2 * (column20_row0 - column19_row7)) + * domain13.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[153] * value; + + // Constraint: ecdsa/signature0/exponentiate_key/add_points/x. + value = (column20_row2 * column20_row2 + - ecdsa_signature0_exponentiate_key_bit_0 + * (column20_row0 + column19_row7 + column20_row16)) + * domain13.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[154] * value; + + // Constraint: ecdsa/signature0/exponentiate_key/add_points/y. + value = (ecdsa_signature0_exponentiate_key_bit_0 * (column20_row8 + column20_row24) + - column20_row2 * (column20_row0 - column20_row16)) + * domain13.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[155] * value; + + // Constraint: ecdsa/signature0/exponentiate_key/add_points/x_diff_inv. + value = (column20_row10 * (column20_row0 - column19_row7) - 1) + * domain13.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[156] * value; + + // Constraint: ecdsa/signature0/exponentiate_key/copy_point/x. + value = (ecdsa_signature0_exponentiate_key_bit_neg_0 * (column20_row16 - column20_row0)) + * domain13.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[157] * value; + + // Constraint: ecdsa/signature0/exponentiate_key/copy_point/y. + value = (ecdsa_signature0_exponentiate_key_bit_neg_0 * (column20_row24 - column20_row8)) + * domain13.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[158] * value; + + // Constraint: ecdsa/signature0/init_gen/x. + value = (column20_row6 - global_values.ecdsa_sig_config.shift_point.x) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); + total_sum = total_sum + constraint_coefficients[159] * value; + + // Constraint: ecdsa/signature0/init_gen/y. + value = (column20_row22 + global_values.ecdsa_sig_config.shift_point.y) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); + total_sum = total_sum + constraint_coefficients[160] * value; + + // Constraint: ecdsa/signature0/init_key/x. + value = (column20_row0 - global_values.ecdsa_sig_config.shift_point.x) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain15)); + total_sum = total_sum + constraint_coefficients[161] * value; + + // Constraint: ecdsa/signature0/init_key/y. + value = (column20_row8 - global_values.ecdsa_sig_config.shift_point.y) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain15)); + total_sum = total_sum + constraint_coefficients[162] * value; + + // Constraint: ecdsa/signature0/add_results/slope. + value = (column20_row8182 + - (column20_row4088 + column20_row8190 * (column20_row8166 - column20_row4080))) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); + total_sum = total_sum + constraint_coefficients[163] * value; + + // Constraint: ecdsa/signature0/add_results/x. + value = (column20_row8190 * column20_row8190 + - (column20_row8166 + column20_row4080 + column19_row4103)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); + total_sum = total_sum + constraint_coefficients[164] * value; + + // Constraint: ecdsa/signature0/add_results/y. + value = (column20_row8182 + column19_row4111 + - column20_row8190 * (column20_row8166 - column19_row4103)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); + total_sum = total_sum + constraint_coefficients[165] * value; + + // Constraint: ecdsa/signature0/add_results/x_diff_inv. + value = (column20_row8161 * (column20_row8166 - column20_row4080) - 1) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); + total_sum = total_sum + constraint_coefficients[166] * value; + + // Constraint: ecdsa/signature0/extract_r/slope. + value = (column20_row8184 + global_values.ecdsa_sig_config.shift_point.y + - column20_row4082 * (column20_row8176 - global_values.ecdsa_sig_config.shift_point.x)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); + total_sum = total_sum + constraint_coefficients[167] * value; + + // Constraint: ecdsa/signature0/extract_r/x. + value = (column20_row4082 * column20_row4082 + - (column20_row8176 + global_values.ecdsa_sig_config.shift_point.x + column20_row4)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); + total_sum = total_sum + constraint_coefficients[168] * value; + + // Constraint: ecdsa/signature0/extract_r/x_diff_inv. + value = (column20_row8178 * (column20_row8176 - global_values.ecdsa_sig_config.shift_point.x) + - 1) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); + total_sum = total_sum + constraint_coefficients[169] * value; + + // Constraint: ecdsa/signature0/z_nonzero. + value = (column20_row14 * column20_row4090 - 1) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); + total_sum = total_sum + constraint_coefficients[170] * value; + + // Constraint: ecdsa/signature0/r_and_w_nonzero. + value = (column20_row4 * column20_row4092 - 1) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain15)); + total_sum = total_sum + constraint_coefficients[171] * value; + + // Constraint: ecdsa/signature0/q_on_curve/x_squared. + value = (column20_row8186 - column19_row7 * column19_row7) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); + total_sum = total_sum + constraint_coefficients[172] * value; + + // Constraint: ecdsa/signature0/q_on_curve/on_curve. + value = (column19_row15 * column19_row15 + - (column19_row7 * column20_row8186 + + global_values.ecdsa_sig_config.alpha * column19_row7 + + global_values.ecdsa_sig_config.beta)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); + total_sum = total_sum + constraint_coefficients[173] * value; + + // Constraint: ecdsa/init_addr. + value = (column17_row22 - global_values.initial_ecdsa_addr) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain20)); + total_sum = total_sum + constraint_coefficients[174] * value; + + // Constraint: ecdsa/message_addr. + value = (column17_row4118 - (column17_row22 + 1)) + .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); + total_sum = total_sum + constraint_coefficients[175] * value; + + // Constraint: ecdsa/pubkey_addr. + value = (column17_row8214 - (column17_row4118 + 1)) + * domain24.floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); + total_sum = total_sum + constraint_coefficients[176] * value; + + // Constraint: ecdsa/message_value0. + value = + (column17_row4119 - column20_row14).floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); + total_sum = total_sum + constraint_coefficients[177] * value; + + // Constraint: ecdsa/pubkey_value0. + value = (column17_row23 - column19_row7).floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); + total_sum = total_sum + constraint_coefficients[178] * value; + + total_sum +} + +pub fn eval_oods_polynomial_inner( + column_values: &[Felt], + oods_values: &[Felt], + constraint_coefficients: &[Felt], + point: &Felt, + oods_point: &Felt, + trace_generator: &Felt, +) -> Felt { + // Compute powers. + let pow0 = trace_generator.pow(0_u128); + let pow1 = trace_generator.pow(8161_u128); + let pow2 = trace_generator.pow(4080_u128); + let pow3 = trace_generator.pow(1_u128); + let pow4 = pow3 * pow3; // pow(trace_generator, 2). + let pow5 = pow2 * pow4; // pow(trace_generator, 4082). + let pow6 = pow3 * pow4; // pow(trace_generator, 3). + let pow7 = pow3 * pow6; // pow(trace_generator, 4). + let pow8 = pow3 * pow7; // pow(trace_generator, 5). + let pow9 = pow1 * pow8; // pow(trace_generator, 8166). + let pow10 = pow3 * pow8; // pow(trace_generator, 6). + let pow11 = pow3 * pow10; // pow(trace_generator, 7). + let pow12 = pow3 * pow11; // pow(trace_generator, 8). + let pow13 = pow2 * pow12; // pow(trace_generator, 4088). + let pow14 = pow3 * pow12; // pow(trace_generator, 9). + let pow15 = pow3 * pow14; // pow(trace_generator, 10). + let pow16 = pow2 * pow15; // pow(trace_generator, 4090). + let pow17 = pow3 * pow15; // pow(trace_generator, 11). + let pow18 = pow3 * pow17; // pow(trace_generator, 12). + let pow19 = pow3 * pow18; // pow(trace_generator, 13). + let pow20 = pow3 * pow19; // pow(trace_generator, 14). + let pow21 = pow3 * pow20; // pow(trace_generator, 15). + let pow22 = pow3 * pow21; // pow(trace_generator, 16). + let pow23 = pow3 * pow22; // pow(trace_generator, 17). + let pow24 = pow6 * pow23; // pow(trace_generator, 20). + let pow25 = pow4 * pow24; // pow(trace_generator, 22). + let pow26 = pow3 * pow25; // pow(trace_generator, 23). + let pow27 = pow3 * pow26; // pow(trace_generator, 24). + let pow28 = pow3 * pow27; // pow(trace_generator, 25). + let pow29 = pow6 * pow28; // pow(trace_generator, 28). + let pow30 = pow4 * pow29; // pow(trace_generator, 30). + let pow31 = pow3 * pow30; // pow(trace_generator, 31). + let pow32 = pow1 * pow21; // pow(trace_generator, 8176). + let pow33 = pow1 * pow23; // pow(trace_generator, 8178). + let pow34 = pow11 * pow31; // pow(trace_generator, 38). + let pow35 = pow3 * pow34; // pow(trace_generator, 39). + let pow36 = pow8 * pow35; // pow(trace_generator, 44). + let pow37 = pow4 * pow36; // pow(trace_generator, 46). + let pow38 = pow12 * pow37; // pow(trace_generator, 54). + let pow39 = pow10 * pow38; // pow(trace_generator, 60). + let pow40 = pow15 * pow39; // pow(trace_generator, 70). + let pow41 = pow3 * pow40; // pow(trace_generator, 71). + let pow42 = pow8 * pow41; // pow(trace_generator, 76). + let pow43 = pow8 * pow42; // pow(trace_generator, 81). + let pow44 = pow17 * pow43; // pow(trace_generator, 92). + let pow45 = pow15 * pow44; // pow(trace_generator, 102). + let pow46 = pow3 * pow45; // pow(trace_generator, 103). + let pow47 = pow8 * pow46; // pow(trace_generator, 108). + let pow48 = pow22 * pow47; // pow(trace_generator, 124). + let pow49 = pow15 * pow48; // pow(trace_generator, 134). + let pow50 = pow3 * pow49; // pow(trace_generator, 135). + let pow51 = pow15 * pow50; // pow(trace_generator, 145). + let pow52 = pow25 * pow51; // pow(trace_generator, 167). + let pow53 = pow28 * pow52; // pow(trace_generator, 192). + let pow54 = pow3 * pow53; // pow(trace_generator, 193). + let pow55 = pow6 * pow54; // pow(trace_generator, 196). + let pow56 = pow3 * pow55; // pow(trace_generator, 197). + let pow57 = pow38 * pow56; // pow(trace_generator, 251). + let pow58 = pow4 * pow56; // pow(trace_generator, 199). + let pow59 = pow31 * pow58; // pow(trace_generator, 230). + let pow60 = pow3 * pow57; // pow(trace_generator, 252). + let pow61 = pow2 * pow18; // pow(trace_generator, 4092). + let pow62 = pow7 * pow33; // pow(trace_generator, 8182). + let pow63 = pow1 * pow26; // pow(trace_generator, 8184). + let pow64 = pow1 * pow28; // pow(trace_generator, 8186). + let pow65 = pow7 * pow64; // pow(trace_generator, 8190). + let pow66 = pow2 * pow26; // pow(trace_generator, 4103). + let pow67 = pow2 * pow31; // pow(trace_generator, 4111). + let pow68 = pow27 * pow65; // pow(trace_generator, 8214). + let pow69 = pow2 * pow34; // pow(trace_generator, 4118). + let pow70 = pow2 * pow35; // pow(trace_generator, 4119). + let pow71 = pow15 * pow58; // pow(trace_generator, 209). + let pow72 = pow6 * pow60; // pow(trace_generator, 255). + let pow73 = pow3 * pow72; // pow(trace_generator, 256). + let pow74 = pow72 * pow73; // pow(trace_generator, 511). + let pow75 = pow52 * pow73; // pow(trace_generator, 423). + let pow76 = pow50 * pow73; // pow(trace_generator, 391). + let pow77 = pow41 * pow73; // pow(trace_generator, 327). + let pow78 = pow35 * pow73; // pow(trace_generator, 295). + let pow79 = pow11 * pow73; // pow(trace_generator, 263). + let pow80 = pow53 * pow79; // pow(trace_generator, 455). + + // Fetch columns. + let column0 = column_values[0]; + let column1 = column_values[1]; + let column2 = column_values[2]; + let column3 = column_values[3]; + let column4 = column_values[4]; + let column5 = column_values[5]; + let column6 = column_values[6]; + let column7 = column_values[7]; + let column8 = column_values[8]; + let column9 = column_values[9]; + let column10 = column_values[10]; + let column11 = column_values[11]; + let column12 = column_values[12]; + let column13 = column_values[13]; + let column14 = column_values[14]; + let column15 = column_values[15]; + let column16 = column_values[16]; + let column17 = column_values[17]; + let column18 = column_values[18]; + let column19 = column_values[19]; + let column20 = column_values[20]; + let column21 = column_values[21]; + + // Sum the OODS constraints on the trace polynomials. + let mut value: Felt; + let mut total_sum = Felt::ZERO; + + value = (column0 - oods_values[0]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[0] * value; + + value = (column0 - oods_values[1]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); + total_sum = total_sum + constraint_coefficients[1] * value; + + value = (column0 - oods_values[2]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); + total_sum = total_sum + constraint_coefficients[2] * value; + + value = (column0 - oods_values[3]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow6 * oods_point)); + total_sum = total_sum + constraint_coefficients[3] * value; + + value = (column0 - oods_values[4]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow7 * oods_point)); + total_sum = total_sum + constraint_coefficients[4] * value; + + value = (column0 - oods_values[5]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow8 * oods_point)); + total_sum = total_sum + constraint_coefficients[5] * value; + + value = (column0 - oods_values[6]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow10 * oods_point)); + total_sum = total_sum + constraint_coefficients[6] * value; + + value = (column0 - oods_values[7]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow11 * oods_point)); + total_sum = total_sum + constraint_coefficients[7] * value; + + value = (column0 - oods_values[8]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow12 * oods_point)); + total_sum = total_sum + constraint_coefficients[8] * value; + + value = (column0 - oods_values[9]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow14 * oods_point)); + total_sum = total_sum + constraint_coefficients[9] * value; + + value = (column0 - oods_values[10]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow15 * oods_point)); + total_sum = total_sum + constraint_coefficients[10] * value; + + value = (column0 - oods_values[11]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow17 * oods_point)); + total_sum = total_sum + constraint_coefficients[11] * value; + + value = (column0 - oods_values[12]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow18 * oods_point)); + total_sum = total_sum + constraint_coefficients[12] * value; + + value = (column0 - oods_values[13]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow19 * oods_point)); + total_sum = total_sum + constraint_coefficients[13] * value; + + value = (column0 - oods_values[14]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow20 * oods_point)); + total_sum = total_sum + constraint_coefficients[14] * value; + + value = (column0 - oods_values[15]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow21 * oods_point)); + total_sum = total_sum + constraint_coefficients[15] * value; + + value = (column1 - oods_values[16]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[16] * value; + + value = (column1 - oods_values[17]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); + total_sum = total_sum + constraint_coefficients[17] * value; + + value = (column1 - oods_values[18]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); + total_sum = total_sum + constraint_coefficients[18] * value; + + value = (column1 - oods_values[19]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); + total_sum = total_sum + constraint_coefficients[19] * value; + + value = (column1 - oods_values[20]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow74 * oods_point)); + total_sum = total_sum + constraint_coefficients[20] * value; + + value = (column2 - oods_values[21]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[21] * value; + + value = (column2 - oods_values[22]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); + total_sum = total_sum + constraint_coefficients[22] * value; + + value = (column2 - oods_values[23]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); + total_sum = total_sum + constraint_coefficients[23] * value; + + value = (column2 - oods_values[24]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); + total_sum = total_sum + constraint_coefficients[24] * value; + + value = (column3 - oods_values[25]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[25] * value; + + value = (column3 - oods_values[26]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); + total_sum = total_sum + constraint_coefficients[26] * value; + + value = (column3 - oods_values[27]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow53 * oods_point)); + total_sum = total_sum + constraint_coefficients[27] * value; + + value = (column3 - oods_values[28]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow54 * oods_point)); + total_sum = total_sum + constraint_coefficients[28] * value; + + value = (column3 - oods_values[29]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow55 * oods_point)); + total_sum = total_sum + constraint_coefficients[29] * value; + + value = (column3 - oods_values[30]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow56 * oods_point)); + total_sum = total_sum + constraint_coefficients[30] * value; + + value = (column3 - oods_values[31]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow57 * oods_point)); + total_sum = total_sum + constraint_coefficients[31] * value; + + value = (column3 - oods_values[32]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow60 * oods_point)); + total_sum = total_sum + constraint_coefficients[32] * value; + + value = (column3 - oods_values[33]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); + total_sum = total_sum + constraint_coefficients[33] * value; + + value = (column4 - oods_values[34]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[34] * value; + + value = (column4 - oods_values[35]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); + total_sum = total_sum + constraint_coefficients[35] * value; + + value = (column4 - oods_values[36]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); + total_sum = total_sum + constraint_coefficients[36] * value; + + value = (column4 - oods_values[37]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); + total_sum = total_sum + constraint_coefficients[37] * value; + + value = (column4 - oods_values[38]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow74 * oods_point)); + total_sum = total_sum + constraint_coefficients[38] * value; + + value = (column5 - oods_values[39]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[39] * value; + + value = (column5 - oods_values[40]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); + total_sum = total_sum + constraint_coefficients[40] * value; + + value = (column5 - oods_values[41]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); + total_sum = total_sum + constraint_coefficients[41] * value; + + value = (column5 - oods_values[42]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); + total_sum = total_sum + constraint_coefficients[42] * value; + + value = (column6 - oods_values[43]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[43] * value; + + value = (column6 - oods_values[44]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); + total_sum = total_sum + constraint_coefficients[44] * value; + + value = (column6 - oods_values[45]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow53 * oods_point)); + total_sum = total_sum + constraint_coefficients[45] * value; + + value = (column6 - oods_values[46]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow54 * oods_point)); + total_sum = total_sum + constraint_coefficients[46] * value; + + value = (column6 - oods_values[47]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow55 * oods_point)); + total_sum = total_sum + constraint_coefficients[47] * value; + + value = (column6 - oods_values[48]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow56 * oods_point)); + total_sum = total_sum + constraint_coefficients[48] * value; + + value = (column6 - oods_values[49]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow57 * oods_point)); + total_sum = total_sum + constraint_coefficients[49] * value; + + value = (column6 - oods_values[50]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow60 * oods_point)); + total_sum = total_sum + constraint_coefficients[50] * value; + + value = (column6 - oods_values[51]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); + total_sum = total_sum + constraint_coefficients[51] * value; + + value = (column7 - oods_values[52]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[52] * value; + + value = (column7 - oods_values[53]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); + total_sum = total_sum + constraint_coefficients[53] * value; + + value = (column7 - oods_values[54]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); + total_sum = total_sum + constraint_coefficients[54] * value; + + value = (column7 - oods_values[55]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); + total_sum = total_sum + constraint_coefficients[55] * value; + + value = (column7 - oods_values[56]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow74 * oods_point)); + total_sum = total_sum + constraint_coefficients[56] * value; + + value = (column8 - oods_values[57]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[57] * value; + + value = (column8 - oods_values[58]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); + total_sum = total_sum + constraint_coefficients[58] * value; + + value = (column8 - oods_values[59]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); + total_sum = total_sum + constraint_coefficients[59] * value; + + value = (column8 - oods_values[60]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); + total_sum = total_sum + constraint_coefficients[60] * value; + + value = (column9 - oods_values[61]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[61] * value; + + value = (column9 - oods_values[62]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); + total_sum = total_sum + constraint_coefficients[62] * value; + + value = (column9 - oods_values[63]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow53 * oods_point)); + total_sum = total_sum + constraint_coefficients[63] * value; + + value = (column9 - oods_values[64]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow54 * oods_point)); + total_sum = total_sum + constraint_coefficients[64] * value; + + value = (column9 - oods_values[65]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow55 * oods_point)); + total_sum = total_sum + constraint_coefficients[65] * value; + + value = (column9 - oods_values[66]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow56 * oods_point)); + total_sum = total_sum + constraint_coefficients[66] * value; + + value = (column9 - oods_values[67]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow57 * oods_point)); + total_sum = total_sum + constraint_coefficients[67] * value; + + value = (column9 - oods_values[68]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow60 * oods_point)); + total_sum = total_sum + constraint_coefficients[68] * value; + + value = (column9 - oods_values[69]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); + total_sum = total_sum + constraint_coefficients[69] * value; + + value = (column10 - oods_values[70]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[70] * value; + + value = (column10 - oods_values[71]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); + total_sum = total_sum + constraint_coefficients[71] * value; + + value = (column10 - oods_values[72]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); + total_sum = total_sum + constraint_coefficients[72] * value; + + value = (column10 - oods_values[73]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); + total_sum = total_sum + constraint_coefficients[73] * value; + + value = (column10 - oods_values[74]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow74 * oods_point)); + total_sum = total_sum + constraint_coefficients[74] * value; + + value = (column11 - oods_values[75]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[75] * value; + + value = (column11 - oods_values[76]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); + total_sum = total_sum + constraint_coefficients[76] * value; + + value = (column11 - oods_values[77]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); + total_sum = total_sum + constraint_coefficients[77] * value; + + value = (column11 - oods_values[78]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); + total_sum = total_sum + constraint_coefficients[78] * value; + + value = (column12 - oods_values[79]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[79] * value; + + value = (column12 - oods_values[80]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); + total_sum = total_sum + constraint_coefficients[80] * value; + + value = (column12 - oods_values[81]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow53 * oods_point)); + total_sum = total_sum + constraint_coefficients[81] * value; + + value = (column12 - oods_values[82]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow54 * oods_point)); + total_sum = total_sum + constraint_coefficients[82] * value; + + value = (column12 - oods_values[83]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow55 * oods_point)); + total_sum = total_sum + constraint_coefficients[83] * value; + + value = (column12 - oods_values[84]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow56 * oods_point)); + total_sum = total_sum + constraint_coefficients[84] * value; + + value = (column12 - oods_values[85]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow57 * oods_point)); + total_sum = total_sum + constraint_coefficients[85] * value; + + value = (column12 - oods_values[86]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow60 * oods_point)); + total_sum = total_sum + constraint_coefficients[86] * value; + + value = (column12 - oods_values[87]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); + total_sum = total_sum + constraint_coefficients[87] * value; + + value = (column13 - oods_values[88]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[88] * value; + + value = (column13 - oods_values[89]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); + total_sum = total_sum + constraint_coefficients[89] * value; + + value = (column14 - oods_values[90]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[90] * value; + + value = (column14 - oods_values[91]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); + total_sum = total_sum + constraint_coefficients[91] * value; + + value = (column15 - oods_values[92]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[92] * value; + + value = (column15 - oods_values[93]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); + total_sum = total_sum + constraint_coefficients[93] * value; + + value = (column16 - oods_values[94]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[94] * value; + + value = (column16 - oods_values[95]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); + total_sum = total_sum + constraint_coefficients[95] * value; + + value = (column17 - oods_values[96]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[96] * value; + + value = (column17 - oods_values[97]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); + total_sum = total_sum + constraint_coefficients[97] * value; + + value = (column17 - oods_values[98]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); + total_sum = total_sum + constraint_coefficients[98] * value; + + value = (column17 - oods_values[99]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow6 * oods_point)); + total_sum = total_sum + constraint_coefficients[99] * value; + + value = (column17 - oods_values[100]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow7 * oods_point)); + total_sum = total_sum + constraint_coefficients[100] * value; + + value = (column17 - oods_values[101]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow8 * oods_point)); + total_sum = total_sum + constraint_coefficients[101] * value; + + value = (column17 - oods_values[102]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow10 * oods_point)); + total_sum = total_sum + constraint_coefficients[102] * value; + + value = (column17 - oods_values[103]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow11 * oods_point)); + total_sum = total_sum + constraint_coefficients[103] * value; + + value = (column17 - oods_values[104]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow12 * oods_point)); + total_sum = total_sum + constraint_coefficients[104] * value; + + value = (column17 - oods_values[105]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow14 * oods_point)); + total_sum = total_sum + constraint_coefficients[105] * value; + + value = (column17 - oods_values[106]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow18 * oods_point)); + total_sum = total_sum + constraint_coefficients[106] * value; + + value = (column17 - oods_values[107]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow19 * oods_point)); + total_sum = total_sum + constraint_coefficients[107] * value; + + value = (column17 - oods_values[108]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow22 * oods_point)); + total_sum = total_sum + constraint_coefficients[108] * value; + + value = (column17 - oods_values[109]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow25 * oods_point)); + total_sum = total_sum + constraint_coefficients[109] * value; + + value = (column17 - oods_values[110]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow26 * oods_point)); + total_sum = total_sum + constraint_coefficients[110] * value; + + value = (column17 - oods_values[111]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow34 * oods_point)); + total_sum = total_sum + constraint_coefficients[111] * value; + + value = (column17 - oods_values[112]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow35 * oods_point)); + total_sum = total_sum + constraint_coefficients[112] * value; + + value = (column17 - oods_values[113]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow40 * oods_point)); + total_sum = total_sum + constraint_coefficients[113] * value; + + value = (column17 - oods_values[114]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow41 * oods_point)); + total_sum = total_sum + constraint_coefficients[114] * value; + + value = (column17 - oods_values[115]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow45 * oods_point)); + total_sum = total_sum + constraint_coefficients[115] * value; + + value = (column17 - oods_values[116]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow46 * oods_point)); + total_sum = total_sum + constraint_coefficients[116] * value; + + value = (column17 - oods_values[117]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow49 * oods_point)); + total_sum = total_sum + constraint_coefficients[117] * value; + + value = (column17 - oods_values[118]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow50 * oods_point)); + total_sum = total_sum + constraint_coefficients[118] * value; + + value = (column17 - oods_values[119]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow52 * oods_point)); + total_sum = total_sum + constraint_coefficients[119] * value; + + value = (column17 - oods_values[120]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow58 * oods_point)); + total_sum = total_sum + constraint_coefficients[120] * value; + + value = (column17 - oods_values[121]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow59 * oods_point)); + total_sum = total_sum + constraint_coefficients[121] * value; + + value = (column17 - oods_values[122]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow79 * oods_point)); + total_sum = total_sum + constraint_coefficients[122] * value; + + value = (column17 - oods_values[123]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow78 * oods_point)); + total_sum = total_sum + constraint_coefficients[123] * value; + + value = (column17 - oods_values[124]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow77 * oods_point)); + total_sum = total_sum + constraint_coefficients[124] * value; + + value = (column17 - oods_values[125]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow76 * oods_point)); + total_sum = total_sum + constraint_coefficients[125] * value; + + value = (column17 - oods_values[126]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow75 * oods_point)); + total_sum = total_sum + constraint_coefficients[126] * value; + + value = (column17 - oods_values[127]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow80 * oods_point)); + total_sum = total_sum + constraint_coefficients[127] * value; + + value = (column17 - oods_values[128]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow69 * oods_point)); + total_sum = total_sum + constraint_coefficients[128] * value; + + value = (column17 - oods_values[129]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow70 * oods_point)); + total_sum = total_sum + constraint_coefficients[129] * value; + + value = (column17 - oods_values[130]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow68 * oods_point)); + total_sum = total_sum + constraint_coefficients[130] * value; + + value = (column18 - oods_values[131]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[131] * value; + + value = (column18 - oods_values[132]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); + total_sum = total_sum + constraint_coefficients[132] * value; + + value = (column18 - oods_values[133]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); + total_sum = total_sum + constraint_coefficients[133] * value; + + value = (column18 - oods_values[134]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow6 * oods_point)); + total_sum = total_sum + constraint_coefficients[134] * value; + + value = (column19 - oods_values[135]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[135] * value; + + value = (column19 - oods_values[136]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); + total_sum = total_sum + constraint_coefficients[136] * value; + + value = (column19 - oods_values[137]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); + total_sum = total_sum + constraint_coefficients[137] * value; + + value = (column19 - oods_values[138]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow6 * oods_point)); + total_sum = total_sum + constraint_coefficients[138] * value; + + value = (column19 - oods_values[139]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow7 * oods_point)); + total_sum = total_sum + constraint_coefficients[139] * value; + + value = (column19 - oods_values[140]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow8 * oods_point)); + total_sum = total_sum + constraint_coefficients[140] * value; + + value = (column19 - oods_values[141]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow10 * oods_point)); + total_sum = total_sum + constraint_coefficients[141] * value; + + value = (column19 - oods_values[142]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow11 * oods_point)); + total_sum = total_sum + constraint_coefficients[142] * value; + + value = (column19 - oods_values[143]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow12 * oods_point)); + total_sum = total_sum + constraint_coefficients[143] * value; + + value = (column19 - oods_values[144]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow14 * oods_point)); + total_sum = total_sum + constraint_coefficients[144] * value; + + value = (column19 - oods_values[145]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow17 * oods_point)); + total_sum = total_sum + constraint_coefficients[145] * value; + + value = (column19 - oods_values[146]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow18 * oods_point)); + total_sum = total_sum + constraint_coefficients[146] * value; + + value = (column19 - oods_values[147]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow19 * oods_point)); + total_sum = total_sum + constraint_coefficients[147] * value; + + value = (column19 - oods_values[148]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow21 * oods_point)); + total_sum = total_sum + constraint_coefficients[148] * value; + + value = (column19 - oods_values[149]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow23 * oods_point)); + total_sum = total_sum + constraint_coefficients[149] * value; + + value = (column19 - oods_values[150]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow26 * oods_point)); + total_sum = total_sum + constraint_coefficients[150] * value; + + value = (column19 - oods_values[151]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow28 * oods_point)); + total_sum = total_sum + constraint_coefficients[151] * value; + + value = (column19 - oods_values[152]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow29 * oods_point)); + total_sum = total_sum + constraint_coefficients[152] * value; + + value = (column19 - oods_values[153]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow31 * oods_point)); + total_sum = total_sum + constraint_coefficients[153] * value; + + value = (column19 - oods_values[154]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow36 * oods_point)); + total_sum = total_sum + constraint_coefficients[154] * value; + + value = (column19 - oods_values[155]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow39 * oods_point)); + total_sum = total_sum + constraint_coefficients[155] * value; + + value = (column19 - oods_values[156]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow42 * oods_point)); + total_sum = total_sum + constraint_coefficients[156] * value; + + value = (column19 - oods_values[157]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow44 * oods_point)); + total_sum = total_sum + constraint_coefficients[157] * value; + + value = (column19 - oods_values[158]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow47 * oods_point)); + total_sum = total_sum + constraint_coefficients[158] * value; + + value = (column19 - oods_values[159]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow48 * oods_point)); + total_sum = total_sum + constraint_coefficients[159] * value; + + value = (column19 - oods_values[160]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow66 * oods_point)); + total_sum = total_sum + constraint_coefficients[160] * value; + + value = (column19 - oods_values[161]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow67 * oods_point)); + total_sum = total_sum + constraint_coefficients[161] * value; + + value = (column20 - oods_values[162]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[162] * value; + + value = (column20 - oods_values[163]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); + total_sum = total_sum + constraint_coefficients[163] * value; + + value = (column20 - oods_values[164]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); + total_sum = total_sum + constraint_coefficients[164] * value; + + value = (column20 - oods_values[165]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow7 * oods_point)); + total_sum = total_sum + constraint_coefficients[165] * value; + + value = (column20 - oods_values[166]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow10 * oods_point)); + total_sum = total_sum + constraint_coefficients[166] * value; + + value = (column20 - oods_values[167]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow12 * oods_point)); + total_sum = total_sum + constraint_coefficients[167] * value; + + value = (column20 - oods_values[168]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow15 * oods_point)); + total_sum = total_sum + constraint_coefficients[168] * value; + + value = (column20 - oods_values[169]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow18 * oods_point)); + total_sum = total_sum + constraint_coefficients[169] * value; + + value = (column20 - oods_values[170]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow20 * oods_point)); + total_sum = total_sum + constraint_coefficients[170] * value; + + value = (column20 - oods_values[171]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow22 * oods_point)); + total_sum = total_sum + constraint_coefficients[171] * value; + + value = (column20 - oods_values[172]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow23 * oods_point)); + total_sum = total_sum + constraint_coefficients[172] * value; + + value = (column20 - oods_values[173]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow24 * oods_point)); + total_sum = total_sum + constraint_coefficients[173] * value; + + value = (column20 - oods_values[174]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow25 * oods_point)); + total_sum = total_sum + constraint_coefficients[174] * value; + + value = (column20 - oods_values[175]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow27 * oods_point)); + total_sum = total_sum + constraint_coefficients[175] * value; + + value = (column20 - oods_values[176]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow30 * oods_point)); + total_sum = total_sum + constraint_coefficients[176] * value; + + value = (column20 - oods_values[177]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow34 * oods_point)); + total_sum = total_sum + constraint_coefficients[177] * value; + + value = (column20 - oods_values[178]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow37 * oods_point)); + total_sum = total_sum + constraint_coefficients[178] * value; + + value = (column20 - oods_values[179]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow38 * oods_point)); + total_sum = total_sum + constraint_coefficients[179] * value; + + value = (column20 - oods_values[180]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow43 * oods_point)); + total_sum = total_sum + constraint_coefficients[180] * value; + + value = (column20 - oods_values[181]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow51 * oods_point)); + total_sum = total_sum + constraint_coefficients[181] * value; + + value = (column20 - oods_values[182]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow71 * oods_point)); + total_sum = total_sum + constraint_coefficients[182] * value; + + value = (column20 - oods_values[183]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow2 * oods_point)); + total_sum = total_sum + constraint_coefficients[183] * value; + + value = (column20 - oods_values[184]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow5 * oods_point)); + total_sum = total_sum + constraint_coefficients[184] * value; + + value = (column20 - oods_values[185]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow13 * oods_point)); + total_sum = total_sum + constraint_coefficients[185] * value; + + value = (column20 - oods_values[186]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow16 * oods_point)); + total_sum = total_sum + constraint_coefficients[186] * value; + + value = (column20 - oods_values[187]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow61 * oods_point)); + total_sum = total_sum + constraint_coefficients[187] * value; + + value = (column20 - oods_values[188]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow1 * oods_point)); + total_sum = total_sum + constraint_coefficients[188] * value; + + value = (column20 - oods_values[189]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow9 * oods_point)); + total_sum = total_sum + constraint_coefficients[189] * value; + + value = (column20 - oods_values[190]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow32 * oods_point)); + total_sum = total_sum + constraint_coefficients[190] * value; + + value = (column20 - oods_values[191]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow33 * oods_point)); + total_sum = total_sum + constraint_coefficients[191] * value; + + value = (column20 - oods_values[192]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow62 * oods_point)); + total_sum = total_sum + constraint_coefficients[192] * value; + + value = (column20 - oods_values[193]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow63 * oods_point)); + total_sum = total_sum + constraint_coefficients[193] * value; + + value = (column20 - oods_values[194]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow64 * oods_point)); + total_sum = total_sum + constraint_coefficients[194] * value; + + value = (column20 - oods_values[195]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow65 * oods_point)); + total_sum = total_sum + constraint_coefficients[195] * value; + + value = (column21 - oods_values[196]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[196] * value; + + value = (column21 - oods_values[197]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); + total_sum = total_sum + constraint_coefficients[197] * value; + + value = (column21 - oods_values[198]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); + total_sum = total_sum + constraint_coefficients[198] * value; + + value = (column21 - oods_values[199]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow8 * oods_point)); + total_sum = total_sum + constraint_coefficients[199] * value; + + // Sum the OODS boundary constraints on the composition polynomials. + let oods_point_to_deg = oods_point.pow(CONSTRAINT_DEGREE); + + value = (column_values[(NUM_COLUMNS_FIRST + NUM_COLUMNS_SECOND) as usize] - oods_values[200]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - oods_point_to_deg)); + total_sum += constraint_coefficients[200] * value; + + value = (column_values[(NUM_COLUMNS_FIRST + NUM_COLUMNS_SECOND + 1) as usize] + - oods_values[201]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - oods_point_to_deg)); + total_sum += constraint_coefficients[201] * value; + + total_sum +} diff --git a/crates/air/src/layout/dex/global_values.rs b/crates/air/src/layout/dex/global_values.rs new file mode 100644 index 0000000..c89b37e --- /dev/null +++ b/crates/air/src/layout/dex/global_values.rs @@ -0,0 +1,102 @@ +use cairovm_verifier_transcript::transcript::Transcript; +use serde::{Deserialize, Serialize}; +use serde_with::serde_as; +use starknet_core::serde::unsigned_field_element::UfeHex; +use starknet_crypto::Felt; + +#[serde_as] +#[derive(Debug, PartialEq, Serialize, Deserialize)] +pub struct EcPoint { + #[serde_as(as = "UfeHex")] + pub x: Felt, + #[serde_as(as = "UfeHex")] + pub y: Felt, +} + +#[serde_as] +#[derive(Debug, PartialEq, Serialize, Deserialize)] +pub struct EcdsaSigConfig { + #[serde_as(as = "UfeHex")] + pub alpha: Felt, + #[serde_as(as = "UfeHex")] + pub beta: Felt, + pub shift_point: EcPoint, +} + +// Accumulation of member expressions for auto generated composition polynomial code. +#[serde_as] +#[derive(Debug, PartialEq, Serialize, Deserialize)] +pub struct GlobalValues { + // Public input. + #[serde_as(as = "UfeHex")] + pub trace_length: Felt, + #[serde_as(as = "UfeHex")] + pub initial_pc: Felt, + #[serde_as(as = "UfeHex")] + pub final_pc: Felt, + #[serde_as(as = "UfeHex")] + pub initial_ap: Felt, + #[serde_as(as = "UfeHex")] + pub final_ap: Felt, + #[serde_as(as = "UfeHex")] + pub initial_pedersen_addr: Felt, + #[serde_as(as = "UfeHex")] + pub initial_range_check_addr: Felt, + #[serde_as(as = "UfeHex")] + pub initial_ecdsa_addr: Felt, + #[serde_as(as = "UfeHex")] + pub range_check_min: Felt, + #[serde_as(as = "UfeHex")] + pub range_check_max: Felt, + // Constants. + #[serde_as(as = "UfeHex")] + pub offset_size: Felt, + #[serde_as(as = "UfeHex")] + pub half_offset_size: Felt, + pub pedersen_shift_point: EcPoint, + pub ecdsa_sig_config: EcdsaSigConfig, + // Periodic columns. + #[serde_as(as = "UfeHex")] + pub pedersen_points_x: Felt, + #[serde_as(as = "UfeHex")] + pub pedersen_points_y: Felt, + #[serde_as(as = "UfeHex")] + pub ecdsa_generator_points_x: Felt, + #[serde_as(as = "UfeHex")] + pub ecdsa_generator_points_y: Felt, + // Interaction elements. + #[serde_as(as = "UfeHex")] + pub memory_multi_column_perm_perm_interaction_elm: Felt, + #[serde_as(as = "UfeHex")] + pub memory_multi_column_perm_hash_interaction_elm0: Felt, + #[serde_as(as = "UfeHex")] + pub range_check16_perm_interaction_elm: Felt, + // Permutation products. + #[serde_as(as = "UfeHex")] + pub memory_multi_column_perm_perm_public_memory_prod: Felt, + #[serde_as(as = "UfeHex")] + pub range_check16_perm_public_memory_prod: Felt, +} + +// Elements that are sent from the prover after the commitment on the original trace. +// Used for components after the first interaction, e.g., memory and range check. +#[serde_as] +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct InteractionElements { + #[serde_as(as = "UfeHex")] + pub memory_multi_column_perm_perm_interaction_elm: Felt, + #[serde_as(as = "UfeHex")] + pub memory_multi_column_perm_hash_interaction_elm0: Felt, + #[serde_as(as = "UfeHex")] + pub range_check16_perm_interaction_elm: Felt, +} + +impl InteractionElements { + pub fn new(transcript: &mut Transcript) -> Self { + Self { + memory_multi_column_perm_perm_interaction_elm: transcript.random_felt_to_prover(), + memory_multi_column_perm_hash_interaction_elm0: transcript.random_felt_to_prover(), + range_check16_perm_interaction_elm: transcript.random_felt_to_prover(), + } + } +} diff --git a/crates/air/src/layout/dex/mod.rs b/crates/air/src/layout/dex/mod.rs new file mode 100644 index 0000000..c769177 --- /dev/null +++ b/crates/air/src/layout/dex/mod.rs @@ -0,0 +1,396 @@ +pub mod autogenerated; +pub mod global_values; + +use crate::{ + layout::stark_curve, + periodic_columns::{eval_ecdsa_x, eval_ecdsa_y, eval_pedersen_x, eval_pedersen_y}, + public_memory::{PublicInput, INITIAL_PC, MAX_ADDRESS, MAX_LOG_N_STEPS, MAX_RANGE_CHECK}, +}; +use bail_out::ensure; +use cairovm_verifier_commitment::table::{commit::table_commit, decommit::table_decommit}; +use global_values::{EcPoint, EcdsaSigConfig, GlobalValues, InteractionElements}; +use starknet_core::types::NonZeroFelt; +use starknet_crypto::{poseidon_hash_many, Felt}; + +use super::{CompositionPolyEvalError, LayoutTrait, PublicInputError}; + +pub const N_DYNAMIC_PARAMS: u32 = 0; +pub const N_CONSTRAINTS: u32 = 179; +pub const MASK_SIZE: u32 = 200; +pub const CPU_COMPONENT_STEP: u32 = 1; +pub const CPU_COMPONENT_HEIGHT: u32 = 16; +pub const PUBLIC_MEMORY_STEP: u32 = 8; +pub const HAS_DILUTED_POOL: u32 = 0; +pub const PEDERSEN_BUILTIN_RATIO: u32 = 8; +pub const PEDERSEN_BUILTIN_ROW_RATIO: u32 = 128; +pub const PEDERSEN_BUILTIN_REPETITIONS: u32 = 4; +pub const RANGE_CHECK_BUILTIN_RATIO: u32 = 8; +pub const RANGE_CHECK_BUILTIN_ROW_RATIO: u32 = 128; +pub const RANGE_CHECK_N_PARTS: u32 = 8; +pub const ECDSA_BUILTIN_RATIO: u32 = 512; +pub const ECDSA_BUILTIN_ROW_RATIO: u32 = 8192; +pub const ECDSA_BUILTIN_REPETITIONS: u32 = 1; +pub const ECDSA_ELEMENT_BITS: u32 = 251; +pub const ECDSA_ELEMENT_HEIGHT: u32 = 256; +pub const HAS_OUTPUT_BUILTIN: u32 = 1; +pub const HAS_PEDERSEN_BUILTIN: u32 = 1; +pub const HAS_RANGE_CHECK_BUILTIN: u32 = 1; +pub const HAS_ECDSA_BUILTIN: u32 = 1; +pub const HAS_BITWISE_BUILTIN: u32 = 0; +pub const HAS_EC_OP_BUILTIN: u32 = 0; +pub const HAS_KECCAK_BUILTIN: u32 = 0; +pub const HAS_POSEIDON_BUILTIN: u32 = 0; +pub const HAS_RANGE_CHECK96_BUILTIN: u32 = 0; +pub const LAYOUT_CODE: Felt = Felt::from_hex_unchecked("0x646578"); +pub const CONSTRAINT_DEGREE: u32 = 2; +pub const LOG_CPU_COMPONENT_HEIGHT: u32 = 4; +pub const NUM_COLUMNS_FIRST: u32 = 21; +pub const NUM_COLUMNS_SECOND: u32 = 1; +pub const IS_DYNAMIC_AIR: u32 = 0; + +pub mod segments { + pub const ECDSA: usize = 5; + pub const N_SEGMENTS: usize = 6; + pub const PEDERSEN: usize = 3; + pub const RANGE_CHECK: usize = 4; +} + +pub mod builtins { + use starknet_crypto::Felt; + + pub const OUTPUT: Felt = Felt::from_hex_unchecked("0x6F7574707574"); + pub const PEDERSEN: Felt = Felt::from_hex_unchecked("0x706564657273656E"); + pub const RANGE_CHECK: Felt = Felt::from_hex_unchecked("0x72616E67655F636865636B"); + pub const ECDSA: Felt = Felt::from_hex_unchecked("0x6563647361"); +} + +// Pedersen builtin +pub const SHIFT_POINT_X: Felt = + Felt::from_hex_unchecked("0x49ee3eba8c1600700ee1b87eb599f16716b0b1022947733551fde4050ca6804"); +pub const SHIFT_POINT_Y: Felt = + Felt::from_hex_unchecked("0x3ca0cfe4b3bc6ddf346d49d06ea0ed34e621062c0e056c1d0405d266e10268a"); + +pub const BUILTINS: [Felt; 4] = + [builtins::OUTPUT, builtins::PEDERSEN, builtins::RANGE_CHECK, builtins::ECDSA]; + +pub struct RecursiveLayout {} + +impl LayoutTrait for RecursiveLayout { + type InteractionElements = InteractionElements; + fn eval_composition_polynomial( + interaction_elements: &Self::InteractionElements, + public_input: &PublicInput, + mask_values: &[Felt], + constraint_coefficients: &[Felt], + point: &Felt, + trace_domain_size: &Felt, + trace_generator: &Felt, + ) -> Result { + let memory_z = interaction_elements.memory_multi_column_perm_perm_interaction_elm; + let memory_alpha = interaction_elements.memory_multi_column_perm_hash_interaction_elm0; + + // Public memory + let public_memory_column_size = trace_domain_size + .field_div(&NonZeroFelt::from_felt_unchecked(Felt::from(PUBLIC_MEMORY_STEP))); + assert!(public_memory_column_size < u128::MAX.into()); + let public_memory_prod_ratio = public_input.get_public_memory_product_ratio( + memory_z, + memory_alpha, + public_memory_column_size, + ); + + // Periodic columns + let n_steps = Felt::TWO.pow_felt(&public_input.log_n_steps); + let n_pedersen_hash_copies = n_steps.field_div(&NonZeroFelt::from_felt_unchecked( + Felt::from(PEDERSEN_BUILTIN_RATIO * PEDERSEN_BUILTIN_REPETITIONS), + )); + // TODO fix to ensure! + assert!(n_pedersen_hash_copies < u128::MAX.into()); + let pedersen_point = point.pow_felt(&n_pedersen_hash_copies); + let pedersen_points_x = eval_pedersen_x(pedersen_point); + let pedersen_points_y = eval_pedersen_y(pedersen_point); + + let n_ecdsa_signature_copies = n_steps.field_div(&NonZeroFelt::from_felt_unchecked( + Felt::from(ECDSA_BUILTIN_RATIO * ECDSA_BUILTIN_REPETITIONS), + )); + assert!(n_ecdsa_signature_copies < u128::MAX.into()); + let ecdsa_point = point.pow_felt(&n_ecdsa_signature_copies); + let ecdsa_generator_points_x = eval_ecdsa_x(ecdsa_point); + let ecdsa_generator_points_y = eval_ecdsa_y(ecdsa_point); + + let global_values = GlobalValues { + trace_length: *trace_domain_size, + initial_pc: public_input + .segments + .get(crate::layout::segments::PROGRAM) + .ok_or(CompositionPolyEvalError::SegmentMissing { + segment: crate::layout::segments::PROGRAM, + })? + .begin_addr, + final_pc: public_input + .segments + .get(crate::layout::segments::PROGRAM) + .ok_or(CompositionPolyEvalError::SegmentMissing { + segment: crate::layout::segments::PROGRAM, + })? + .stop_ptr, + initial_ap: public_input + .segments + .get(crate::layout::segments::EXECUTION) + .ok_or(CompositionPolyEvalError::SegmentMissing { + segment: crate::layout::segments::EXECUTION, + })? + .begin_addr, + final_ap: public_input + .segments + .get(crate::layout::segments::EXECUTION) + .ok_or(CompositionPolyEvalError::SegmentMissing { + segment: crate::layout::segments::EXECUTION, + })? + .stop_ptr, + initial_pedersen_addr: public_input + .segments + .get(segments::PEDERSEN) + .ok_or(CompositionPolyEvalError::SegmentMissing { segment: segments::PEDERSEN })? + .begin_addr, + initial_range_check_addr: public_input + .segments + .get(segments::RANGE_CHECK) + .ok_or(CompositionPolyEvalError::SegmentMissing { segment: segments::RANGE_CHECK })? + .begin_addr, + initial_ecdsa_addr: public_input + .segments + .get(segments::ECDSA) + .ok_or(CompositionPolyEvalError::SegmentMissing { segment: segments::ECDSA })? + .begin_addr, + range_check_min: public_input.range_check_min, + range_check_max: public_input.range_check_max, + offset_size: Felt::from(0x10000), // 2**16 + half_offset_size: Felt::from(0x8000), // 2**15 + pedersen_shift_point: EcPoint { x: SHIFT_POINT_X, y: SHIFT_POINT_Y }, + ecdsa_sig_config: EcdsaSigConfig { + alpha: stark_curve::ALPHA, + beta: stark_curve::BETA, + shift_point: EcPoint { x: SHIFT_POINT_X, y: SHIFT_POINT_Y }, + }, + pedersen_points_x, + pedersen_points_y, + ecdsa_generator_points_x, + ecdsa_generator_points_y, + memory_multi_column_perm_perm_interaction_elm: memory_z, + memory_multi_column_perm_hash_interaction_elm0: memory_alpha, + range_check16_perm_interaction_elm: interaction_elements + .range_check16_perm_interaction_elm, + memory_multi_column_perm_perm_public_memory_prod: public_memory_prod_ratio, + range_check16_perm_public_memory_prod: Felt::from(1), + }; + + Ok(autogenerated::eval_composition_polynomial_inner( + mask_values, + constraint_coefficients, + point, + trace_generator, + &global_values, + )) + } + fn eval_oods_polynomial( + column_values: &[Felt], + oods_values: &[Felt], + constraint_coefficients: &[Felt], + point: &Felt, + oods_point: &Felt, + trace_generator: &Felt, + ) -> Felt { + autogenerated::eval_oods_polynomial_inner( + column_values, + oods_values, + constraint_coefficients, + point, + oods_point, + trace_generator, + ) + } + fn traces_commit( + transcript: &mut cairovm_verifier_transcript::transcript::Transcript, + unsent_commitment: &crate::trace::UnsentCommitment, + config: crate::trace::config::Config, + ) -> crate::trace::Commitment { + // Read original commitment. + let original_commitment = + table_commit(transcript, unsent_commitment.original, config.original); + + // Generate interaction elements for the first interaction. + let interaction_elements = Self::InteractionElements::new(transcript); + + // Read interaction commitment. + let interaction_commitment = + table_commit(transcript, unsent_commitment.interaction, config.interaction); + + crate::trace::Commitment { + original: original_commitment, + interaction_elements, + interaction: interaction_commitment, + } + } + fn traces_decommit( + queries: &[Felt], + commitment: crate::trace::Commitment, + decommitment: crate::trace::Decommitment, + witness: crate::trace::Witness, + ) -> Result<(), crate::trace::decommit::Error> { + Ok(table_decommit(commitment.original, queries, decommitment.original, witness.original) + .and(table_decommit( + commitment.interaction, + queries, + decommitment.interaction, + witness.interaction, + ))?) + } + fn validate_public_input( + public_input: &PublicInput, + stark_domains: &crate::domains::StarkDomains, + ) -> Result<(), PublicInputError> { + ensure!(public_input.log_n_steps < MAX_LOG_N_STEPS, PublicInputError::MaxSteps); + + let n_steps = Felt::TWO.pow_felt(&public_input.log_n_steps); + let trace_length = stark_domains.trace_domain_size; + ensure!( + n_steps * Felt::from(CPU_COMPONENT_HEIGHT) * Felt::from(CPU_COMPONENT_STEP) + == trace_length, + PublicInputError::TraceLengthInvalid + ); + + ensure!(Felt::ZERO <= public_input.range_check_min, PublicInputError::RangeCheckInvalid); + ensure!( + public_input.range_check_min < public_input.range_check_max, + PublicInputError::RangeCheckInvalid + ); + ensure!( + public_input.range_check_max <= MAX_RANGE_CHECK, + PublicInputError::RangeCheckInvalid + ); + + ensure!(public_input.layout == LAYOUT_CODE, PublicInputError::LayoutCodeInvalid); + + let output_uses = public_input + .segments + .get(crate::layout::segments::OUTPUT) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::OUTPUT })? + .stop_ptr + - public_input + .segments + .get(crate::layout::segments::OUTPUT) + .ok_or(PublicInputError::SegmentMissing { + segment: crate::layout::segments::OUTPUT, + })? + .begin_addr; + ensure!(output_uses < u128::MAX.into(), PublicInputError::UsesInvalid); + + let pedersen_copies = trace_length + .field_div(&NonZeroFelt::from_felt_unchecked(Felt::from(PEDERSEN_BUILTIN_ROW_RATIO))); + let pedersen_uses = (public_input + .segments + .get(segments::PEDERSEN) + .ok_or(PublicInputError::SegmentMissing { segment: segments::PEDERSEN })? + .stop_ptr + - public_input + .segments + .get(segments::PEDERSEN) + .ok_or(PublicInputError::SegmentMissing { segment: segments::PEDERSEN })? + .begin_addr) + .field_div(&NonZeroFelt::from_felt_unchecked(Felt::THREE)); + ensure!(pedersen_uses < pedersen_copies, PublicInputError::UsesInvalid); + + let range_check_copies = trace_length.field_div(&NonZeroFelt::from_felt_unchecked( + Felt::from(RANGE_CHECK_BUILTIN_ROW_RATIO), + )); + let range_check_uses = public_input + .segments + .get(segments::RANGE_CHECK) + .ok_or(PublicInputError::SegmentMissing { segment: segments::RANGE_CHECK })? + .stop_ptr + - public_input + .segments + .get(segments::RANGE_CHECK) + .ok_or(PublicInputError::SegmentMissing { segment: segments::RANGE_CHECK })? + .begin_addr; + ensure!(range_check_uses < range_check_copies, PublicInputError::UsesInvalid); + + let ecdsa_copies = trace_length + .field_div(&NonZeroFelt::from_felt_unchecked(Felt::from(ECDSA_BUILTIN_ROW_RATIO))); + let ecdsa_uses = (public_input + .segments + .get(segments::ECDSA) + .ok_or(PublicInputError::SegmentMissing { segment: segments::ECDSA })? + .stop_ptr + - public_input + .segments + .get(segments::ECDSA) + .ok_or(PublicInputError::SegmentMissing { + segment: crate::layout::segments::OUTPUT, + })? + .begin_addr) + .field_div(&NonZeroFelt::from_felt_unchecked(Felt::from(0x5))); + ensure!(ecdsa_uses < ecdsa_copies, PublicInputError::UsesInvalid); + Ok(()) + } + + fn verify_public_input(public_input: &PublicInput) -> Result<(Felt, Felt), PublicInputError> { + let public_segments = &public_input.segments; + + let initial_pc = public_segments + .get(crate::layout::segments::PROGRAM) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::PROGRAM })? + .begin_addr; + let final_pc = public_segments + .get(crate::layout::segments::PROGRAM) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::PROGRAM })? + .stop_ptr; + let initial_ap = public_segments + .get(crate::layout::segments::EXECUTION) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::PROGRAM })? + .begin_addr; + let initial_fp = initial_ap; + let final_ap = public_segments + .get(crate::layout::segments::EXECUTION) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::PROGRAM })? + .stop_ptr; + let output_start = public_segments + .get(crate::layout::segments::OUTPUT) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::PROGRAM })? + .begin_addr; + let output_stop = public_segments + .get(crate::layout::segments::OUTPUT) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::PROGRAM })? + .stop_ptr; + + ensure!(initial_ap < MAX_ADDRESS, PublicInputError::MaxSteps); + ensure!(final_ap < MAX_ADDRESS, PublicInputError::MaxSteps); + + // TODO support more pages? + ensure!(public_input.continuous_page_headers.is_empty(), PublicInputError::MaxSteps); + + let memory = &public_input + .main_page + .iter() + .flat_map(|v| vec![v.address, v.value]) + .collect::>(); + + // 1. Program segment + ensure!(initial_pc == INITIAL_PC, PublicInputError::MaxSteps); + ensure!(final_pc == INITIAL_PC + 4, PublicInputError::MaxSteps); + + let program_end_pc = initial_fp - 2; + let program = &memory[initial_pc.to_bigint().try_into().unwrap() + ..program_end_pc.to_bigint().try_into().unwrap()]; + + let program_hash = poseidon_hash_many(program); + + let output_len: usize = (output_stop - output_start).to_bigint().try_into().unwrap(); + // 3. Output segment + let output = &memory[memory.len() - output_len..memory.len()]; + let output_hash = poseidon_hash_many(output); + + Ok((program_hash, output_hash)) + } +} diff --git a/crates/air/src/layout/mod.rs b/crates/air/src/layout/mod.rs index 5143596..ce7d9b9 100644 --- a/crates/air/src/layout/mod.rs +++ b/crates/air/src/layout/mod.rs @@ -2,7 +2,28 @@ use crate::{domains::StarkDomains, public_memory::PublicInput}; use cairovm_verifier_transcript::transcript::Transcript; use starknet_crypto::Felt; +pub mod dex; pub mod recursive; +pub mod recursive_with_poseidon; + +// StarkCurve +pub mod stark_curve { + use starknet_crypto::Felt; + + pub const ALPHA: Felt = Felt::from_hex_unchecked("1"); + pub const BETA: Felt = Felt::from_hex_unchecked( + "0x6f21413efbe40de150e596d72f7a8c5609ad26c15c915c1f4cdfcb99cee9e89", + ); + pub const ORDER: Felt = Felt::from_hex_unchecked( + "0x800000000000010ffffffffffffffffb781126dcae7b2321e66a241adc64d2f", + ); + pub const GEN_X: Felt = Felt::from_hex_unchecked( + "0x1ef15c18599971b7beced415a40f0c7deacfd9b0d1819e03d723d8bc943cfca", + ); + pub const GEN_Y: Felt = Felt::from_hex_unchecked( + "0x5668060aa49730b7be4801df46ec62de53ecd11abe43a32873000c36e8dc1f", + ); +} pub trait LayoutTrait { type InteractionElements; diff --git a/crates/air/src/layout/recursive/mod.rs b/crates/air/src/layout/recursive/mod.rs index eed52a5..7db6577 100644 --- a/crates/air/src/layout/recursive/mod.rs +++ b/crates/air/src/layout/recursive/mod.rs @@ -34,7 +34,7 @@ pub const HAS_POSEIDON_BUILTIN: u32 = 0; pub const HAS_RANGE_CHECK_BUILTIN: u32 = 1; pub const HAS_RANGE_CHECK96_BUILTIN: u32 = 0; pub const IS_DYNAMIC_AIR: u32 = 0; -pub const LAYOUT_CODE: u128 = 0x726563757273697665; +pub const LAYOUT_CODE: Felt = Felt::from_hex_unchecked("0x726563757273697665"); pub const LOG_CPU_COMPONENT_HEIGHT: u32 = 4; pub const MASK_SIZE: u32 = 133; pub const N_CONSTRAINTS: u32 = 93; @@ -272,7 +272,7 @@ impl LayoutTrait for RecursiveLayout { PublicInputError::RangeCheckInvalid ); - ensure!(public_input.layout == LAYOUT_CODE.into(), PublicInputError::LayoutCodeInvalid); + ensure!(public_input.layout == LAYOUT_CODE, PublicInputError::LayoutCodeInvalid); let output_uses = public_input .segments diff --git a/crates/air/src/layout/recursive_with_poseidon/autogenerated.rs b/crates/air/src/layout/recursive_with_poseidon/autogenerated.rs new file mode 100644 index 0000000..6df302f --- /dev/null +++ b/crates/air/src/layout/recursive_with_poseidon/autogenerated.rs @@ -0,0 +1,2177 @@ +use super::global_values::GlobalValues; +use crate::layout::recursive::{CONSTRAINT_DEGREE, NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND}; +use starknet_core::types::NonZeroFelt; +use starknet_crypto::Felt; + +pub fn eval_composition_polynomial_inner( + mask_values: &[Felt], + constraint_coefficients: &[Felt], + point: &Felt, + trace_generator: &Felt, + global_values: &GlobalValues, +) -> Felt { + // Compute powers. + let pow0 = point.pow_felt( + &global_values.trace_length.floor_div(&NonZeroFelt::from_felt_unchecked(Felt::from(4096))), + ); + let pow1 = pow0 * pow0; // pow(point, (safe_div(global_values.trace_length, 2048))). + let pow2 = pow1 * pow1; // pow(point, (safe_div(global_values.trace_length, 1024))). + let pow3 = pow2 * pow2; // pow(point, (safe_div(global_values.trace_length, 512))). + let pow4 = pow3 * pow3; // pow(point, (safe_div(global_values.trace_length, 256))). + let pow5 = pow4 * pow4; // pow(point, (safe_div(global_values.trace_length, 128))). + let pow6 = pow5 * pow5; // pow(point, (safe_div(global_values.trace_length, 64))). + let pow7 = pow6 * pow6; // pow(point, (safe_div(global_values.trace_length, 32))). + let pow8 = pow7 * pow7; // pow(point, (safe_div(global_values.trace_length, 16))). + let pow9 = pow8 * pow8; // pow(point, (safe_div(global_values.trace_length, 8))). + let pow10 = pow9 * pow9; // pow(point, (safe_div(global_values.trace_length, 4))). + let pow11 = pow10 * pow10; // pow(point, (safe_div(global_values.trace_length, 2))). + let pow12 = pow11 * pow11; // pow(point, global_values.trace_length). + let pow13 = trace_generator.pow_felt(&(global_values.trace_length - 512)); + let pow14 = trace_generator.pow_felt(&(global_values.trace_length - 256)); + let pow15 = trace_generator.pow_felt(&(global_values.trace_length - 4096)); + let pow16 = trace_generator.pow_felt(&(global_values.trace_length - 4)); + let pow17 = trace_generator.pow_felt(&(global_values.trace_length - 2)); + let pow18 = trace_generator.pow_felt(&(global_values.trace_length - 16)); + let pow19 = trace_generator.pow_felt( + &(global_values.trace_length.floor_div(&NonZeroFelt::from_felt_unchecked(Felt::from(2)))), + ); + let pow20 = trace_generator.pow_felt( + &(Felt::from(255) + * global_values + .trace_length + .floor_div(&NonZeroFelt::from_felt_unchecked(Felt::from(2056)))), + ); + let pow21 = trace_generator.pow_felt( + &(global_values.trace_length.floor_div(&NonZeroFelt::from_felt_unchecked(Felt::from(64)))), + ); + let pow22 = pow21 * pow21; // pow(trace_generator, (safe_div(global_values.trace_length, 32))). + let pow23 = pow21 * pow22; // pow(trace_generator, (safe_div((safe_mult(3, global_values.trace_length)), 64))). + let pow24 = pow21 * pow23; // pow(trace_generator, (safe_div(global_values.trace_length, 16))). + let pow25 = pow21 * pow24; // pow(trace_generator, (safe_div((safe_mult(5, global_values.trace_length)), 64))). + let pow26 = pow21 * pow25; // pow(trace_generator, (safe_div((safe_mult(3, global_values.trace_length)), 32))). + let pow27 = pow19 * pow26; // pow(trace_generator, (safe_div((safe_mult(19, global_values.trace_length)), 32))). + let pow28 = pow21 * pow26; // pow(trace_generator, (safe_div((safe_mult(7, global_values.trace_length)), 64))). + let pow29 = pow21 * pow28; // pow(trace_generator, (safe_div(global_values.trace_length, 8))). + let pow30 = pow19 * pow29; // pow(trace_generator, (safe_div((safe_mult(5, global_values.trace_length)), 8))). + let pow31 = pow21 * pow29; // pow(trace_generator, (safe_div((safe_mult(9, global_values.trace_length)), 64))). + let pow32 = pow21 * pow31; // pow(trace_generator, (safe_div((safe_mult(5, global_values.trace_length)), 32))). + let pow33 = pow19 * pow32; // pow(trace_generator, (safe_div((safe_mult(21, global_values.trace_length)), 32))). + let pow34 = pow21 * pow32; // pow(trace_generator, (safe_div((safe_mult(11, global_values.trace_length)), 64))). + let pow35 = pow21 * pow34; // pow(trace_generator, (safe_div((safe_mult(3, global_values.trace_length)), 16))). + let pow36 = pow19 * pow35; // pow(trace_generator, (safe_div((safe_mult(11, global_values.trace_length)), 16))). + let pow37 = pow21 * pow35; // pow(trace_generator, (safe_div((safe_mult(13, global_values.trace_length)), 64))). + let pow38 = pow21 * pow37; // pow(trace_generator, (safe_div((safe_mult(7, global_values.trace_length)), 32))). + let pow39 = pow19 * pow38; // pow(trace_generator, (safe_div((safe_mult(23, global_values.trace_length)), 32))). + let pow40 = pow21 * pow38; // pow(trace_generator, (safe_div((safe_mult(15, global_values.trace_length)), 64))). + let pow41 = pow22 * pow39; // pow(trace_generator, (safe_div((safe_mult(3, global_values.trace_length)), 4))). + let pow42 = pow22 * pow41; // pow(trace_generator, (safe_div((safe_mult(25, global_values.trace_length)), 32))). + let pow43 = pow22 * pow42; // pow(trace_generator, (safe_div((safe_mult(13, global_values.trace_length)), 16))). + let pow44 = pow22 * pow43; // pow(trace_generator, (safe_div((safe_mult(27, global_values.trace_length)), 32))). + let pow45 = pow22 * pow44; // pow(trace_generator, (safe_div((safe_mult(7, global_values.trace_length)), 8))). + let pow46 = pow22 * pow45; // pow(trace_generator, (safe_div((safe_mult(29, global_values.trace_length)), 32))). + let pow47 = pow22 * pow46; // pow(trace_generator, (safe_div((safe_mult(15, global_values.trace_length)), 16))). + let pow48 = pow21 * pow47; // pow(trace_generator, (safe_div((safe_mult(61, global_values.trace_length)), 64))). + let pow49 = pow21 * pow48; // pow(trace_generator, (safe_div((safe_mult(31, global_values.trace_length)), 32))). + let pow50 = pow21 * pow49; // pow(trace_generator, (safe_div((safe_mult(63, global_values.trace_length)), 64))). + + // Compute domains. + let domain0 = pow12 - 1; + let domain1 = pow11 - 1; + let domain2 = pow10 - 1; + let domain3 = pow9 - 1; + let domain4 = pow8 - pow47; + let domain5 = pow8 - 1; + let domain6 = pow7 - 1; + let domain7 = pow6 - 1; + let domain8 = pow5 - 1; + let domain9 = pow4 - 1; + let domain10 = pow4 - pow41; + let temp = pow4 - pow21; + let temp = temp * (pow4 - pow22); + let temp = temp * (pow4 - pow23); + let temp = temp * (pow4 - pow24); + let temp = temp * (pow4 - pow25); + let temp = temp * (pow4 - pow26); + let temp = temp * (pow4 - pow28); + let temp = temp * (pow4 - pow29); + let temp = temp * (pow4 - pow31); + let temp = temp * (pow4 - pow32); + let temp = temp * (pow4 - pow34); + let temp = temp * (pow4 - pow35); + let temp = temp * (pow4 - pow37); + let temp = temp * (pow4 - pow38); + let temp = temp * (pow4 - pow40); + let domain11 = temp * (domain9); + let domain12 = pow3 - 1; + let domain13 = pow3 - pow41; + let domain14 = pow2 - pow49; + let temp = pow2 - pow36; + let temp = temp * (pow2 - pow39); + let temp = temp * (pow2 - pow41); + let temp = temp * (pow2 - pow42); + let temp = temp * (pow2 - pow43); + let temp = temp * (pow2 - pow44); + let temp = temp * (pow2 - pow45); + let temp = temp * (pow2 - pow46); + let temp = temp * (pow2 - pow47); + let domain15 = temp * (domain14); + let domain16 = pow2 - 1; + let temp = pow2 - pow48; + let temp = temp * (pow2 - pow50); + let domain17 = temp * (domain14); + let temp = pow2 - pow27; + let temp = temp * (pow2 - pow30); + let temp = temp * (pow2 - pow33); + let domain18 = temp * (domain15); + let domain19 = pow1 - 1; + let domain20 = pow1 - pow20; + let domain21 = pow1 - pow50; + let domain22 = pow0 - pow19; + let domain23 = pow0 - 1; + let domain24 = point - pow18; + let domain25 = point - 1; + let domain26 = point - pow17; + let domain27 = point - pow16; + let domain28 = point - pow15; + let domain29 = point - pow14; + let domain30 = point - pow13; + + // Fetch mask variables. + let column0_row0 = mask_values[0]; + let column0_row1 = mask_values[1]; + let column0_row2 = mask_values[2]; + let column0_row3 = mask_values[3]; + let column0_row4 = mask_values[4]; + let column0_row5 = mask_values[5]; + let column0_row6 = mask_values[6]; + let column0_row7 = mask_values[7]; + let column0_row8 = mask_values[8]; + let column0_row9 = mask_values[9]; + let column0_row10 = mask_values[10]; + let column0_row11 = mask_values[11]; + let column0_row12 = mask_values[12]; + let column0_row13 = mask_values[13]; + let column0_row14 = mask_values[14]; + let column0_row15 = mask_values[15]; + let column1_row0 = mask_values[16]; + let column1_row1 = mask_values[17]; + let column1_row2 = mask_values[18]; + let column1_row3 = mask_values[19]; + let column1_row4 = mask_values[20]; + let column1_row5 = mask_values[21]; + let column1_row8 = mask_values[22]; + let column1_row9 = mask_values[23]; + let column1_row10 = mask_values[24]; + let column1_row11 = mask_values[25]; + let column1_row12 = mask_values[26]; + let column1_row13 = mask_values[27]; + let column1_row16 = mask_values[28]; + let column1_row42 = mask_values[29]; + let column1_row43 = mask_values[30]; + let column1_row74 = mask_values[31]; + let column1_row75 = mask_values[32]; + let column1_row106 = mask_values[33]; + let column1_row138 = mask_values[34]; + let column1_row139 = mask_values[35]; + let column1_row171 = mask_values[36]; + let column1_row202 = mask_values[37]; + let column1_row203 = mask_values[38]; + let column1_row234 = mask_values[39]; + let column1_row235 = mask_values[40]; + let column1_row266 = mask_values[41]; + let column1_row267 = mask_values[42]; + let column1_row298 = mask_values[43]; + let column1_row394 = mask_values[44]; + let column1_row458 = mask_values[45]; + let column1_row459 = mask_values[46]; + let column1_row714 = mask_values[47]; + let column1_row715 = mask_values[48]; + let column1_row778 = mask_values[49]; + let column1_row779 = mask_values[50]; + let column1_row970 = mask_values[51]; + let column1_row971 = mask_values[52]; + let column1_row1034 = mask_values[53]; + let column1_row1035 = mask_values[54]; + let column1_row2058 = mask_values[55]; + let column1_row2059 = mask_values[56]; + let column1_row4106 = mask_values[57]; + let column2_row0 = mask_values[58]; + let column2_row1 = mask_values[59]; + let column2_row2 = mask_values[60]; + let column2_row3 = mask_values[61]; + let column3_row0 = mask_values[62]; + let column3_row1 = mask_values[63]; + let column3_row2 = mask_values[64]; + let column3_row3 = mask_values[65]; + let column3_row4 = mask_values[66]; + let column3_row8 = mask_values[67]; + let column3_row12 = mask_values[68]; + let column3_row16 = mask_values[69]; + let column3_row20 = mask_values[70]; + let column3_row24 = mask_values[71]; + let column3_row28 = mask_values[72]; + let column3_row32 = mask_values[73]; + let column3_row36 = mask_values[74]; + let column3_row40 = mask_values[75]; + let column3_row44 = mask_values[76]; + let column3_row48 = mask_values[77]; + let column3_row52 = mask_values[78]; + let column3_row56 = mask_values[79]; + let column3_row60 = mask_values[80]; + let column3_row64 = mask_values[81]; + let column3_row66 = mask_values[82]; + let column3_row128 = mask_values[83]; + let column3_row130 = mask_values[84]; + let column3_row176 = mask_values[85]; + let column3_row180 = mask_values[86]; + let column3_row184 = mask_values[87]; + let column3_row188 = mask_values[88]; + let column3_row192 = mask_values[89]; + let column3_row194 = mask_values[90]; + let column3_row240 = mask_values[91]; + let column3_row244 = mask_values[92]; + let column3_row248 = mask_values[93]; + let column3_row252 = mask_values[94]; + let column4_row0 = mask_values[95]; + let column4_row1 = mask_values[96]; + let column4_row2 = mask_values[97]; + let column4_row3 = mask_values[98]; + let column4_row4 = mask_values[99]; + let column4_row5 = mask_values[100]; + let column4_row6 = mask_values[101]; + let column4_row7 = mask_values[102]; + let column4_row8 = mask_values[103]; + let column4_row9 = mask_values[104]; + let column4_row11 = mask_values[105]; + let column4_row12 = mask_values[106]; + let column4_row13 = mask_values[107]; + let column4_row44 = mask_values[108]; + let column4_row76 = mask_values[109]; + let column4_row108 = mask_values[110]; + let column4_row140 = mask_values[111]; + let column4_row172 = mask_values[112]; + let column4_row204 = mask_values[113]; + let column4_row236 = mask_values[114]; + let column4_row1539 = mask_values[115]; + let column4_row1547 = mask_values[116]; + let column4_row1571 = mask_values[117]; + let column4_row1579 = mask_values[118]; + let column4_row2011 = mask_values[119]; + let column4_row2019 = mask_values[120]; + let column4_row2041 = mask_values[121]; + let column4_row2045 = mask_values[122]; + let column4_row2047 = mask_values[123]; + let column4_row2049 = mask_values[124]; + let column4_row2051 = mask_values[125]; + let column4_row2053 = mask_values[126]; + let column4_row4089 = mask_values[127]; + let column5_row0 = mask_values[128]; + let column5_row1 = mask_values[129]; + let column5_row2 = mask_values[130]; + let column5_row4 = mask_values[131]; + let column5_row6 = mask_values[132]; + let column5_row8 = mask_values[133]; + let column5_row9 = mask_values[134]; + let column5_row10 = mask_values[135]; + let column5_row12 = mask_values[136]; + let column5_row14 = mask_values[137]; + let column5_row16 = mask_values[138]; + let column5_row17 = mask_values[139]; + let column5_row22 = mask_values[140]; + let column5_row24 = mask_values[141]; + let column5_row25 = mask_values[142]; + let column5_row30 = mask_values[143]; + let column5_row33 = mask_values[144]; + let column5_row38 = mask_values[145]; + let column5_row41 = mask_values[146]; + let column5_row46 = mask_values[147]; + let column5_row49 = mask_values[148]; + let column5_row54 = mask_values[149]; + let column5_row57 = mask_values[150]; + let column5_row65 = mask_values[151]; + let column5_row73 = mask_values[152]; + let column5_row81 = mask_values[153]; + let column5_row89 = mask_values[154]; + let column5_row97 = mask_values[155]; + let column5_row105 = mask_values[156]; + let column5_row137 = mask_values[157]; + let column5_row169 = mask_values[158]; + let column5_row201 = mask_values[159]; + let column5_row393 = mask_values[160]; + let column5_row409 = mask_values[161]; + let column5_row425 = mask_values[162]; + let column5_row457 = mask_values[163]; + let column5_row473 = mask_values[164]; + let column5_row489 = mask_values[165]; + let column5_row521 = mask_values[166]; + let column5_row553 = mask_values[167]; + let column5_row585 = mask_values[168]; + let column5_row609 = mask_values[169]; + let column5_row625 = mask_values[170]; + let column5_row641 = mask_values[171]; + let column5_row657 = mask_values[172]; + let column5_row673 = mask_values[173]; + let column5_row689 = mask_values[174]; + let column5_row905 = mask_values[175]; + let column5_row921 = mask_values[176]; + let column5_row937 = mask_values[177]; + let column5_row969 = mask_values[178]; + let column5_row982 = mask_values[179]; + let column5_row985 = mask_values[180]; + let column5_row998 = mask_values[181]; + let column5_row1001 = mask_values[182]; + let column5_row1014 = mask_values[183]; + let column6_inter1_row0 = mask_values[184]; + let column6_inter1_row1 = mask_values[185]; + let column6_inter1_row2 = mask_values[186]; + let column6_inter1_row3 = mask_values[187]; + let column7_inter1_row0 = mask_values[188]; + let column7_inter1_row1 = mask_values[189]; + let column7_inter1_row2 = mask_values[190]; + let column7_inter1_row5 = mask_values[191]; + + // Compute intermediate values. + let cpu_decode_opcode_range_check_bit_0 = column0_row0 - (column0_row1 + column0_row1); + let cpu_decode_opcode_range_check_bit_2 = column0_row2 - (column0_row3 + column0_row3); + let cpu_decode_opcode_range_check_bit_4 = column0_row4 - (column0_row5 + column0_row5); + let cpu_decode_opcode_range_check_bit_3 = column0_row3 - (column0_row4 + column0_row4); + let cpu_decode_flag_op1_base_op0_0 = Felt::ONE + - (cpu_decode_opcode_range_check_bit_2 + + cpu_decode_opcode_range_check_bit_4 + + cpu_decode_opcode_range_check_bit_3); + let cpu_decode_opcode_range_check_bit_5 = column0_row5 - (column0_row6 + column0_row6); + let cpu_decode_opcode_range_check_bit_6 = column0_row6 - (column0_row7 + column0_row7); + let cpu_decode_opcode_range_check_bit_9 = column0_row9 - (column0_row10 + column0_row10); + let cpu_decode_flag_res_op1_0 = Felt::ONE + - (cpu_decode_opcode_range_check_bit_5 + + cpu_decode_opcode_range_check_bit_6 + + cpu_decode_opcode_range_check_bit_9); + let cpu_decode_opcode_range_check_bit_7 = column0_row7 - (column0_row8 + column0_row8); + let cpu_decode_opcode_range_check_bit_8 = column0_row8 - (column0_row9 + column0_row9); + let cpu_decode_flag_pc_update_regular_0 = Felt::ONE + - (cpu_decode_opcode_range_check_bit_7 + + cpu_decode_opcode_range_check_bit_8 + + cpu_decode_opcode_range_check_bit_9); + let cpu_decode_opcode_range_check_bit_12 = column0_row12 - (column0_row13 + column0_row13); + let cpu_decode_opcode_range_check_bit_13 = column0_row13 - (column0_row14 + column0_row14); + let cpu_decode_fp_update_regular_0 = + Felt::ONE - (cpu_decode_opcode_range_check_bit_12 + cpu_decode_opcode_range_check_bit_13); + let cpu_decode_opcode_range_check_bit_1 = column0_row1 - (column0_row2 + column0_row2); + let npc_reg_0 = column1_row0 + cpu_decode_opcode_range_check_bit_2 + 1; + let cpu_decode_opcode_range_check_bit_10 = column0_row10 - (column0_row11 + column0_row11); + let cpu_decode_opcode_range_check_bit_11 = column0_row11 - (column0_row12 + column0_row12); + let cpu_decode_opcode_range_check_bit_14 = column0_row14 - (column0_row15 + column0_row15); + let memory_address_diff_0 = column2_row2 - column2_row0; + let range_check16_diff_0 = column4_row6 - column4_row2; + let pedersen_hash0_ec_subset_sum_bit_0 = column4_row3 - (column4_row11 + column4_row11); + let pedersen_hash0_ec_subset_sum_bit_neg_0 = Felt::ONE - pedersen_hash0_ec_subset_sum_bit_0; + let range_check_builtin_value0_0 = column4_row12; + let range_check_builtin_value1_0 = + range_check_builtin_value0_0 * global_values.offset_size + column4_row44; + let range_check_builtin_value2_0 = + range_check_builtin_value1_0 * global_values.offset_size + column4_row76; + let range_check_builtin_value3_0 = + range_check_builtin_value2_0 * global_values.offset_size + column4_row108; + let range_check_builtin_value4_0 = + range_check_builtin_value3_0 * global_values.offset_size + column4_row140; + let range_check_builtin_value5_0 = + range_check_builtin_value4_0 * global_values.offset_size + column4_row172; + let range_check_builtin_value6_0 = + range_check_builtin_value5_0 * global_values.offset_size + column4_row204; + let range_check_builtin_value7_0 = + range_check_builtin_value6_0 * global_values.offset_size + column4_row236; + let bitwise_sum_var_0_0 = column3_row0 + + column3_row4 * Felt::from_hex_unchecked("0x2") + + column3_row8 * Felt::from_hex_unchecked("0x4") + + column3_row12 * Felt::from_hex_unchecked("0x8") + + column3_row16 * Felt::from_hex_unchecked("0x10000000000000000") + + column3_row20 * Felt::from_hex_unchecked("0x20000000000000000") + + column3_row24 * Felt::from_hex_unchecked("0x40000000000000000") + + column3_row28 * Felt::from_hex_unchecked("0x80000000000000000"); + let bitwise_sum_var_8_0 = column3_row32 + * Felt::from_hex_unchecked("0x100000000000000000000000000000000") + + column3_row36 * Felt::from_hex_unchecked("0x200000000000000000000000000000000") + + column3_row40 * Felt::from_hex_unchecked("0x400000000000000000000000000000000") + + column3_row44 * Felt::from_hex_unchecked("0x800000000000000000000000000000000") + + column3_row48 + * Felt::from_hex_unchecked("0x1000000000000000000000000000000000000000000000000") + + column3_row52 + * Felt::from_hex_unchecked("0x2000000000000000000000000000000000000000000000000") + + column3_row56 + * Felt::from_hex_unchecked("0x4000000000000000000000000000000000000000000000000") + + column3_row60 + * Felt::from_hex_unchecked("0x8000000000000000000000000000000000000000000000000"); + let poseidon_poseidon_full_rounds_state0_cubed_0 = column5_row9 * column5_row105; + let poseidon_poseidon_full_rounds_state1_cubed_0 = column5_row73 * column5_row25; + let poseidon_poseidon_full_rounds_state2_cubed_0 = column5_row41 * column5_row89; + let poseidon_poseidon_full_rounds_state0_cubed_7 = column5_row905 * column5_row1001; + let poseidon_poseidon_full_rounds_state1_cubed_7 = column5_row969 * column5_row921; + let poseidon_poseidon_full_rounds_state2_cubed_7 = column5_row937 * column5_row985; + let poseidon_poseidon_full_rounds_state0_cubed_3 = column5_row393 * column5_row489; + let poseidon_poseidon_full_rounds_state1_cubed_3 = column5_row457 * column5_row409; + let poseidon_poseidon_full_rounds_state2_cubed_3 = column5_row425 * column5_row473; + let poseidon_poseidon_partial_rounds_state0_cubed_0 = column5_row6 * column5_row14; + let poseidon_poseidon_partial_rounds_state0_cubed_1 = column5_row22 * column5_row30; + let poseidon_poseidon_partial_rounds_state0_cubed_2 = column5_row38 * column5_row46; + let poseidon_poseidon_partial_rounds_state1_cubed_0 = column5_row1 * column5_row17; + let poseidon_poseidon_partial_rounds_state1_cubed_1 = column5_row33 * column5_row49; + let poseidon_poseidon_partial_rounds_state1_cubed_2 = column5_row65 * column5_row81; + let poseidon_poseidon_partial_rounds_state1_cubed_19 = column5_row609 * column5_row625; + let poseidon_poseidon_partial_rounds_state1_cubed_20 = column5_row641 * column5_row657; + let poseidon_poseidon_partial_rounds_state1_cubed_21 = column5_row673 * column5_row689; + + // Sum constraints. + let mut total_sum = Felt::ZERO; + + // Constraint: cpu/decode/opcode_range_check/bit. + let mut value = (cpu_decode_opcode_range_check_bit_0 * cpu_decode_opcode_range_check_bit_0 + - cpu_decode_opcode_range_check_bit_0) + * domain4.field_div(&NonZeroFelt::from_felt_unchecked(domain0)); + total_sum = total_sum + constraint_coefficients[0] * value; + + // Constraint: cpu/decode/opcode_range_check/zero. + value = (column0_row0).field_div(&NonZeroFelt::from_felt_unchecked(domain4)); + total_sum = total_sum + constraint_coefficients[1] * value; + + // Constraint: cpu/decode/opcode_range_check_input. + value = (column1_row1 + - (((column0_row0 * global_values.offset_size + column4_row4) + * global_values.offset_size + + column4_row8) + * global_values.offset_size + + column4_row0)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[2] * value; + + // Constraint: cpu/decode/flag_op1_base_op0_bit. + value = (cpu_decode_flag_op1_base_op0_0 * cpu_decode_flag_op1_base_op0_0 + - cpu_decode_flag_op1_base_op0_0) + .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[3] * value; + + // Constraint: cpu/decode/flag_res_op1_bit. + value = (cpu_decode_flag_res_op1_0 * cpu_decode_flag_res_op1_0 - cpu_decode_flag_res_op1_0) + .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[4] * value; + + // Constraint: cpu/decode/flag_pc_update_regular_bit. + value = (cpu_decode_flag_pc_update_regular_0 * cpu_decode_flag_pc_update_regular_0 + - cpu_decode_flag_pc_update_regular_0) + .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[5] * value; + + // Constraint: cpu/decode/fp_update_regular_bit. + value = (cpu_decode_fp_update_regular_0 * cpu_decode_fp_update_regular_0 + - cpu_decode_fp_update_regular_0) + .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[6] * value; + + // Constraint: cpu/operands/mem_dst_addr. + value = (column1_row8 + global_values.half_offset_size + - (cpu_decode_opcode_range_check_bit_0 * column5_row8 + + (Felt::ONE - cpu_decode_opcode_range_check_bit_0) * column5_row0 + + column4_row0)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[7] * value; + + // Constraint: cpu/operands/mem0_addr. + value = (column1_row4 + global_values.half_offset_size + - (cpu_decode_opcode_range_check_bit_1 * column5_row8 + + (Felt::ONE - cpu_decode_opcode_range_check_bit_1) * column5_row0 + + column4_row8)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[8] * value; + + // Constraint: cpu/operands/mem1_addr. + value = (column1_row12 + global_values.half_offset_size + - (cpu_decode_opcode_range_check_bit_2 * column1_row0 + + cpu_decode_opcode_range_check_bit_4 * column5_row0 + + cpu_decode_opcode_range_check_bit_3 * column5_row8 + + cpu_decode_flag_op1_base_op0_0 * column1_row5 + + column4_row4)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[9] * value; + + // Constraint: cpu/operands/ops_mul. + value = (column5_row4 - column1_row5 * column1_row13) + .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[10] * value; + + // Constraint: cpu/operands/res. + value = ((Felt::ONE - cpu_decode_opcode_range_check_bit_9) * column5_row12 + - (cpu_decode_opcode_range_check_bit_5 * (column1_row5 + column1_row13) + + cpu_decode_opcode_range_check_bit_6 * column5_row4 + + cpu_decode_flag_res_op1_0 * column1_row13)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[11] * value; + + // Constraint: cpu/update_registers/update_pc/tmp0. + value = (column5_row2 - cpu_decode_opcode_range_check_bit_9 * column1_row9) + * domain24.field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[12] * value; + + // Constraint: cpu/update_registers/update_pc/tmp1. + value = (column5_row10 - column5_row2 * column5_row12) + * domain24.field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[13] * value; + + // Constraint: cpu/update_registers/update_pc/pc_cond_negative. + value = ((Felt::ONE - cpu_decode_opcode_range_check_bit_9) * column1_row16 + + column5_row2 * (column1_row16 - (column1_row0 + column1_row13)) + - (cpu_decode_flag_pc_update_regular_0 * npc_reg_0 + + cpu_decode_opcode_range_check_bit_7 * column5_row12 + + cpu_decode_opcode_range_check_bit_8 * (column1_row0 + column5_row12))) + * domain24.field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[14] * value; + + // Constraint: cpu/update_registers/update_pc/pc_cond_positive. + value = ((column5_row10 - cpu_decode_opcode_range_check_bit_9) * (column1_row16 - npc_reg_0)) + * domain24.field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[15] * value; + + // Constraint: cpu/update_registers/update_ap/ap_update. + value = (column5_row16 + - (column5_row0 + + cpu_decode_opcode_range_check_bit_10 * column5_row12 + + cpu_decode_opcode_range_check_bit_11 + + cpu_decode_opcode_range_check_bit_12 * Felt::TWO)) + * domain24.field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[16] * value; + + // Constraint: cpu/update_registers/update_fp/fp_update. + value = (column5_row24 + - (cpu_decode_fp_update_regular_0 * column5_row8 + + cpu_decode_opcode_range_check_bit_13 * column1_row9 + + cpu_decode_opcode_range_check_bit_12 * (column5_row0 + 2))) + * domain24.field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[17] * value; + + // Constraint: cpu/opcodes/call/push_fp. + value = (cpu_decode_opcode_range_check_bit_12 * (column1_row9 - column5_row8)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[18] * value; + + // Constraint: cpu/opcodes/call/push_pc. + value = (cpu_decode_opcode_range_check_bit_12 + * (column1_row5 - (column1_row0 + cpu_decode_opcode_range_check_bit_2 + 1))) + .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[19] * value; + + // Constraint: cpu/opcodes/call/off0. + value = (cpu_decode_opcode_range_check_bit_12 + * (column4_row0 - global_values.half_offset_size)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[20] * value; + + // Constraint: cpu/opcodes/call/off1. + value = (cpu_decode_opcode_range_check_bit_12 + * (column4_row8 - (global_values.half_offset_size + 1))) + .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[21] * value; + + // Constraint: cpu/opcodes/call/flags. + value = (cpu_decode_opcode_range_check_bit_12 + * (cpu_decode_opcode_range_check_bit_12 + + cpu_decode_opcode_range_check_bit_12 + + 1 + + Felt::ONE + - (cpu_decode_opcode_range_check_bit_0 + cpu_decode_opcode_range_check_bit_1 + 4))) + .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[22] * value; + + // Constraint: cpu/opcodes/ret/off0. + value = (cpu_decode_opcode_range_check_bit_13 + * (column4_row0 + 2 - global_values.half_offset_size)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[23] * value; + + // Constraint: cpu/opcodes/ret/off2. + value = (cpu_decode_opcode_range_check_bit_13 + * (column4_row4 + Felt::ONE - global_values.half_offset_size)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[24] * value; + + // Constraint: cpu/opcodes/ret/flags. + value = (cpu_decode_opcode_range_check_bit_13 + * (cpu_decode_opcode_range_check_bit_7 + + cpu_decode_opcode_range_check_bit_0 + + cpu_decode_opcode_range_check_bit_3 + + cpu_decode_flag_res_op1_0 + - 4)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[25] * value; + + // Constraint: cpu/opcodes/assert_eq/assert_eq. + value = (cpu_decode_opcode_range_check_bit_14 * (column1_row9 - column5_row12)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[26] * value; + + // Constraint: initial_ap. + value = (column5_row0 - global_values.initial_ap) + .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); + total_sum = total_sum + constraint_coefficients[27] * value; + + // Constraint: initial_fp. + value = (column5_row8 - global_values.initial_ap) + .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); + total_sum = total_sum + constraint_coefficients[28] * value; + + // Constraint: initial_pc. + value = (column1_row0 - global_values.initial_pc) + .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); + total_sum = total_sum + constraint_coefficients[29] * value; + + // Constraint: final_ap. + value = (column5_row0 - global_values.final_ap) + .field_div(&NonZeroFelt::from_felt_unchecked(domain24)); + total_sum = total_sum + constraint_coefficients[30] * value; + + // Constraint: final_fp. + value = (column5_row8 - global_values.initial_ap) + .field_div(&NonZeroFelt::from_felt_unchecked(domain24)); + total_sum = total_sum + constraint_coefficients[31] * value; + + // Constraint: final_pc. + value = (column1_row0 - global_values.final_pc) + .field_div(&NonZeroFelt::from_felt_unchecked(domain24)); + total_sum = total_sum + constraint_coefficients[32] * value; + + // Constraint: memory/multi_column_perm/perm/init0. + value = ((global_values.memory_multi_column_perm_perm_interaction_elm + - (column2_row0 + + global_values.memory_multi_column_perm_hash_interaction_elm0 * column2_row1)) + * column6_inter1_row0 + + column1_row0 + + global_values.memory_multi_column_perm_hash_interaction_elm0 * column1_row1 + - global_values.memory_multi_column_perm_perm_interaction_elm) + .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); + total_sum = total_sum + constraint_coefficients[33] * value; + + // Constraint: memory/multi_column_perm/perm/step0. + value = ((global_values.memory_multi_column_perm_perm_interaction_elm + - (column2_row2 + + global_values.memory_multi_column_perm_hash_interaction_elm0 * column2_row3)) + * column6_inter1_row2 + - (global_values.memory_multi_column_perm_perm_interaction_elm + - (column1_row2 + + global_values.memory_multi_column_perm_hash_interaction_elm0 * column1_row3)) + * column6_inter1_row0) + * domain26.field_div(&NonZeroFelt::from_felt_unchecked(domain1)); + total_sum = total_sum + constraint_coefficients[34] * value; + + // Constraint: memory/multi_column_perm/perm/last. + value = (column6_inter1_row0 - global_values.memory_multi_column_perm_perm_public_memory_prod) + .field_div(&NonZeroFelt::from_felt_unchecked(domain26)); + total_sum = total_sum + constraint_coefficients[35] * value; + + // Constraint: memory/diff_is_bit. + value = (memory_address_diff_0 * memory_address_diff_0 - memory_address_diff_0) + * domain26.field_div(&NonZeroFelt::from_felt_unchecked(domain1)); + total_sum = total_sum + constraint_coefficients[36] * value; + + // Constraint: memory/is_func. + value = ((memory_address_diff_0 - 1) * (column2_row1 - column2_row3)) + * domain26.field_div(&NonZeroFelt::from_felt_unchecked(domain1)); + total_sum = total_sum + constraint_coefficients[37] * value; + + // Constraint: memory/initial_addr. + value = (column2_row0 - 1).field_div(&NonZeroFelt::from_felt_unchecked(domain25)); + total_sum = total_sum + constraint_coefficients[38] * value; + + // Constraint: public_memory_addr_zero. + value = (column1_row2).field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[39] * value; + + // Constraint: public_memory_value_zero. + value = (column1_row3).field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[40] * value; + + // Constraint: range_check16/perm/init0. + value = ((global_values.range_check16_perm_interaction_elm - column4_row2) + * column7_inter1_row1 + + column4_row0 + - global_values.range_check16_perm_interaction_elm) + .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); + total_sum = total_sum + constraint_coefficients[41] * value; + + // Constraint: range_check16/perm/step0. + value = ((global_values.range_check16_perm_interaction_elm - column4_row6) + * column7_inter1_row5 + - (global_values.range_check16_perm_interaction_elm - column4_row4) * column7_inter1_row1) + * domain27.field_div(&NonZeroFelt::from_felt_unchecked(domain2)); + total_sum = total_sum + constraint_coefficients[42] * value; + + // Constraint: range_check16/perm/last. + value = (column7_inter1_row1 - global_values.range_check16_perm_public_memory_prod) + .field_div(&NonZeroFelt::from_felt_unchecked(domain27)); + total_sum = total_sum + constraint_coefficients[43] * value; + + // Constraint: range_check16/diff_is_bit. + value = (range_check16_diff_0 * range_check16_diff_0 - range_check16_diff_0) + * domain27.field_div(&NonZeroFelt::from_felt_unchecked(domain2)); + total_sum = total_sum + constraint_coefficients[44] * value; + + // Constraint: range_check16/minimum. + value = (column4_row2 - global_values.range_check_min) + .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); + total_sum = total_sum + constraint_coefficients[45] * value; + + // Constraint: range_check16/maximum. + value = (column4_row2 - global_values.range_check_max) + .field_div(&NonZeroFelt::from_felt_unchecked(domain27)); + total_sum = total_sum + constraint_coefficients[46] * value; + + // Constraint: diluted_check/permutation/init0. + value = ((global_values.diluted_check_permutation_interaction_elm - column3_row1) + * column7_inter1_row0 + + column3_row0 + - global_values.diluted_check_permutation_interaction_elm) + .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); + total_sum = total_sum + constraint_coefficients[47] * value; + + // Constraint: diluted_check/permutation/step0. + value = ((global_values.diluted_check_permutation_interaction_elm - column3_row3) + * column7_inter1_row2 + - (global_values.diluted_check_permutation_interaction_elm - column3_row2) + * column7_inter1_row0) + * domain26.field_div(&NonZeroFelt::from_felt_unchecked(domain1)); + total_sum = total_sum + constraint_coefficients[48] * value; + + // Constraint: diluted_check/permutation/last. + value = (column7_inter1_row0 - global_values.diluted_check_permutation_public_memory_prod) + .field_div(&NonZeroFelt::from_felt_unchecked(domain26)); + total_sum = total_sum + constraint_coefficients[49] * value; + + // Constraint: diluted_check/init. + value = (column6_inter1_row1 - 1).field_div(&NonZeroFelt::from_felt_unchecked(domain25)); + total_sum = total_sum + constraint_coefficients[50] * value; + + // Constraint: diluted_check/first_element. + value = (column3_row1 - global_values.diluted_check_first_elm) + .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); + total_sum = total_sum + constraint_coefficients[51] * value; + + // Constraint: diluted_check/step. + value = (column6_inter1_row3 + - (column6_inter1_row1 + * (Felt::ONE + + global_values.diluted_check_interaction_z * (column3_row3 - column3_row1)) + + global_values.diluted_check_interaction_alpha + * (column3_row3 - column3_row1) + * (column3_row3 - column3_row1))) + * domain26.field_div(&NonZeroFelt::from_felt_unchecked(domain1)); + total_sum = total_sum + constraint_coefficients[52] * value; + + // Constraint: diluted_check/last. + value = (column6_inter1_row1 - global_values.diluted_check_final_cum_val) + .field_div(&NonZeroFelt::from_felt_unchecked(domain26)); + total_sum = total_sum + constraint_coefficients[53] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/last_one_is_zero. + value = (column5_row57 * (column4_row3 - (column4_row11 + column4_row11))) + .field_div(&NonZeroFelt::from_felt_unchecked(domain19)); + total_sum = total_sum + constraint_coefficients[54] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/zeroes_between_ones0. + value = (column5_row57 + * (column4_row11 + - Felt::from_hex_unchecked("0x800000000000000000000000000000000000000000000000") + * column4_row1539)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain19)); + total_sum = total_sum + constraint_coefficients[55] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/cumulative_bit192. + value = (column5_row57 + - column4_row2047 * (column4_row1539 - (column4_row1547 + column4_row1547))) + .field_div(&NonZeroFelt::from_felt_unchecked(domain19)); + total_sum = total_sum + constraint_coefficients[56] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/zeroes_between_ones192. + value = (column4_row2047 * (column4_row1547 - Felt::from(8) * column4_row1571)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain19)); + total_sum = total_sum + constraint_coefficients[57] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/cumulative_bit196. + value = (column4_row2047 + - (column4_row2011 - (column4_row2019 + column4_row2019)) + * (column4_row1571 - (column4_row1579 + column4_row1579))) + .field_div(&NonZeroFelt::from_felt_unchecked(domain19)); + total_sum = total_sum + constraint_coefficients[58] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/zeroes_between_ones196. + value = ((column4_row2011 - (column4_row2019 + column4_row2019)) + * (column4_row1579 - Felt::from_hex_unchecked("0x40000000000000") * column4_row2011)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain19)); + total_sum = total_sum + constraint_coefficients[59] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/booleanity_test. + value = (pedersen_hash0_ec_subset_sum_bit_0 * (pedersen_hash0_ec_subset_sum_bit_0 - 1)) + * domain20.field_div(&NonZeroFelt::from_felt_unchecked(domain3)); + total_sum = total_sum + constraint_coefficients[60] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/bit_extraction_end. + value = (column4_row3).field_div(&NonZeroFelt::from_felt_unchecked(domain21)); + total_sum = total_sum + constraint_coefficients[61] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/zeros_tail. + value = (column4_row3).field_div(&NonZeroFelt::from_felt_unchecked(domain20)); + total_sum = total_sum + constraint_coefficients[62] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/add_points/slope. + value = (pedersen_hash0_ec_subset_sum_bit_0 * (column4_row5 - global_values.pedersen_points_y) + - column4_row7 * (column4_row1 - global_values.pedersen_points_x)) + * domain20.field_div(&NonZeroFelt::from_felt_unchecked(domain3)); + total_sum = total_sum + constraint_coefficients[63] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/add_points/x. + value = (column4_row7 * column4_row7 + - pedersen_hash0_ec_subset_sum_bit_0 + * (column4_row1 + global_values.pedersen_points_x + column4_row9)) + * domain20.field_div(&NonZeroFelt::from_felt_unchecked(domain3)); + total_sum = total_sum + constraint_coefficients[64] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/add_points/y. + value = (pedersen_hash0_ec_subset_sum_bit_0 * (column4_row5 + column4_row13) + - column4_row7 * (column4_row1 - column4_row9)) + * domain20.field_div(&NonZeroFelt::from_felt_unchecked(domain3)); + total_sum = total_sum + constraint_coefficients[65] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/copy_point/x. + value = (pedersen_hash0_ec_subset_sum_bit_neg_0 * (column4_row9 - column4_row1)) + * domain20.field_div(&NonZeroFelt::from_felt_unchecked(domain3)); + total_sum = total_sum + constraint_coefficients[66] * value; + + // Constraint: pedersen/hash0/ec_subset_sum/copy_point/y. + value = (pedersen_hash0_ec_subset_sum_bit_neg_0 * (column4_row13 - column4_row5)) + * domain20.field_div(&NonZeroFelt::from_felt_unchecked(domain3)); + total_sum = total_sum + constraint_coefficients[67] * value; + + // Constraint: pedersen/hash0/copy_point/x. + value = (column4_row2049 - column4_row2041) + * domain22.field_div(&NonZeroFelt::from_felt_unchecked(domain19)); + total_sum = total_sum + constraint_coefficients[68] * value; + + // Constraint: pedersen/hash0/copy_point/y. + value = (column4_row2053 - column4_row2045) + * domain22.field_div(&NonZeroFelt::from_felt_unchecked(domain19)); + total_sum = total_sum + constraint_coefficients[69] * value; + + // Constraint: pedersen/hash0/init/x. + value = (column4_row1 - global_values.pedersen_shift_point.x) + .field_div(&NonZeroFelt::from_felt_unchecked(domain23)); + total_sum = total_sum + constraint_coefficients[70] * value; + + // Constraint: pedersen/hash0/init/y. + value = (column4_row5 - global_values.pedersen_shift_point.y) + .field_div(&NonZeroFelt::from_felt_unchecked(domain23)); + total_sum = total_sum + constraint_coefficients[71] * value; + + // Constraint: pedersen/input0_value0. + value = (column1_row11 - column4_row3).field_div(&NonZeroFelt::from_felt_unchecked(domain23)); + total_sum = total_sum + constraint_coefficients[72] * value; + + // Constraint: pedersen/input0_addr. + value = (column1_row4106 - (column1_row1034 + 1)) + * domain28.field_div(&NonZeroFelt::from_felt_unchecked(domain23)); + total_sum = total_sum + constraint_coefficients[73] * value; + + // Constraint: pedersen/init_addr. + value = (column1_row10 - global_values.initial_pedersen_addr) + .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); + total_sum = total_sum + constraint_coefficients[74] * value; + + // Constraint: pedersen/input1_value0. + value = + (column1_row2059 - column4_row2051).field_div(&NonZeroFelt::from_felt_unchecked(domain23)); + total_sum = total_sum + constraint_coefficients[75] * value; + + // Constraint: pedersen/input1_addr. + value = (column1_row2058 - (column1_row10 + 1)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain23)); + total_sum = total_sum + constraint_coefficients[76] * value; + + // Constraint: pedersen/output_value0. + value = + (column1_row1035 - column4_row4089).field_div(&NonZeroFelt::from_felt_unchecked(domain23)); + total_sum = total_sum + constraint_coefficients[77] * value; + + // Constraint: pedersen/output_addr. + value = (column1_row1034 - (column1_row2058 + 1)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain23)); + total_sum = total_sum + constraint_coefficients[78] * value; + + // Constraint: range_check_builtin/value. + value = (range_check_builtin_value7_0 - column1_row139) + .field_div(&NonZeroFelt::from_felt_unchecked(domain9)); + total_sum = total_sum + constraint_coefficients[79] * value; + + // Constraint: range_check_builtin/addr_step. + value = (column1_row394 - (column1_row138 + 1)) + * domain29.field_div(&NonZeroFelt::from_felt_unchecked(domain9)); + total_sum = total_sum + constraint_coefficients[80] * value; + + // Constraint: range_check_builtin/init_addr. + value = (column1_row138 - global_values.initial_range_check_addr) + .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); + total_sum = total_sum + constraint_coefficients[81] * value; + + // Constraint: bitwise/init_var_pool_addr. + value = (column1_row42 - global_values.initial_bitwise_addr) + .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); + total_sum = total_sum + constraint_coefficients[82] * value; + + // Constraint: bitwise/step_var_pool_addr. + value = (column1_row106 - (column1_row42 + 1)) + * domain10.field_div(&NonZeroFelt::from_felt_unchecked(domain7)); + total_sum = total_sum + constraint_coefficients[83] * value; + + // Constraint: bitwise/x_or_y_addr. + value = (column1_row74 - (column1_row234 + 1)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain9)); + total_sum = total_sum + constraint_coefficients[84] * value; + + // Constraint: bitwise/next_var_pool_addr. + value = (column1_row298 - (column1_row74 + 1)) + * domain29.field_div(&NonZeroFelt::from_felt_unchecked(domain9)); + total_sum = total_sum + constraint_coefficients[85] * value; + + // Constraint: bitwise/partition. + value = (bitwise_sum_var_0_0 + bitwise_sum_var_8_0 - column1_row43) + .field_div(&NonZeroFelt::from_felt_unchecked(domain7)); + total_sum = total_sum + constraint_coefficients[86] * value; + + // Constraint: bitwise/or_is_and_plus_xor. + value = (column1_row75 - (column1_row171 + column1_row235)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain9)); + total_sum = total_sum + constraint_coefficients[87] * value; + + // Constraint: bitwise/addition_is_xor_with_and. + value = (column3_row0 + column3_row64 - (column3_row192 + column3_row128 + column3_row128)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain11)); + total_sum = total_sum + constraint_coefficients[88] * value; + + // Constraint: bitwise/unique_unpacking192. + value = ((column3_row176 + column3_row240) * Felt::from(16) - column3_row2) + .field_div(&NonZeroFelt::from_felt_unchecked(domain9)); + total_sum = total_sum + constraint_coefficients[89] * value; + + // Constraint: bitwise/unique_unpacking193. + value = ((column3_row180 + column3_row244) * Felt::from(16) - column3_row130) + .field_div(&NonZeroFelt::from_felt_unchecked(domain9)); + total_sum = total_sum + constraint_coefficients[90] * value; + + // Constraint: bitwise/unique_unpacking194. + value = ((column3_row184 + column3_row248) * Felt::from(16) - column3_row66) + .field_div(&NonZeroFelt::from_felt_unchecked(domain9)); + total_sum = total_sum + constraint_coefficients[91] * value; + + // Constraint: bitwise/unique_unpacking195. + value = ((column3_row188 + column3_row252) * Felt::from(256) - column3_row194) + .field_div(&NonZeroFelt::from_felt_unchecked(domain9)); + total_sum = total_sum + constraint_coefficients[92] * value; + + // Constraint: poseidon/param_0/init_input_output_addr. + value = (column1_row266 - global_values.initial_poseidon_addr) + .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); + total_sum = total_sum + constraint_coefficients[93] * value; + + // Constraint: poseidon/param_0/addr_input_output_step. + value = (column1_row778 - (column1_row266 + 3)) + * domain30.field_div(&NonZeroFelt::from_felt_unchecked(domain12)); + total_sum = total_sum + constraint_coefficients[94] * value; + + // Constraint: poseidon/param_1/init_input_output_addr. + value = (column1_row202 - (global_values.initial_poseidon_addr + 1)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); + total_sum = total_sum + constraint_coefficients[95] * value; + + // Constraint: poseidon/param_1/addr_input_output_step. + value = (column1_row714 - (column1_row202 + 3)) + * domain30.field_div(&NonZeroFelt::from_felt_unchecked(domain12)); + total_sum = total_sum + constraint_coefficients[96] * value; + + // Constraint: poseidon/param_2/init_input_output_addr. + value = (column1_row458 - (global_values.initial_poseidon_addr + 2)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); + total_sum = total_sum + constraint_coefficients[97] * value; + + // Constraint: poseidon/param_2/addr_input_output_step. + value = (column1_row970 - (column1_row458 + 3)) + * domain30.field_div(&NonZeroFelt::from_felt_unchecked(domain12)); + total_sum = total_sum + constraint_coefficients[98] * value; + + // Constraint: poseidon/poseidon/full_rounds_state0_squaring. + value = (column5_row9 * column5_row9 - column5_row105) + .field_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[99] * value; + + // Constraint: poseidon/poseidon/full_rounds_state1_squaring. + value = (column5_row73 * column5_row73 - column5_row25) + .field_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[100] * value; + + // Constraint: poseidon/poseidon/full_rounds_state2_squaring. + value = (column5_row41 * column5_row41 - column5_row89) + .field_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[101] * value; + + // Constraint: poseidon/poseidon/partial_rounds_state0_squaring. + value = (column5_row6 * column5_row6 - column5_row14) + .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[102] * value; + + // Constraint: poseidon/poseidon/partial_rounds_state1_squaring. + value = (column5_row1 * column5_row1 - column5_row17) + * domain15.field_div(&NonZeroFelt::from_felt_unchecked(domain6)); + total_sum = total_sum + constraint_coefficients[103] * value; + + // Constraint: poseidon/poseidon/add_first_round_key0. + value = (column1_row267 + + Felt::from_hex_unchecked( + "0x6861759EA556A2339DD92F9562A30B9E58E2AD98109AE4780B7FD8EAC77FE6F", + ) + - column5_row9) + .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); + total_sum = total_sum + constraint_coefficients[104] * value; + + // Constraint: poseidon/poseidon/add_first_round_key1. + value = (column1_row203 + + Felt::from_hex_unchecked( + "0x3827681995D5AF9FFC8397A3D00425A3DA43F76ABF28A64E4AB1A22F27508C4", + ) + - column5_row73) + .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); + total_sum = total_sum + constraint_coefficients[105] * value; + + // Constraint: poseidon/poseidon/add_first_round_key2. + value = (column1_row459 + + Felt::from_hex_unchecked( + "0x3A3956D2FAD44D0E7F760A2277DC7CB2CAC75DC279B2D687A0DBE17704A8309", + ) + - column5_row41) + .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); + total_sum = total_sum + constraint_coefficients[106] * value; + + // Constraint: poseidon/poseidon/full_round0. + value = (column5_row137 + - (poseidon_poseidon_full_rounds_state0_cubed_0 + + poseidon_poseidon_full_rounds_state0_cubed_0 + + poseidon_poseidon_full_rounds_state0_cubed_0 + + poseidon_poseidon_full_rounds_state1_cubed_0 + + poseidon_poseidon_full_rounds_state2_cubed_0 + + global_values.poseidon_poseidon_full_round_key0)) + * domain13.field_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[107] * value; + + // Constraint: poseidon/poseidon/full_round1. + value = (column5_row201 + poseidon_poseidon_full_rounds_state1_cubed_0 + - (poseidon_poseidon_full_rounds_state0_cubed_0 + + poseidon_poseidon_full_rounds_state2_cubed_0 + + global_values.poseidon_poseidon_full_round_key1)) + * domain13.field_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[108] * value; + + // Constraint: poseidon/poseidon/full_round2. + value = (column5_row169 + + poseidon_poseidon_full_rounds_state2_cubed_0 + + poseidon_poseidon_full_rounds_state2_cubed_0 + - (poseidon_poseidon_full_rounds_state0_cubed_0 + + poseidon_poseidon_full_rounds_state1_cubed_0 + + global_values.poseidon_poseidon_full_round_key2)) + * domain13.field_div(&NonZeroFelt::from_felt_unchecked(domain8)); + total_sum = total_sum + constraint_coefficients[109] * value; + + // Constraint: poseidon/poseidon/last_full_round0. + value = (column1_row779 + - (poseidon_poseidon_full_rounds_state0_cubed_7 + + poseidon_poseidon_full_rounds_state0_cubed_7 + + poseidon_poseidon_full_rounds_state0_cubed_7 + + poseidon_poseidon_full_rounds_state1_cubed_7 + + poseidon_poseidon_full_rounds_state2_cubed_7)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); + total_sum = total_sum + constraint_coefficients[110] * value; + + // Constraint: poseidon/poseidon/last_full_round1. + value = (column1_row715 + poseidon_poseidon_full_rounds_state1_cubed_7 + - (poseidon_poseidon_full_rounds_state0_cubed_7 + + poseidon_poseidon_full_rounds_state2_cubed_7)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); + total_sum = total_sum + constraint_coefficients[111] * value; + + // Constraint: poseidon/poseidon/last_full_round2. + value = (column1_row971 + + poseidon_poseidon_full_rounds_state2_cubed_7 + + poseidon_poseidon_full_rounds_state2_cubed_7 + - (poseidon_poseidon_full_rounds_state0_cubed_7 + + poseidon_poseidon_full_rounds_state1_cubed_7)) + .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); + total_sum = total_sum + constraint_coefficients[112] * value; + + // Constraint: poseidon/poseidon/copy_partial_rounds0_i0. + value = (column5_row982 - column5_row1).field_div(&NonZeroFelt::from_felt_unchecked(domain16)); + total_sum = total_sum + constraint_coefficients[113] * value; + + // Constraint: poseidon/poseidon/copy_partial_rounds0_i1. + value = (column5_row998 - column5_row33).field_div(&NonZeroFelt::from_felt_unchecked(domain16)); + total_sum = total_sum + constraint_coefficients[114] * value; + + // Constraint: poseidon/poseidon/copy_partial_rounds0_i2. + value = + (column5_row1014 - column5_row65).field_div(&NonZeroFelt::from_felt_unchecked(domain16)); + total_sum = total_sum + constraint_coefficients[115] * value; + + // Constraint: poseidon/poseidon/margin_full_to_partial0. + value = (column5_row6 + + poseidon_poseidon_full_rounds_state2_cubed_3 + + poseidon_poseidon_full_rounds_state2_cubed_3 + - (poseidon_poseidon_full_rounds_state0_cubed_3 + + poseidon_poseidon_full_rounds_state1_cubed_3 + + Felt::from_hex_unchecked( + "0x4B085EB1DF4258C3453CC97445954BF3433B6AB9DD5A99592864C00F54A3F9A", + ))) + .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); + total_sum = total_sum + constraint_coefficients[116] * value; + + // Constraint: poseidon/poseidon/margin_full_to_partial1. + value = (column5_row22 + - (Felt::from_hex_unchecked( + "0x800000000000010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD", + ) * poseidon_poseidon_full_rounds_state1_cubed_3 + + Felt::from(10) * poseidon_poseidon_full_rounds_state2_cubed_3 + + Felt::from(4) * column5_row6 + + Felt::from_hex_unchecked( + "0x800000000000010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + ) * poseidon_poseidon_partial_rounds_state0_cubed_0 + + Felt::from_hex_unchecked( + "0x46FB825257FEC76C50FE043684D4E6D2D2F2FDFE9B7C8D7128CA7ACC0F66F30", + ))) + .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); + total_sum = total_sum + constraint_coefficients[117] * value; + + // Constraint: poseidon/poseidon/margin_full_to_partial2. + value = (column5_row38 + - (Felt::from(8) * poseidon_poseidon_full_rounds_state2_cubed_3 + + Felt::from(4) * column5_row6 + + Felt::from(6) * poseidon_poseidon_partial_rounds_state0_cubed_0 + + column5_row22 + + column5_row22 + + Felt::from_hex_unchecked( + "0x800000000000010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + ) * poseidon_poseidon_partial_rounds_state0_cubed_1 + + Felt::from_hex_unchecked( + "0xF2193BA0C7EA33CE6222D9446C1E166202AE5461005292F4A2BCB93420151A", + ))) + .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); + total_sum = total_sum + constraint_coefficients[118] * value; + + // Constraint: poseidon/poseidon/partial_round0. + value = (column5_row54 + - (Felt::from(8) * poseidon_poseidon_partial_rounds_state0_cubed_0 + + Felt::from(4) * column5_row22 + + Felt::from(6) * poseidon_poseidon_partial_rounds_state0_cubed_1 + + column5_row38 + + column5_row38 + + Felt::from_hex_unchecked( + "0x800000000000010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + ) * poseidon_poseidon_partial_rounds_state0_cubed_2 + + global_values.poseidon_poseidon_partial_round_key0)) + * domain17.field_div(&NonZeroFelt::from_felt_unchecked(domain5)); + total_sum = total_sum + constraint_coefficients[119] * value; + + // Constraint: poseidon/poseidon/partial_round1. + value = (column5_row97 + - (Felt::from(8) * poseidon_poseidon_partial_rounds_state1_cubed_0 + + Felt::from(4) * column5_row33 + + Felt::from(6) * poseidon_poseidon_partial_rounds_state1_cubed_1 + + column5_row65 + + column5_row65 + + Felt::from_hex_unchecked( + "0x800000000000010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + ) * poseidon_poseidon_partial_rounds_state1_cubed_2 + + global_values.poseidon_poseidon_partial_round_key1)) + * domain18.field_div(&NonZeroFelt::from_felt_unchecked(domain6)); + total_sum = total_sum + constraint_coefficients[120] * value; + + // Constraint: poseidon/poseidon/margin_partial_to_full0. + value = (column5_row521 + - (Felt::from(16) * poseidon_poseidon_partial_rounds_state1_cubed_19 + + Felt::from(8) * column5_row641 + + Felt::from(16) * poseidon_poseidon_partial_rounds_state1_cubed_20 + + Felt::from(6) * column5_row673 + + poseidon_poseidon_partial_rounds_state1_cubed_21 + + Felt::from_hex_unchecked( + "0x13D1B5CFD87693224F0AC561AB2C15CA53365D768311AF59CEFAF701BC53B37", + ))) + .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); + total_sum = total_sum + constraint_coefficients[121] * value; + + // Constraint: poseidon/poseidon/margin_partial_to_full1. + value = (column5_row585 + - (Felt::from(4) * poseidon_poseidon_partial_rounds_state1_cubed_20 + + column5_row673 + + column5_row673 + + poseidon_poseidon_partial_rounds_state1_cubed_21 + + Felt::from_hex_unchecked( + "0x3195D6B2D930E71CEDE286D5B8B41D49296DDF222BCD3BF3717A12A9A6947FF", + ))) + .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); + total_sum = total_sum + constraint_coefficients[122] * value; + + // Constraint: poseidon/poseidon/margin_partial_to_full2. + value = (column5_row553 + - (Felt::from(8) * poseidon_poseidon_partial_rounds_state1_cubed_19 + + Felt::from(4) * column5_row641 + + Felt::from(6) * poseidon_poseidon_partial_rounds_state1_cubed_20 + + column5_row673 + + column5_row673 + + Felt::from_hex_unchecked( + "0x800000000000010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + ) * poseidon_poseidon_partial_rounds_state1_cubed_21 + + Felt::from_hex_unchecked( + "0x2C14FCCABC26929170CC7AC9989C823608B9008BEF3B8E16B6089A5D33CD72E", + ))) + .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); + total_sum = total_sum + constraint_coefficients[123] * value; + + total_sum +} + +pub fn eval_oods_polynomial_inner( + column_values: &[Felt], + oods_values: &[Felt], + constraint_coefficients: &[Felt], + point: &Felt, + oods_point: &Felt, + trace_generator: &Felt, +) -> Felt { + // Compute powers. + let pow0 = trace_generator.pow(0_u128); + let pow1 = trace_generator.pow(4089_u128); + let pow2 = trace_generator.pow(2011_u128); + let pow3 = trace_generator.pow(1539_u128); + let pow4 = trace_generator.pow(1_u128); + let pow5 = pow4 * pow4; // pow(trace_generator, 2). + let pow6 = pow4 * pow5; // pow(trace_generator, 3). + let pow7 = pow4 * pow6; // pow(trace_generator, 4). + let pow8 = pow4 * pow7; // pow(trace_generator, 5). + let pow9 = pow4 * pow8; // pow(trace_generator, 6). + let pow10 = pow4 * pow9; // pow(trace_generator, 7). + let pow11 = pow4 * pow10; // pow(trace_generator, 8). + let pow12 = pow3 * pow11; // pow(trace_generator, 1547). + let pow13 = pow4 * pow11; // pow(trace_generator, 9). + let pow14 = pow4 * pow13; // pow(trace_generator, 10). + let pow15 = pow4 * pow14; // pow(trace_generator, 11). + let pow16 = pow4 * pow15; // pow(trace_generator, 12). + let pow17 = pow4 * pow16; // pow(trace_generator, 13). + let pow18 = pow4 * pow17; // pow(trace_generator, 14). + let pow19 = pow4 * pow18; // pow(trace_generator, 15). + let pow20 = pow4 * pow19; // pow(trace_generator, 16). + let pow21 = pow4 * pow20; // pow(trace_generator, 17). + let pow22 = pow6 * pow21; // pow(trace_generator, 20). + let pow23 = pow5 * pow22; // pow(trace_generator, 22). + let pow24 = pow5 * pow23; // pow(trace_generator, 24). + let pow25 = pow4 * pow24; // pow(trace_generator, 25). + let pow26 = pow6 * pow25; // pow(trace_generator, 28). + let pow27 = pow5 * pow26; // pow(trace_generator, 30). + let pow28 = pow5 * pow27; // pow(trace_generator, 32). + let pow29 = pow4 * pow28; // pow(trace_generator, 33). + let pow30 = pow3 * pow28; // pow(trace_generator, 1571). + let pow31 = pow6 * pow29; // pow(trace_generator, 36). + let pow32 = pow5 * pow31; // pow(trace_generator, 38). + let pow33 = pow5 * pow32; // pow(trace_generator, 40). + let pow34 = pow4 * pow33; // pow(trace_generator, 41). + let pow35 = pow4 * pow34; // pow(trace_generator, 42). + let pow36 = pow4 * pow35; // pow(trace_generator, 43). + let pow37 = pow4 * pow36; // pow(trace_generator, 44). + let pow38 = pow5 * pow37; // pow(trace_generator, 46). + let pow39 = pow5 * pow38; // pow(trace_generator, 48). + let pow40 = pow4 * pow39; // pow(trace_generator, 49). + let pow41 = pow6 * pow40; // pow(trace_generator, 52). + let pow42 = pow5 * pow41; // pow(trace_generator, 54). + let pow43 = pow5 * pow42; // pow(trace_generator, 56). + let pow44 = pow4 * pow43; // pow(trace_generator, 57). + let pow45 = pow6 * pow44; // pow(trace_generator, 60). + let pow46 = pow7 * pow45; // pow(trace_generator, 64). + let pow47 = pow4 * pow46; // pow(trace_generator, 65). + let pow48 = pow4 * pow47; // pow(trace_generator, 66). + let pow49 = pow10 * pow48; // pow(trace_generator, 73). + let pow50 = pow4 * pow49; // pow(trace_generator, 74). + let pow51 = pow4 * pow50; // pow(trace_generator, 75). + let pow52 = pow4 * pow51; // pow(trace_generator, 76). + let pow53 = pow8 * pow52; // pow(trace_generator, 81). + let pow54 = pow11 * pow53; // pow(trace_generator, 89). + let pow55 = pow11 * pow54; // pow(trace_generator, 97). + let pow56 = pow11 * pow55; // pow(trace_generator, 105). + let pow57 = pow4 * pow56; // pow(trace_generator, 106). + let pow58 = pow5 * pow57; // pow(trace_generator, 108). + let pow59 = pow22 * pow58; // pow(trace_generator, 128). + let pow60 = pow5 * pow59; // pow(trace_generator, 130). + let pow61 = pow10 * pow60; // pow(trace_generator, 137). + let pow62 = pow4 * pow61; // pow(trace_generator, 138). + let pow63 = pow4 * pow62; // pow(trace_generator, 139). + let pow64 = pow27 * pow63; // pow(trace_generator, 169). + let pow65 = pow5 * pow64; // pow(trace_generator, 171). + let pow66 = pow4 * pow63; // pow(trace_generator, 140). + let pow67 = pow4 * pow65; // pow(trace_generator, 172). + let pow68 = pow7 * pow67; // pow(trace_generator, 176). + let pow69 = pow7 * pow68; // pow(trace_generator, 180). + let pow70 = pow7 * pow69; // pow(trace_generator, 184). + let pow71 = pow7 * pow70; // pow(trace_generator, 188). + let pow72 = pow7 * pow71; // pow(trace_generator, 192). + let pow73 = pow5 * pow72; // pow(trace_generator, 194). + let pow74 = pow10 * pow73; // pow(trace_generator, 201). + let pow75 = pow4 * pow74; // pow(trace_generator, 202). + let pow76 = pow4 * pow75; // pow(trace_generator, 203). + let pow77 = pow72 * pow74; // pow(trace_generator, 393). + let pow78 = pow4 * pow76; // pow(trace_generator, 204). + let pow79 = pow27 * pow78; // pow(trace_generator, 234). + let pow80 = pow4 * pow79; // pow(trace_generator, 235). + let pow81 = pow4 * pow80; // pow(trace_generator, 236). + let pow82 = pow7 * pow81; // pow(trace_generator, 240). + let pow83 = pow7 * pow82; // pow(trace_generator, 244). + let pow84 = pow7 * pow83; // pow(trace_generator, 248). + let pow85 = pow7 * pow84; // pow(trace_generator, 252). + let pow86 = pow18 * pow85; // pow(trace_generator, 266). + let pow87 = pow4 * pow86; // pow(trace_generator, 267). + let pow88 = pow4 * pow77; // pow(trace_generator, 394). + let pow89 = pow19 * pow88; // pow(trace_generator, 409). + let pow90 = pow20 * pow89; // pow(trace_generator, 425). + let pow91 = pow28 * pow90; // pow(trace_generator, 457). + let pow92 = pow4 * pow91; // pow(trace_generator, 458). + let pow93 = pow4 * pow92; // pow(trace_generator, 459). + let pow94 = pow18 * pow93; // pow(trace_generator, 473). + let pow95 = pow20 * pow94; // pow(trace_generator, 489). + let pow96 = pow28 * pow95; // pow(trace_generator, 521). + let pow97 = pow28 * pow96; // pow(trace_generator, 553). + let pow98 = pow28 * pow97; // pow(trace_generator, 585). + let pow99 = pow24 * pow98; // pow(trace_generator, 609). + let pow100 = pow20 * pow99; // pow(trace_generator, 625). + let pow101 = pow20 * pow100; // pow(trace_generator, 641). + let pow102 = pow20 * pow101; // pow(trace_generator, 657). + let pow103 = pow84 * pow102; // pow(trace_generator, 905). + let pow104 = pow20 * pow102; // pow(trace_generator, 673). + let pow105 = pow20 * pow103; // pow(trace_generator, 921). + let pow106 = pow20 * pow104; // pow(trace_generator, 689). + let pow107 = pow20 * pow105; // pow(trace_generator, 937). + let pow108 = pow28 * pow107; // pow(trace_generator, 969). + let pow109 = pow25 * pow106; // pow(trace_generator, 714). + let pow110 = pow46 * pow109; // pow(trace_generator, 778). + let pow111 = pow4 * pow108; // pow(trace_generator, 970). + let pow112 = pow3 * pow33; // pow(trace_generator, 1579). + let pow113 = pow4 * pow109; // pow(trace_generator, 715). + let pow114 = pow4 * pow110; // pow(trace_generator, 779). + let pow115 = pow28 * pow86; // pow(trace_generator, 298). + let pow116 = pow4 * pow111; // pow(trace_generator, 971). + let pow117 = pow15 * pow116; // pow(trace_generator, 982). + let pow118 = pow6 * pow117; // pow(trace_generator, 985). + let pow119 = pow17 * pow118; // pow(trace_generator, 998). + let pow120 = pow6 * pow119; // pow(trace_generator, 1001). + let pow121 = pow17 * pow120; // pow(trace_generator, 1014). + let pow122 = pow22 * pow121; // pow(trace_generator, 1034). + let pow123 = pow2 * pow11; // pow(trace_generator, 2019). + let pow124 = pow2 * pow27; // pow(trace_generator, 2041). + let pow125 = pow7 * pow124; // pow(trace_generator, 2045). + let pow126 = pow2 * pow31; // pow(trace_generator, 2047). + let pow127 = pow4 * pow122; // pow(trace_generator, 1035). + let pow128 = pow2 * pow32; // pow(trace_generator, 2049). + let pow129 = pow2 * pow33; // pow(trace_generator, 2051). + let pow130 = pow2 * pow35; // pow(trace_generator, 2053). + let pow131 = pow8 * pow130; // pow(trace_generator, 2058). + let pow132 = pow2 * pow39; // pow(trace_generator, 2059). + let pow133 = pow1 * pow21; // pow(trace_generator, 4106). + + // Fetch columns. + let column0 = column_values[0]; + let column1 = column_values[1]; + let column2 = column_values[2]; + let column3 = column_values[3]; + let column4 = column_values[4]; + let column5 = column_values[5]; + let column6 = column_values[6]; + let column7 = column_values[7]; + + // Sum constraints. + let mut total_sum = Felt::ZERO; + + let mut value = (column0 - oods_values[0]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[0] * value; + + value = (column0 - oods_values[1]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); + total_sum = total_sum + constraint_coefficients[1] * value; + + value = (column0 - oods_values[2]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow5 * oods_point)); + total_sum = total_sum + constraint_coefficients[2] * value; + + value = (column0 - oods_values[3]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow6 * oods_point)); + total_sum = total_sum + constraint_coefficients[3] * value; + + value = (column0 - oods_values[4]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow7 * oods_point)); + total_sum = total_sum + constraint_coefficients[4] * value; + + value = (column0 - oods_values[5]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow8 * oods_point)); + total_sum = total_sum + constraint_coefficients[5] * value; + + value = (column0 - oods_values[6]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow9 * oods_point)); + total_sum = total_sum + constraint_coefficients[6] * value; + + value = (column0 - oods_values[7]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow10 * oods_point)); + total_sum = total_sum + constraint_coefficients[7] * value; + + value = (column0 - oods_values[8]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow11 * oods_point)); + total_sum = total_sum + constraint_coefficients[8] * value; + + value = (column0 - oods_values[9]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow13 * oods_point)); + total_sum = total_sum + constraint_coefficients[9] * value; + + value = (column0 - oods_values[10]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow14 * oods_point)); + total_sum = total_sum + constraint_coefficients[10] * value; + + value = (column0 - oods_values[11]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow15 * oods_point)); + total_sum = total_sum + constraint_coefficients[11] * value; + + value = (column0 - oods_values[12]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow16 * oods_point)); + total_sum = total_sum + constraint_coefficients[12] * value; + + value = (column0 - oods_values[13]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow17 * oods_point)); + total_sum = total_sum + constraint_coefficients[13] * value; + + value = (column0 - oods_values[14]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow18 * oods_point)); + total_sum = total_sum + constraint_coefficients[14] * value; + + value = (column0 - oods_values[15]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow19 * oods_point)); + total_sum = total_sum + constraint_coefficients[15] * value; + + value = (column1 - oods_values[16]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[16] * value; + + value = (column1 - oods_values[17]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); + total_sum = total_sum + constraint_coefficients[17] * value; + + value = (column1 - oods_values[18]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow5 * oods_point)); + total_sum = total_sum + constraint_coefficients[18] * value; + + value = (column1 - oods_values[19]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow6 * oods_point)); + total_sum = total_sum + constraint_coefficients[19] * value; + + value = (column1 - oods_values[20]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow7 * oods_point)); + total_sum = total_sum + constraint_coefficients[20] * value; + + value = (column1 - oods_values[21]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow8 * oods_point)); + total_sum = total_sum + constraint_coefficients[21] * value; + + value = (column1 - oods_values[22]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow11 * oods_point)); + total_sum = total_sum + constraint_coefficients[22] * value; + + value = (column1 - oods_values[23]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow13 * oods_point)); + total_sum = total_sum + constraint_coefficients[23] * value; + + value = (column1 - oods_values[24]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow14 * oods_point)); + total_sum = total_sum + constraint_coefficients[24] * value; + + value = (column1 - oods_values[25]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow15 * oods_point)); + total_sum = total_sum + constraint_coefficients[25] * value; + + value = (column1 - oods_values[26]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow16 * oods_point)); + total_sum = total_sum + constraint_coefficients[26] * value; + + value = (column1 - oods_values[27]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow17 * oods_point)); + total_sum = total_sum + constraint_coefficients[27] * value; + + value = (column1 - oods_values[28]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow20 * oods_point)); + total_sum = total_sum + constraint_coefficients[28] * value; + + value = (column1 - oods_values[29]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow35 * oods_point)); + total_sum = total_sum + constraint_coefficients[29] * value; + + value = (column1 - oods_values[30]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow36 * oods_point)); + total_sum = total_sum + constraint_coefficients[30] * value; + + value = (column1 - oods_values[31]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow50 * oods_point)); + total_sum = total_sum + constraint_coefficients[31] * value; + + value = (column1 - oods_values[32]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow51 * oods_point)); + total_sum = total_sum + constraint_coefficients[32] * value; + + value = (column1 - oods_values[33]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow57 * oods_point)); + total_sum = total_sum + constraint_coefficients[33] * value; + + value = (column1 - oods_values[34]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow62 * oods_point)); + total_sum = total_sum + constraint_coefficients[34] * value; + + value = (column1 - oods_values[35]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow63 * oods_point)); + total_sum = total_sum + constraint_coefficients[35] * value; + + value = (column1 - oods_values[36]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow65 * oods_point)); + total_sum = total_sum + constraint_coefficients[36] * value; + + value = (column1 - oods_values[37]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow75 * oods_point)); + total_sum = total_sum + constraint_coefficients[37] * value; + + value = (column1 - oods_values[38]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow76 * oods_point)); + total_sum = total_sum + constraint_coefficients[38] * value; + + value = (column1 - oods_values[39]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow79 * oods_point)); + total_sum = total_sum + constraint_coefficients[39] * value; + + value = (column1 - oods_values[40]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow80 * oods_point)); + total_sum = total_sum + constraint_coefficients[40] * value; + + value = (column1 - oods_values[41]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow86 * oods_point)); + total_sum = total_sum + constraint_coefficients[41] * value; + + value = (column1 - oods_values[42]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow87 * oods_point)); + total_sum = total_sum + constraint_coefficients[42] * value; + + value = (column1 - oods_values[43]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow115 * oods_point)); + total_sum = total_sum + constraint_coefficients[43] * value; + + value = (column1 - oods_values[44]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow88 * oods_point)); + total_sum = total_sum + constraint_coefficients[44] * value; + + value = (column1 - oods_values[45]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow92 * oods_point)); + total_sum = total_sum + constraint_coefficients[45] * value; + + value = (column1 - oods_values[46]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow93 * oods_point)); + total_sum = total_sum + constraint_coefficients[46] * value; + + value = (column1 - oods_values[47]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow109 * oods_point)); + total_sum = total_sum + constraint_coefficients[47] * value; + + value = (column1 - oods_values[48]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow113 * oods_point)); + total_sum = total_sum + constraint_coefficients[48] * value; + + value = (column1 - oods_values[49]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow110 * oods_point)); + total_sum = total_sum + constraint_coefficients[49] * value; + + value = (column1 - oods_values[50]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow114 * oods_point)); + total_sum = total_sum + constraint_coefficients[50] * value; + + value = (column1 - oods_values[51]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow111 * oods_point)); + total_sum = total_sum + constraint_coefficients[51] * value; + + value = (column1 - oods_values[52]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow116 * oods_point)); + total_sum = total_sum + constraint_coefficients[52] * value; + + value = (column1 - oods_values[53]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow122 * oods_point)); + total_sum = total_sum + constraint_coefficients[53] * value; + + value = (column1 - oods_values[54]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow127 * oods_point)); + total_sum = total_sum + constraint_coefficients[54] * value; + + value = (column1 - oods_values[55]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow131 * oods_point)); + total_sum = total_sum + constraint_coefficients[55] * value; + + value = (column1 - oods_values[56]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow132 * oods_point)); + total_sum = total_sum + constraint_coefficients[56] * value; + + value = (column1 - oods_values[57]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow133 * oods_point)); + total_sum = total_sum + constraint_coefficients[57] * value; + + value = (column2 - oods_values[58]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[58] * value; + + value = (column2 - oods_values[59]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); + total_sum = total_sum + constraint_coefficients[59] * value; + + value = (column2 - oods_values[60]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow5 * oods_point)); + total_sum = total_sum + constraint_coefficients[60] * value; + + value = (column2 - oods_values[61]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow6 * oods_point)); + total_sum = total_sum + constraint_coefficients[61] * value; + + value = (column3 - oods_values[62]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[62] * value; + + value = (column3 - oods_values[63]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); + total_sum = total_sum + constraint_coefficients[63] * value; + + value = (column3 - oods_values[64]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow5 * oods_point)); + total_sum = total_sum + constraint_coefficients[64] * value; + + value = (column3 - oods_values[65]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow6 * oods_point)); + total_sum = total_sum + constraint_coefficients[65] * value; + + value = (column3 - oods_values[66]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow7 * oods_point)); + total_sum = total_sum + constraint_coefficients[66] * value; + + value = (column3 - oods_values[67]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow11 * oods_point)); + total_sum = total_sum + constraint_coefficients[67] * value; + + value = (column3 - oods_values[68]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow16 * oods_point)); + total_sum = total_sum + constraint_coefficients[68] * value; + + value = (column3 - oods_values[69]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow20 * oods_point)); + total_sum = total_sum + constraint_coefficients[69] * value; + + value = (column3 - oods_values[70]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow22 * oods_point)); + total_sum = total_sum + constraint_coefficients[70] * value; + + value = (column3 - oods_values[71]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow24 * oods_point)); + total_sum = total_sum + constraint_coefficients[71] * value; + + value = (column3 - oods_values[72]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow26 * oods_point)); + total_sum = total_sum + constraint_coefficients[72] * value; + + value = (column3 - oods_values[73]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow28 * oods_point)); + total_sum = total_sum + constraint_coefficients[73] * value; + + value = (column3 - oods_values[74]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow31 * oods_point)); + total_sum = total_sum + constraint_coefficients[74] * value; + + value = (column3 - oods_values[75]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow33 * oods_point)); + total_sum = total_sum + constraint_coefficients[75] * value; + + value = (column3 - oods_values[76]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow37 * oods_point)); + total_sum = total_sum + constraint_coefficients[76] * value; + + value = (column3 - oods_values[77]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow39 * oods_point)); + total_sum = total_sum + constraint_coefficients[77] * value; + + value = (column3 - oods_values[78]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow41 * oods_point)); + total_sum = total_sum + constraint_coefficients[78] * value; + + value = (column3 - oods_values[79]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow43 * oods_point)); + total_sum = total_sum + constraint_coefficients[79] * value; + + value = (column3 - oods_values[80]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow45 * oods_point)); + total_sum = total_sum + constraint_coefficients[80] * value; + + value = (column3 - oods_values[81]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow46 * oods_point)); + total_sum = total_sum + constraint_coefficients[81] * value; + + value = (column3 - oods_values[82]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow48 * oods_point)); + total_sum = total_sum + constraint_coefficients[82] * value; + + value = (column3 - oods_values[83]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow59 * oods_point)); + total_sum = total_sum + constraint_coefficients[83] * value; + + value = (column3 - oods_values[84]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow60 * oods_point)); + total_sum = total_sum + constraint_coefficients[84] * value; + + value = (column3 - oods_values[85]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow68 * oods_point)); + total_sum = total_sum + constraint_coefficients[85] * value; + + value = (column3 - oods_values[86]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow69 * oods_point)); + total_sum = total_sum + constraint_coefficients[86] * value; + + value = (column3 - oods_values[87]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow70 * oods_point)); + total_sum = total_sum + constraint_coefficients[87] * value; + + value = (column3 - oods_values[88]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow71 * oods_point)); + total_sum = total_sum + constraint_coefficients[88] * value; + + value = (column3 - oods_values[89]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); + total_sum = total_sum + constraint_coefficients[89] * value; + + value = (column3 - oods_values[90]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); + total_sum = total_sum + constraint_coefficients[90] * value; + + value = (column3 - oods_values[91]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow82 * oods_point)); + total_sum = total_sum + constraint_coefficients[91] * value; + + value = (column3 - oods_values[92]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow83 * oods_point)); + total_sum = total_sum + constraint_coefficients[92] * value; + + value = (column3 - oods_values[93]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow84 * oods_point)); + total_sum = total_sum + constraint_coefficients[93] * value; + + value = (column3 - oods_values[94]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow85 * oods_point)); + total_sum = total_sum + constraint_coefficients[94] * value; + + value = (column4 - oods_values[95]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[95] * value; + + value = (column4 - oods_values[96]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); + total_sum = total_sum + constraint_coefficients[96] * value; + + value = (column4 - oods_values[97]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow5 * oods_point)); + total_sum = total_sum + constraint_coefficients[97] * value; + + value = (column4 - oods_values[98]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow6 * oods_point)); + total_sum = total_sum + constraint_coefficients[98] * value; + + value = (column4 - oods_values[99]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow7 * oods_point)); + total_sum = total_sum + constraint_coefficients[99] * value; + + value = (column4 - oods_values[100]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow8 * oods_point)); + total_sum = total_sum + constraint_coefficients[100] * value; + + value = (column4 - oods_values[101]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow9 * oods_point)); + total_sum = total_sum + constraint_coefficients[101] * value; + + value = (column4 - oods_values[102]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow10 * oods_point)); + total_sum = total_sum + constraint_coefficients[102] * value; + + value = (column4 - oods_values[103]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow11 * oods_point)); + total_sum = total_sum + constraint_coefficients[103] * value; + + value = (column4 - oods_values[104]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow13 * oods_point)); + total_sum = total_sum + constraint_coefficients[104] * value; + + value = (column4 - oods_values[105]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow15 * oods_point)); + total_sum = total_sum + constraint_coefficients[105] * value; + + value = (column4 - oods_values[106]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow16 * oods_point)); + total_sum = total_sum + constraint_coefficients[106] * value; + + value = (column4 - oods_values[107]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow17 * oods_point)); + total_sum = total_sum + constraint_coefficients[107] * value; + + value = (column4 - oods_values[108]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow37 * oods_point)); + total_sum = total_sum + constraint_coefficients[108] * value; + + value = (column4 - oods_values[109]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow52 * oods_point)); + total_sum = total_sum + constraint_coefficients[109] * value; + + value = (column4 - oods_values[110]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow58 * oods_point)); + total_sum = total_sum + constraint_coefficients[110] * value; + + value = (column4 - oods_values[111]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow66 * oods_point)); + total_sum = total_sum + constraint_coefficients[111] * value; + + value = (column4 - oods_values[112]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow67 * oods_point)); + total_sum = total_sum + constraint_coefficients[112] * value; + + value = (column4 - oods_values[113]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow78 * oods_point)); + total_sum = total_sum + constraint_coefficients[113] * value; + + value = (column4 - oods_values[114]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow81 * oods_point)); + total_sum = total_sum + constraint_coefficients[114] * value; + + value = (column4 - oods_values[115]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); + total_sum = total_sum + constraint_coefficients[115] * value; + + value = (column4 - oods_values[116]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow12 * oods_point)); + total_sum = total_sum + constraint_coefficients[116] * value; + + value = (column4 - oods_values[117]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow30 * oods_point)); + total_sum = total_sum + constraint_coefficients[117] * value; + + value = (column4 - oods_values[118]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow112 * oods_point)); + total_sum = total_sum + constraint_coefficients[118] * value; + + value = (column4 - oods_values[119]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow2 * oods_point)); + total_sum = total_sum + constraint_coefficients[119] * value; + + value = (column4 - oods_values[120]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow123 * oods_point)); + total_sum = total_sum + constraint_coefficients[120] * value; + + value = (column4 - oods_values[121]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow124 * oods_point)); + total_sum = total_sum + constraint_coefficients[121] * value; + + value = (column4 - oods_values[122]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow125 * oods_point)); + total_sum = total_sum + constraint_coefficients[122] * value; + + value = (column4 - oods_values[123]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow126 * oods_point)); + total_sum = total_sum + constraint_coefficients[123] * value; + + value = (column4 - oods_values[124]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow128 * oods_point)); + total_sum = total_sum + constraint_coefficients[124] * value; + + value = (column4 - oods_values[125]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow129 * oods_point)); + total_sum = total_sum + constraint_coefficients[125] * value; + + value = (column4 - oods_values[126]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow130 * oods_point)); + total_sum = total_sum + constraint_coefficients[126] * value; + + value = (column4 - oods_values[127]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow1 * oods_point)); + total_sum = total_sum + constraint_coefficients[127] * value; + + value = (column5 - oods_values[128]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[128] * value; + + value = (column5 - oods_values[129]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); + total_sum = total_sum + constraint_coefficients[129] * value; + + value = (column5 - oods_values[130]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow5 * oods_point)); + total_sum = total_sum + constraint_coefficients[130] * value; + + value = (column5 - oods_values[131]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow7 * oods_point)); + total_sum = total_sum + constraint_coefficients[131] * value; + + value = (column5 - oods_values[132]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow9 * oods_point)); + total_sum = total_sum + constraint_coefficients[132] * value; + + value = (column5 - oods_values[133]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow11 * oods_point)); + total_sum = total_sum + constraint_coefficients[133] * value; + + value = (column5 - oods_values[134]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow13 * oods_point)); + total_sum = total_sum + constraint_coefficients[134] * value; + + value = (column5 - oods_values[135]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow14 * oods_point)); + total_sum = total_sum + constraint_coefficients[135] * value; + + value = (column5 - oods_values[136]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow16 * oods_point)); + total_sum = total_sum + constraint_coefficients[136] * value; + + value = (column5 - oods_values[137]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow18 * oods_point)); + total_sum = total_sum + constraint_coefficients[137] * value; + + value = (column5 - oods_values[138]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow20 * oods_point)); + total_sum = total_sum + constraint_coefficients[138] * value; + + value = (column5 - oods_values[139]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow21 * oods_point)); + total_sum = total_sum + constraint_coefficients[139] * value; + + value = (column5 - oods_values[140]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow23 * oods_point)); + total_sum = total_sum + constraint_coefficients[140] * value; + + value = (column5 - oods_values[141]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow24 * oods_point)); + total_sum = total_sum + constraint_coefficients[141] * value; + + value = (column5 - oods_values[142]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow25 * oods_point)); + total_sum = total_sum + constraint_coefficients[142] * value; + + value = (column5 - oods_values[143]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow27 * oods_point)); + total_sum = total_sum + constraint_coefficients[143] * value; + + value = (column5 - oods_values[144]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow29 * oods_point)); + total_sum = total_sum + constraint_coefficients[144] * value; + + value = (column5 - oods_values[145]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow32 * oods_point)); + total_sum = total_sum + constraint_coefficients[145] * value; + + value = (column5 - oods_values[146]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow34 * oods_point)); + total_sum = total_sum + constraint_coefficients[146] * value; + + value = (column5 - oods_values[147]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow38 * oods_point)); + total_sum = total_sum + constraint_coefficients[147] * value; + + value = (column5 - oods_values[148]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow40 * oods_point)); + total_sum = total_sum + constraint_coefficients[148] * value; + + value = (column5 - oods_values[149]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow42 * oods_point)); + total_sum = total_sum + constraint_coefficients[149] * value; + + value = (column5 - oods_values[150]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow44 * oods_point)); + total_sum = total_sum + constraint_coefficients[150] * value; + + value = (column5 - oods_values[151]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow47 * oods_point)); + total_sum = total_sum + constraint_coefficients[151] * value; + + value = (column5 - oods_values[152]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow49 * oods_point)); + total_sum = total_sum + constraint_coefficients[152] * value; + + value = (column5 - oods_values[153]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow53 * oods_point)); + total_sum = total_sum + constraint_coefficients[153] * value; + + value = (column5 - oods_values[154]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow54 * oods_point)); + total_sum = total_sum + constraint_coefficients[154] * value; + + value = (column5 - oods_values[155]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow55 * oods_point)); + total_sum = total_sum + constraint_coefficients[155] * value; + + value = (column5 - oods_values[156]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow56 * oods_point)); + total_sum = total_sum + constraint_coefficients[156] * value; + + value = (column5 - oods_values[157]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow61 * oods_point)); + total_sum = total_sum + constraint_coefficients[157] * value; + + value = (column5 - oods_values[158]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow64 * oods_point)); + total_sum = total_sum + constraint_coefficients[158] * value; + + value = (column5 - oods_values[159]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow74 * oods_point)); + total_sum = total_sum + constraint_coefficients[159] * value; + + value = (column5 - oods_values[160]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow77 * oods_point)); + total_sum = total_sum + constraint_coefficients[160] * value; + + value = (column5 - oods_values[161]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow89 * oods_point)); + total_sum = total_sum + constraint_coefficients[161] * value; + + value = (column5 - oods_values[162]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow90 * oods_point)); + total_sum = total_sum + constraint_coefficients[162] * value; + + value = (column5 - oods_values[163]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow91 * oods_point)); + total_sum = total_sum + constraint_coefficients[163] * value; + + value = (column5 - oods_values[164]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow94 * oods_point)); + total_sum = total_sum + constraint_coefficients[164] * value; + + value = (column5 - oods_values[165]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow95 * oods_point)); + total_sum = total_sum + constraint_coefficients[165] * value; + + value = (column5 - oods_values[166]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow96 * oods_point)); + total_sum = total_sum + constraint_coefficients[166] * value; + + value = (column5 - oods_values[167]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow97 * oods_point)); + total_sum = total_sum + constraint_coefficients[167] * value; + + value = (column5 - oods_values[168]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow98 * oods_point)); + total_sum = total_sum + constraint_coefficients[168] * value; + + value = (column5 - oods_values[169]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow99 * oods_point)); + total_sum = total_sum + constraint_coefficients[169] * value; + + value = (column5 - oods_values[170]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow100 * oods_point)); + total_sum = total_sum + constraint_coefficients[170] * value; + + value = (column5 - oods_values[171]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow101 * oods_point)); + total_sum = total_sum + constraint_coefficients[171] * value; + + value = (column5 - oods_values[172]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow102 * oods_point)); + total_sum = total_sum + constraint_coefficients[172] * value; + + value = (column5 - oods_values[173]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow104 * oods_point)); + total_sum = total_sum + constraint_coefficients[173] * value; + + value = (column5 - oods_values[174]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow106 * oods_point)); + total_sum = total_sum + constraint_coefficients[174] * value; + + value = (column5 - oods_values[175]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow103 * oods_point)); + total_sum = total_sum + constraint_coefficients[175] * value; + + value = (column5 - oods_values[176]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow105 * oods_point)); + total_sum = total_sum + constraint_coefficients[176] * value; + + value = (column5 - oods_values[177]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow107 * oods_point)); + total_sum = total_sum + constraint_coefficients[177] * value; + + value = (column5 - oods_values[178]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow108 * oods_point)); + total_sum = total_sum + constraint_coefficients[178] * value; + + value = (column5 - oods_values[179]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow117 * oods_point)); + total_sum = total_sum + constraint_coefficients[179] * value; + + value = (column5 - oods_values[180]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow118 * oods_point)); + total_sum = total_sum + constraint_coefficients[180] * value; + + value = (column5 - oods_values[181]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow119 * oods_point)); + total_sum = total_sum + constraint_coefficients[181] * value; + + value = (column5 - oods_values[182]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow120 * oods_point)); + total_sum = total_sum + constraint_coefficients[182] * value; + + value = (column5 - oods_values[183]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow121 * oods_point)); + total_sum = total_sum + constraint_coefficients[183] * value; + + value = (column6 - oods_values[184]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[184] * value; + + value = (column6 - oods_values[185]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); + total_sum = total_sum + constraint_coefficients[185] * value; + + value = (column6 - oods_values[186]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow5 * oods_point)); + total_sum = total_sum + constraint_coefficients[186] * value; + + value = (column6 - oods_values[187]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow6 * oods_point)); + total_sum = total_sum + constraint_coefficients[187] * value; + + value = (column7 - oods_values[188]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); + total_sum = total_sum + constraint_coefficients[188] * value; + + value = (column7 - oods_values[189]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); + total_sum = total_sum + constraint_coefficients[189] * value; + + value = (column7 - oods_values[190]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow5 * oods_point)); + total_sum = total_sum + constraint_coefficients[190] * value; + + value = (column7 - oods_values[191]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - pow8 * oods_point)); + total_sum = total_sum + constraint_coefficients[191] * value; + + // Sum the OODS boundary constraints on the composition polynomials. + let oods_point_to_deg = oods_point.pow(CONSTRAINT_DEGREE); + + value = (column_values[(NUM_COLUMNS_FIRST + NUM_COLUMNS_SECOND) as usize] - oods_values[192]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - oods_point_to_deg)); + total_sum += constraint_coefficients[192] * value; + + value = (column_values[(NUM_COLUMNS_FIRST + NUM_COLUMNS_SECOND + 1) as usize] + - oods_values[193]) + .field_div(&NonZeroFelt::from_felt_unchecked(point - oods_point_to_deg)); + total_sum += constraint_coefficients[193] * value; + + total_sum +} diff --git a/crates/air/src/layout/recursive_with_poseidon/global_values.rs b/crates/air/src/layout/recursive_with_poseidon/global_values.rs new file mode 100644 index 0000000..7ac7259 --- /dev/null +++ b/crates/air/src/layout/recursive_with_poseidon/global_values.rs @@ -0,0 +1,120 @@ +use cairovm_verifier_transcript::transcript::Transcript; +use serde::{Deserialize, Serialize}; +use serde_with::serde_as; +use starknet_core::serde::unsigned_field_element::UfeHex; +use starknet_crypto::Felt; + +#[serde_as] +#[derive(Debug, PartialEq, Serialize, Deserialize)] +pub struct EcPoint { + #[serde_as(as = "UfeHex")] + pub x: Felt, + #[serde_as(as = "UfeHex")] + pub y: Felt, +} + +// Accumulation of member expressions for auto generated composition polynomial code. +#[serde_as] +#[derive(Debug, PartialEq, Serialize, Deserialize)] +pub struct GlobalValues { + // Public input. + #[serde_as(as = "UfeHex")] + pub trace_length: Felt, + #[serde_as(as = "UfeHex")] + pub initial_pc: Felt, + #[serde_as(as = "UfeHex")] + pub final_pc: Felt, + #[serde_as(as = "UfeHex")] + pub initial_ap: Felt, + #[serde_as(as = "UfeHex")] + pub final_ap: Felt, + #[serde_as(as = "UfeHex")] + pub initial_pedersen_addr: Felt, + #[serde_as(as = "UfeHex")] + pub initial_range_check_addr: Felt, + #[serde_as(as = "UfeHex")] + pub initial_bitwise_addr: Felt, + #[serde_as(as = "UfeHex")] + pub initial_poseidon_addr: Felt, + #[serde_as(as = "UfeHex")] + pub range_check_min: Felt, + #[serde_as(as = "UfeHex")] + pub range_check_max: Felt, + // Constants. + #[serde_as(as = "UfeHex")] + pub offset_size: Felt, + #[serde_as(as = "UfeHex")] + pub half_offset_size: Felt, + pub pedersen_shift_point: EcPoint, + // Periodic columns. + #[serde_as(as = "UfeHex")] + pub pedersen_points_x: Felt, + #[serde_as(as = "UfeHex")] + pub pedersen_points_y: Felt, + #[serde_as(as = "UfeHex")] + pub poseidon_poseidon_full_round_key0: Felt, + #[serde_as(as = "UfeHex")] + pub poseidon_poseidon_full_round_key1: Felt, + #[serde_as(as = "UfeHex")] + pub poseidon_poseidon_full_round_key2: Felt, + #[serde_as(as = "UfeHex")] + pub poseidon_poseidon_partial_round_key0: Felt, + #[serde_as(as = "UfeHex")] + pub poseidon_poseidon_partial_round_key1: Felt, + // Interaction elements. + #[serde_as(as = "UfeHex")] + pub memory_multi_column_perm_perm_interaction_elm: Felt, + #[serde_as(as = "UfeHex")] + pub memory_multi_column_perm_hash_interaction_elm0: Felt, + #[serde_as(as = "UfeHex")] + pub range_check16_perm_interaction_elm: Felt, + #[serde_as(as = "UfeHex")] + pub diluted_check_permutation_interaction_elm: Felt, + #[serde_as(as = "UfeHex")] + pub diluted_check_interaction_z: Felt, + #[serde_as(as = "UfeHex")] + pub diluted_check_interaction_alpha: Felt, + // Permutation products. + #[serde_as(as = "UfeHex")] + pub memory_multi_column_perm_perm_public_memory_prod: Felt, + #[serde_as(as = "UfeHex")] + pub range_check16_perm_public_memory_prod: Felt, + #[serde_as(as = "UfeHex")] + pub diluted_check_first_elm: Felt, + #[serde_as(as = "UfeHex")] + pub diluted_check_permutation_public_memory_prod: Felt, + #[serde_as(as = "UfeHex")] + pub diluted_check_final_cum_val: Felt, +} + +// Elements that are sent from the prover after the commitment on the original trace. +// Used for components after the first interaction, e.g., memory and range check. +#[serde_as] +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct InteractionElements { + #[serde_as(as = "UfeHex")] + pub memory_multi_column_perm_perm_interaction_elm: Felt, + #[serde_as(as = "UfeHex")] + pub memory_multi_column_perm_hash_interaction_elm0: Felt, + #[serde_as(as = "UfeHex")] + pub range_check16_perm_interaction_elm: Felt, + #[serde_as(as = "UfeHex")] + pub diluted_check_permutation_interaction_elm: Felt, + #[serde_as(as = "UfeHex")] + pub diluted_check_interaction_z: Felt, + #[serde_as(as = "UfeHex")] + pub diluted_check_interaction_alpha: Felt, +} + +impl InteractionElements { + pub fn new(transcript: &mut Transcript) -> Self { + Self { + memory_multi_column_perm_perm_interaction_elm: transcript.random_felt_to_prover(), + memory_multi_column_perm_hash_interaction_elm0: transcript.random_felt_to_prover(), + range_check16_perm_interaction_elm: transcript.random_felt_to_prover(), + diluted_check_permutation_interaction_elm: transcript.random_felt_to_prover(), + diluted_check_interaction_z: transcript.random_felt_to_prover(), + diluted_check_interaction_alpha: transcript.random_felt_to_prover(), + } + } +} diff --git a/crates/air/src/layout/recursive_with_poseidon/mod.rs b/crates/air/src/layout/recursive_with_poseidon/mod.rs new file mode 100644 index 0000000..4afeb37 --- /dev/null +++ b/crates/air/src/layout/recursive_with_poseidon/mod.rs @@ -0,0 +1,444 @@ +pub mod autogenerated; +pub mod global_values; + +use crate::{ + diluted::get_diluted_product, + periodic_columns::{ + eval_pedersen_x, eval_pedersen_y, eval_poseidon_poseidon_full_round_key0, + eval_poseidon_poseidon_full_round_key1, eval_poseidon_poseidon_full_round_key2, + eval_poseidon_poseidon_partial_round_key0, eval_poseidon_poseidon_partial_round_key1, + }, + public_memory::{PublicInput, INITIAL_PC, MAX_ADDRESS, MAX_LOG_N_STEPS, MAX_RANGE_CHECK}, +}; +use bail_out::ensure; +use cairovm_verifier_commitment::table::{commit::table_commit, decommit::table_decommit}; +use global_values::{EcPoint, GlobalValues, InteractionElements}; +use starknet_core::types::NonZeroFelt; +use starknet_crypto::{poseidon_hash_many, Felt}; + +use super::{CompositionPolyEvalError, LayoutTrait, PublicInputError}; + +// Recursive with poseidon layout +pub const BITWISE_RATIO: u32 = 16; +pub const BITWISE_ROW_RATIO: u32 = 256; +pub const BITWISE_TOTAL_N_BITS: u32 = 251; +pub const CONSTRAINT_DEGREE: u32 = 2; +pub const CPU_COMPONENT_HEIGHT: u32 = 16; +pub const CPU_COMPONENT_STEP: u32 = 1; +pub const DILUTED_N_BITS: u32 = 16; +pub const DILUTED_SPACING: u32 = 4; +pub const HAS_BITWISE_BUILTIN: u32 = 1; +pub const HAS_DILUTED_POOL: u32 = 1; +pub const HAS_EC_OP_BUILTIN: u32 = 0; +pub const HAS_ECDSA_BUILTIN: u32 = 0; +pub const HAS_KECCAK_BUILTIN: u32 = 0; +pub const HAS_OUTPUT_BUILTIN: u32 = 1; +pub const HAS_PEDERSEN_BUILTIN: u32 = 1; +pub const HAS_POSEIDON_BUILTIN: u32 = 1; +pub const HAS_RANGE_CHECK_BUILTIN: u32 = 1; +pub const HAS_RANGE_CHECK96_BUILTIN: u32 = 0; +pub const IS_DYNAMIC_AIR: u32 = 0; +pub const LAYOUT_CODE: Felt = + Felt::from_hex_unchecked("0x7265637572736976655f776974685f706f736569646f6e"); +pub const LOG_CPU_COMPONENT_HEIGHT: u32 = 4; +pub const MASK_SIZE: u32 = 192; +pub const N_CONSTRAINTS: u32 = 124; +pub const N_DYNAMIC_PARAMS: u32 = 0; +pub const NUM_COLUMNS_FIRST: u32 = 6; +pub const NUM_COLUMNS_SECOND: u32 = 2; +pub const PEDERSEN_BUILTIN_RATIO: u32 = 256; +pub const PEDERSEN_BUILTIN_REPETITIONS: u32 = 1; +pub const PEDERSEN_BUILTIN_ROW_RATIO: u32 = 4096; +pub const POSEIDON_M: u32 = 3; +pub const POSEIDON_RATIO: u32 = 64; +pub const POSEIDON_ROUNDS_FULL: u32 = 8; +pub const POSEIDON_ROUNDS_PARTIAL: u32 = 83; +pub const POSEIDON_ROW_RATIO: u32 = 1024; +pub const PUBLIC_MEMORY_STEP: u32 = 16; +pub const RANGE_CHECK_BUILTIN_RATIO: u32 = 16; +pub const RANGE_CHECK_BUILTIN_ROW_RATIO: u32 = 256; +pub const RANGE_CHECK_N_PARTS: u32 = 8; + +pub mod segments { + pub const BITWISE: usize = 5; + pub const N_SEGMENTS: usize = 7; + pub const PEDERSEN: usize = 3; + pub const POSEIDON: usize = 6; + pub const RANGE_CHECK: usize = 4; +} + +pub mod builtins { + use starknet_crypto::Felt; + + pub const OUTPUT: Felt = Felt::from_hex_unchecked("0x6F7574707574"); + pub const PEDERSEN: Felt = Felt::from_hex_unchecked("0x706564657273656E"); + pub const RANGE_CHECK: Felt = Felt::from_hex_unchecked("0x72616E67655F636865636B"); + pub const BITWISE: Felt = Felt::from_hex_unchecked("0x62697477697365"); + pub const POSEIDON: Felt = Felt::from_hex_unchecked("0x706F736569646F6E"); +} + +// Pedersen builtin +pub const SHIFT_POINT_X: Felt = + Felt::from_hex_unchecked("0x49ee3eba8c1600700ee1b87eb599f16716b0b1022947733551fde4050ca6804"); +pub const SHIFT_POINT_Y: Felt = + Felt::from_hex_unchecked("0x3ca0cfe4b3bc6ddf346d49d06ea0ed34e621062c0e056c1d0405d266e10268a"); + +pub const BUILTINS: [Felt; 5] = [ + builtins::OUTPUT, + builtins::PEDERSEN, + builtins::RANGE_CHECK, + builtins::BITWISE, + builtins::POSEIDON, +]; + +pub struct RecursiveLayout {} + +impl LayoutTrait for RecursiveLayout { + type InteractionElements = InteractionElements; + fn eval_composition_polynomial( + interaction_elements: &Self::InteractionElements, + public_input: &PublicInput, + mask_values: &[Felt], + constraint_coefficients: &[Felt], + point: &Felt, + trace_domain_size: &Felt, + trace_generator: &Felt, + ) -> Result { + let memory_z = interaction_elements.memory_multi_column_perm_perm_interaction_elm; + let memory_alpha = interaction_elements.memory_multi_column_perm_hash_interaction_elm0; + + // Public memory + let public_memory_column_size = trace_domain_size + .field_div(&NonZeroFelt::from_felt_unchecked(Felt::from(PUBLIC_MEMORY_STEP))); + assert!(public_memory_column_size < u128::MAX.into()); + let public_memory_prod_ratio = public_input.get_public_memory_product_ratio( + memory_z, + memory_alpha, + public_memory_column_size, + ); + + // Diluted + let diluted_z = interaction_elements.diluted_check_interaction_z; + let diluted_alpha = interaction_elements.diluted_check_interaction_alpha; + let diluted_prod = get_diluted_product( + DILUTED_N_BITS.into(), + DILUTED_SPACING.into(), + diluted_z, + diluted_alpha, + ); + + // Periodic columns + let n_steps = Felt::TWO.pow_felt(&public_input.log_n_steps); + let n_pedersen_hash_copies = n_steps.field_div(&NonZeroFelt::from_felt_unchecked( + Felt::from(PEDERSEN_BUILTIN_RATIO * PEDERSEN_BUILTIN_REPETITIONS), + )); + assert!(n_pedersen_hash_copies < u128::MAX.into()); + let pedersen_point = point.pow_felt(&n_pedersen_hash_copies); + let pedersen_points_x = eval_pedersen_x(pedersen_point); + let pedersen_points_y = eval_pedersen_y(pedersen_point); + + let n_poseidon_copies = + n_steps.field_div(&NonZeroFelt::from_felt_unchecked(Felt::from(POSEIDON_RATIO))); + assert!(n_pedersen_hash_copies < u128::MAX.into()); + let poseidon_point = point.pow_felt(&n_poseidon_copies); + let poseidon_poseidon_full_round_key0 = + eval_poseidon_poseidon_full_round_key0(poseidon_point); + let poseidon_poseidon_full_round_key1 = + eval_poseidon_poseidon_full_round_key1(poseidon_point); + let poseidon_poseidon_full_round_key2 = + eval_poseidon_poseidon_full_round_key2(poseidon_point); + let poseidon_poseidon_partial_round_key0 = + eval_poseidon_poseidon_partial_round_key0(poseidon_point); + let poseidon_poseidon_partial_round_key1 = + eval_poseidon_poseidon_partial_round_key1(poseidon_point); + + let global_values = GlobalValues { + trace_length: *trace_domain_size, + initial_pc: public_input + .segments + .get(crate::layout::segments::PROGRAM) + .ok_or(CompositionPolyEvalError::SegmentMissing { + segment: crate::layout::segments::PROGRAM, + })? + .begin_addr, + final_pc: public_input + .segments + .get(crate::layout::segments::PROGRAM) + .ok_or(CompositionPolyEvalError::SegmentMissing { + segment: crate::layout::segments::PROGRAM, + })? + .stop_ptr, + initial_ap: public_input + .segments + .get(crate::layout::segments::EXECUTION) + .ok_or(CompositionPolyEvalError::SegmentMissing { + segment: crate::layout::segments::EXECUTION, + })? + .begin_addr, + final_ap: public_input + .segments + .get(crate::layout::segments::EXECUTION) + .ok_or(CompositionPolyEvalError::SegmentMissing { + segment: crate::layout::segments::EXECUTION, + })? + .stop_ptr, + initial_pedersen_addr: public_input + .segments + .get(segments::PEDERSEN) + .ok_or(CompositionPolyEvalError::SegmentMissing { segment: segments::PEDERSEN })? + .begin_addr, + initial_range_check_addr: public_input + .segments + .get(segments::RANGE_CHECK) + .ok_or(CompositionPolyEvalError::SegmentMissing { segment: segments::RANGE_CHECK })? + .begin_addr, + initial_bitwise_addr: public_input + .segments + .get(segments::BITWISE) + .ok_or(CompositionPolyEvalError::SegmentMissing { segment: segments::BITWISE })? + .begin_addr, + initial_poseidon_addr: public_input + .segments + .get(segments::POSEIDON) + .ok_or(CompositionPolyEvalError::SegmentMissing { segment: segments::POSEIDON })? + .begin_addr, + range_check_min: public_input.range_check_min, + range_check_max: public_input.range_check_max, + offset_size: Felt::from(0x10000), // 2**16 + half_offset_size: Felt::from(0x8000), // 2**15 + pedersen_shift_point: EcPoint { x: SHIFT_POINT_X, y: SHIFT_POINT_Y }, + pedersen_points_x, + pedersen_points_y, + poseidon_poseidon_full_round_key0, + poseidon_poseidon_full_round_key1, + poseidon_poseidon_full_round_key2, + poseidon_poseidon_partial_round_key0, + poseidon_poseidon_partial_round_key1, + memory_multi_column_perm_perm_interaction_elm: memory_z, + memory_multi_column_perm_hash_interaction_elm0: memory_alpha, + range_check16_perm_interaction_elm: interaction_elements + .range_check16_perm_interaction_elm, + diluted_check_permutation_interaction_elm: interaction_elements + .diluted_check_permutation_interaction_elm, + diluted_check_interaction_z: diluted_z, + diluted_check_interaction_alpha: diluted_alpha, + memory_multi_column_perm_perm_public_memory_prod: public_memory_prod_ratio, + range_check16_perm_public_memory_prod: Felt::from(1), + diluted_check_first_elm: Felt::from(0), + diluted_check_permutation_public_memory_prod: Felt::from(1), + diluted_check_final_cum_val: diluted_prod, + }; + + Ok(autogenerated::eval_composition_polynomial_inner( + mask_values, + constraint_coefficients, + point, + trace_generator, + &global_values, + )) + } + fn eval_oods_polynomial( + column_values: &[Felt], + oods_values: &[Felt], + constraint_coefficients: &[Felt], + point: &Felt, + oods_point: &Felt, + trace_generator: &Felt, + ) -> Felt { + autogenerated::eval_oods_polynomial_inner( + column_values, + oods_values, + constraint_coefficients, + point, + oods_point, + trace_generator, + ) + } + fn traces_commit( + transcript: &mut cairovm_verifier_transcript::transcript::Transcript, + unsent_commitment: &crate::trace::UnsentCommitment, + config: crate::trace::config::Config, + ) -> crate::trace::Commitment { + // Read original commitment. + let original_commitment = + table_commit(transcript, unsent_commitment.original, config.original); + + // Generate interaction elements for the first interaction. + let interaction_elements = Self::InteractionElements::new(transcript); + + // Read interaction commitment. + let interaction_commitment = + table_commit(transcript, unsent_commitment.interaction, config.interaction); + + crate::trace::Commitment { + original: original_commitment, + interaction_elements, + interaction: interaction_commitment, + } + } + fn traces_decommit( + queries: &[Felt], + commitment: crate::trace::Commitment, + decommitment: crate::trace::Decommitment, + witness: crate::trace::Witness, + ) -> Result<(), crate::trace::decommit::Error> { + Ok(table_decommit(commitment.original, queries, decommitment.original, witness.original) + .and(table_decommit( + commitment.interaction, + queries, + decommitment.interaction, + witness.interaction, + ))?) + } + fn validate_public_input( + public_input: &PublicInput, + stark_domains: &crate::domains::StarkDomains, + ) -> Result<(), PublicInputError> { + ensure!(public_input.log_n_steps < MAX_LOG_N_STEPS, PublicInputError::MaxSteps); + + let n_steps = Felt::TWO.pow_felt(&public_input.log_n_steps); + let trace_length = stark_domains.trace_domain_size; + ensure!( + n_steps * Felt::from(CPU_COMPONENT_HEIGHT) * Felt::from(CPU_COMPONENT_STEP) + == trace_length, + PublicInputError::TraceLengthInvalid + ); + + ensure!(Felt::ZERO <= public_input.range_check_min, PublicInputError::RangeCheckInvalid); + ensure!( + public_input.range_check_min < public_input.range_check_max, + PublicInputError::RangeCheckInvalid + ); + ensure!( + public_input.range_check_max <= MAX_RANGE_CHECK, + PublicInputError::RangeCheckInvalid + ); + + ensure!(public_input.layout == LAYOUT_CODE, PublicInputError::LayoutCodeInvalid); + + let output_uses = public_input + .segments + .get(crate::layout::segments::OUTPUT) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::OUTPUT })? + .stop_ptr + - public_input + .segments + .get(crate::layout::segments::OUTPUT) + .ok_or(PublicInputError::SegmentMissing { + segment: crate::layout::segments::OUTPUT, + })? + .begin_addr; + ensure!(output_uses < u128::MAX.into(), PublicInputError::UsesInvalid); + + let pedersen_copies = trace_length + .field_div(&NonZeroFelt::from_felt_unchecked(Felt::from(PEDERSEN_BUILTIN_ROW_RATIO))); + let pedersen_uses = (public_input + .segments + .get(segments::PEDERSEN) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::OUTPUT })? + .stop_ptr + - public_input + .segments + .get(segments::PEDERSEN) + .ok_or(PublicInputError::SegmentMissing { + segment: crate::layout::segments::OUTPUT, + })? + .begin_addr) + .field_div(&NonZeroFelt::from_felt_unchecked(Felt::THREE)); + ensure!(pedersen_uses < pedersen_copies, PublicInputError::UsesInvalid); + + let range_check_copies = trace_length.field_div(&NonZeroFelt::from_felt_unchecked( + Felt::from(RANGE_CHECK_BUILTIN_ROW_RATIO), + )); + let range_check_uses = public_input + .segments + .get(segments::RANGE_CHECK) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::OUTPUT })? + .stop_ptr + - public_input + .segments + .get(segments::RANGE_CHECK) + .ok_or(PublicInputError::SegmentMissing { + segment: crate::layout::segments::OUTPUT, + })? + .begin_addr; + ensure!(range_check_uses < range_check_copies, PublicInputError::UsesInvalid); + + let bitwise_copies = trace_length + .field_div(&NonZeroFelt::from_felt_unchecked(Felt::from(BITWISE_ROW_RATIO))); + let bitwise_uses = (public_input + .segments + .get(segments::BITWISE) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::OUTPUT })? + .stop_ptr + - public_input + .segments + .get(segments::BITWISE) + .ok_or(PublicInputError::SegmentMissing { + segment: crate::layout::segments::OUTPUT, + })? + .begin_addr) + .field_div(&NonZeroFelt::from_felt_unchecked(Felt::from(0x5))); + ensure!(bitwise_uses < bitwise_copies, PublicInputError::UsesInvalid); + Ok(()) + } + + fn verify_public_input(public_input: &PublicInput) -> Result<(Felt, Felt), PublicInputError> { + let public_segments = &public_input.segments; + + let initial_pc = public_segments + .get(crate::layout::segments::PROGRAM) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::PROGRAM })? + .begin_addr; + let final_pc = public_segments + .get(crate::layout::segments::PROGRAM) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::PROGRAM })? + .stop_ptr; + let initial_ap = public_segments + .get(crate::layout::segments::EXECUTION) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::PROGRAM })? + .begin_addr; + let initial_fp = initial_ap; + let final_ap = public_segments + .get(crate::layout::segments::EXECUTION) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::PROGRAM })? + .stop_ptr; + let output_start = public_segments + .get(crate::layout::segments::OUTPUT) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::PROGRAM })? + .begin_addr; + let output_stop = public_segments + .get(crate::layout::segments::OUTPUT) + .ok_or(PublicInputError::SegmentMissing { segment: crate::layout::segments::PROGRAM })? + .stop_ptr; + + ensure!(initial_ap < MAX_ADDRESS, PublicInputError::MaxSteps); + ensure!(final_ap < MAX_ADDRESS, PublicInputError::MaxSteps); + + // TODO support more pages? + ensure!(public_input.continuous_page_headers.is_empty(), PublicInputError::MaxSteps); + + let memory = &public_input + .main_page + .iter() + .flat_map(|v| vec![v.address, v.value]) + .collect::>(); + + // 1. Program segment + ensure!(initial_pc == INITIAL_PC, PublicInputError::MaxSteps); + ensure!(final_pc == INITIAL_PC + 4, PublicInputError::MaxSteps); + + let program_end_pc = initial_fp - 2; + let program = &memory[initial_pc.to_bigint().try_into().unwrap() + ..program_end_pc.to_bigint().try_into().unwrap()]; + + let program_hash = poseidon_hash_many(program); + + let output_len: usize = (output_stop - output_start).to_bigint().try_into().unwrap(); + // 3. Output segment + let output = &memory[memory.len() - output_len..memory.len()]; + let output_hash = poseidon_hash_many(output); + + Ok((program_hash, output_hash)) + } +} diff --git a/crates/stark/src/tests/proof.rs b/crates/stark/src/tests/proof.rs index a9276ae..8f60c22 100644 --- a/crates/stark/src/tests/proof.rs +++ b/crates/stark/src/tests/proof.rs @@ -17,6 +17,16 @@ fn test_stark_proof_fibonacci_verify() { }; let (program_hash, output_hash) = stark_proof.verify::(security_bits).unwrap(); - assert_eq!(program_hash, Felt::from_hex_unchecked("0x603f45d671891116de1e763d11d71d25102ff93707dafc97a8d06e18145baf5")); - assert_eq!(output_hash, Felt::from_hex_unchecked("0x21e35055ced9a22156eed737abcea133f8406f7f7e78222cf4f0f1271216adb")); + assert_eq!( + program_hash, + Felt::from_hex_unchecked( + "0x603f45d671891116de1e763d11d71d25102ff93707dafc97a8d06e18145baf5" + ) + ); + assert_eq!( + output_hash, + Felt::from_hex_unchecked( + "0x21e35055ced9a22156eed737abcea133f8406f7f7e78222cf4f0f1271216adb" + ) + ); } From cc265cba54b398c323cddb1daa234f566db84947 Mon Sep 17 00:00:00 2001 From: Bartosz Nowak Date: Sat, 13 Jul 2024 19:51:20 +0200 Subject: [PATCH 3/3] clippy fix --- crates/air/src/layout/dex/autogenerated.rs | 758 +++++++++--------- .../recursive_with_poseidon/autogenerated.rs | 632 +++++++-------- 2 files changed, 695 insertions(+), 695 deletions(-) diff --git a/crates/air/src/layout/dex/autogenerated.rs b/crates/air/src/layout/dex/autogenerated.rs index c613a74..9029872 100644 --- a/crates/air/src/layout/dex/autogenerated.rs +++ b/crates/air/src/layout/dex/autogenerated.rs @@ -363,11 +363,11 @@ pub fn eval_composition_polynomial_inner( let mut value = (cpu_decode_opcode_range_check_bit_0 * cpu_decode_opcode_range_check_bit_0 - cpu_decode_opcode_range_check_bit_0) * domain4.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[0] * value; + total_sum += constraint_coefficients[0] * value; // Constraint: cpu/decode/opcode_range_check/zero. value = (column0_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain4)); - total_sum = total_sum + constraint_coefficients[1] * value; + total_sum += constraint_coefficients[1] * value; // Constraint: cpu/decode/opcode_range_check_input. value = (column17_row1 @@ -377,30 +377,30 @@ pub fn eval_composition_polynomial_inner( * global_values.offset_size + column19_row0)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[2] * value; + total_sum += constraint_coefficients[2] * value; // Constraint: cpu/decode/flag_op1_base_op0_bit. value = (cpu_decode_flag_op1_base_op0_0 * cpu_decode_flag_op1_base_op0_0 - cpu_decode_flag_op1_base_op0_0) .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[3] * value; + total_sum += constraint_coefficients[3] * value; // Constraint: cpu/decode/flag_res_op1_bit. value = (cpu_decode_flag_res_op1_0 * cpu_decode_flag_res_op1_0 - cpu_decode_flag_res_op1_0) .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[4] * value; + total_sum += constraint_coefficients[4] * value; // Constraint: cpu/decode/flag_pc_update_regular_bit. value = (cpu_decode_flag_pc_update_regular_0 * cpu_decode_flag_pc_update_regular_0 - cpu_decode_flag_pc_update_regular_0) .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[5] * value; + total_sum += constraint_coefficients[5] * value; // Constraint: cpu/decode/fp_update_regular_bit. value = (cpu_decode_fp_update_regular_0 * cpu_decode_fp_update_regular_0 - cpu_decode_fp_update_regular_0) .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[6] * value; + total_sum += constraint_coefficients[6] * value; // Constraint: cpu/operands/mem_dst_addr. value = (column17_row8 + global_values.half_offset_size @@ -408,7 +408,7 @@ pub fn eval_composition_polynomial_inner( + (Felt::ONE - cpu_decode_opcode_range_check_bit_0) * column19_row1 + column19_row0)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[7] * value; + total_sum += constraint_coefficients[7] * value; // Constraint: cpu/operands/mem0_addr. value = (column17_row4 + global_values.half_offset_size @@ -416,7 +416,7 @@ pub fn eval_composition_polynomial_inner( + (Felt::ONE - cpu_decode_opcode_range_check_bit_1) * column19_row1 + column19_row8)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[8] * value; + total_sum += constraint_coefficients[8] * value; // Constraint: cpu/operands/mem1_addr. value = (column17_row12 + global_values.half_offset_size @@ -426,12 +426,12 @@ pub fn eval_composition_polynomial_inner( + cpu_decode_flag_op1_base_op0_0 * column17_row5 + column19_row4)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[9] * value; + total_sum += constraint_coefficients[9] * value; // Constraint: cpu/operands/ops_mul. value = (column19_row5 - column17_row5 * column17_row13) .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[10] * value; + total_sum += constraint_coefficients[10] * value; // Constraint: cpu/operands/res. value = ((Felt::ONE - cpu_decode_opcode_range_check_bit_9) * column19_row13 @@ -439,17 +439,17 @@ pub fn eval_composition_polynomial_inner( + cpu_decode_opcode_range_check_bit_6 * column19_row5 + cpu_decode_flag_res_op1_0 * column17_row13)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[11] * value; + total_sum += constraint_coefficients[11] * value; // Constraint: cpu/update_registers/update_pc/tmp0. value = (column19_row3 - cpu_decode_opcode_range_check_bit_9 * column17_row9) * domain19.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[12] * value; + total_sum += constraint_coefficients[12] * value; // Constraint: cpu/update_registers/update_pc/tmp1. value = (column19_row11 - column19_row3 * column19_row13) * domain19.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[13] * value; + total_sum += constraint_coefficients[13] * value; // Constraint: cpu/update_registers/update_pc/pc_cond_negative. value = ((Felt::ONE - cpu_decode_opcode_range_check_bit_9) * column17_row16 @@ -458,12 +458,12 @@ pub fn eval_composition_polynomial_inner( + cpu_decode_opcode_range_check_bit_7 * column19_row13 + cpu_decode_opcode_range_check_bit_8 * (column17_row0 + column19_row13))) * domain19.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[14] * value; + total_sum += constraint_coefficients[14] * value; // Constraint: cpu/update_registers/update_pc/pc_cond_positive. value = ((column19_row11 - cpu_decode_opcode_range_check_bit_9) * (column17_row16 - npc_reg_0)) * domain19.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[15] * value; + total_sum += constraint_coefficients[15] * value; // Constraint: cpu/update_registers/update_ap/ap_update. value = (column19_row17 @@ -472,7 +472,7 @@ pub fn eval_composition_polynomial_inner( + cpu_decode_opcode_range_check_bit_11 + cpu_decode_opcode_range_check_bit_12 * Felt::TWO)) * domain19.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[16] * value; + total_sum += constraint_coefficients[16] * value; // Constraint: cpu/update_registers/update_fp/fp_update. value = (column19_row25 @@ -480,49 +480,49 @@ pub fn eval_composition_polynomial_inner( + cpu_decode_opcode_range_check_bit_13 * column17_row9 + cpu_decode_opcode_range_check_bit_12 * (column19_row1 + 2))) * domain19.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[17] * value; + total_sum += constraint_coefficients[17] * value; // Constraint: cpu/opcodes/call/push_fp. value = (cpu_decode_opcode_range_check_bit_12 * (column17_row9 - column19_row9)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[18] * value; + total_sum += constraint_coefficients[18] * value; // Constraint: cpu/opcodes/call/push_pc. value = (cpu_decode_opcode_range_check_bit_12 * (column17_row5 - (column17_row0 + cpu_decode_opcode_range_check_bit_2 + 1))) .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[19] * value; + total_sum += constraint_coefficients[19] * value; // Constraint: cpu/opcodes/call/off0. value = (cpu_decode_opcode_range_check_bit_12 * (column19_row0 - global_values.half_offset_size)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[20] * value; + total_sum += constraint_coefficients[20] * value; // Constraint: cpu/opcodes/call/off1. value = (cpu_decode_opcode_range_check_bit_12 * (column19_row8 - (global_values.half_offset_size + 1))) .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[21] * value; + total_sum += constraint_coefficients[21] * value; // Constraint: cpu/opcodes/call/flags. value = (cpu_decode_opcode_range_check_bit_12 * (cpu_decode_opcode_range_check_bit_12 + cpu_decode_opcode_range_check_bit_12 + 1 + 1 - (cpu_decode_opcode_range_check_bit_0 + cpu_decode_opcode_range_check_bit_1 + 4))) .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[22] * value; + total_sum += constraint_coefficients[22] * value; // Constraint: cpu/opcodes/ret/off0. value = (cpu_decode_opcode_range_check_bit_13 * (column19_row0 + 2 - global_values.half_offset_size)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[23] * value; + total_sum += constraint_coefficients[23] * value; // Constraint: cpu/opcodes/ret/off2. value = (cpu_decode_opcode_range_check_bit_13 * (column19_row4 + 1 - global_values.half_offset_size)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[24] * value; + total_sum += constraint_coefficients[24] * value; // Constraint: cpu/opcodes/ret/flags. value = (cpu_decode_opcode_range_check_bit_13 @@ -532,42 +532,42 @@ pub fn eval_composition_polynomial_inner( + cpu_decode_flag_res_op1_0 - 4)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[25] * value; + total_sum += constraint_coefficients[25] * value; // Constraint: cpu/opcodes/assert_eq/assert_eq. value = (cpu_decode_opcode_range_check_bit_14 * (column17_row9 - column19_row13)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[26] * value; + total_sum += constraint_coefficients[26] * value; // Constraint: initial_ap. value = (column19_row1 - global_values.initial_ap) .floor_div(&NonZeroFelt::from_felt_unchecked(domain20)); - total_sum = total_sum + constraint_coefficients[27] * value; + total_sum += constraint_coefficients[27] * value; // Constraint: initial_fp. value = (column19_row9 - global_values.initial_ap) .floor_div(&NonZeroFelt::from_felt_unchecked(domain20)); - total_sum = total_sum + constraint_coefficients[28] * value; + total_sum += constraint_coefficients[28] * value; // Constraint: initial_pc. value = (column17_row0 - global_values.initial_pc) .floor_div(&NonZeroFelt::from_felt_unchecked(domain20)); - total_sum = total_sum + constraint_coefficients[29] * value; + total_sum += constraint_coefficients[29] * value; // Constraint: final_ap. value = (column19_row1 - global_values.final_ap) .floor_div(&NonZeroFelt::from_felt_unchecked(domain19)); - total_sum = total_sum + constraint_coefficients[30] * value; + total_sum += constraint_coefficients[30] * value; // Constraint: final_fp. value = (column19_row9 - global_values.initial_ap) .floor_div(&NonZeroFelt::from_felt_unchecked(domain19)); - total_sum = total_sum + constraint_coefficients[31] * value; + total_sum += constraint_coefficients[31] * value; // Constraint: final_pc. value = (column17_row0 - global_values.final_pc) .floor_div(&NonZeroFelt::from_felt_unchecked(domain19)); - total_sum = total_sum + constraint_coefficients[32] * value; + total_sum += constraint_coefficients[32] * value; // Constraint: memory/multi_column_perm/perm/init0. value = ((global_values.memory_multi_column_perm_perm_interaction_elm @@ -578,7 +578,7 @@ pub fn eval_composition_polynomial_inner( + global_values.memory_multi_column_perm_hash_interaction_elm0 * column17_row1 - global_values.memory_multi_column_perm_perm_interaction_elm) .floor_div(&NonZeroFelt::from_felt_unchecked(domain20)); - total_sum = total_sum + constraint_coefficients[33] * value; + total_sum += constraint_coefficients[33] * value; // Constraint: memory/multi_column_perm/perm/step0. value = ((global_values.memory_multi_column_perm_perm_interaction_elm @@ -590,34 +590,34 @@ pub fn eval_composition_polynomial_inner( + global_values.memory_multi_column_perm_hash_interaction_elm0 * column17_row3)) * column21_inter1_row0) * domain21.floor_div(&NonZeroFelt::from_felt_unchecked(domain1)); - total_sum = total_sum + constraint_coefficients[34] * value; + total_sum += constraint_coefficients[34] * value; // Constraint: memory/multi_column_perm/perm/last. value = (column21_inter1_row0 - global_values.memory_multi_column_perm_perm_public_memory_prod) .floor_div(&NonZeroFelt::from_felt_unchecked(domain21)); - total_sum = total_sum + constraint_coefficients[35] * value; + total_sum += constraint_coefficients[35] * value; // Constraint: memory/diff_is_bit. value = (memory_address_diff_0 * memory_address_diff_0 - memory_address_diff_0) * domain21.floor_div(&NonZeroFelt::from_felt_unchecked(domain1)); - total_sum = total_sum + constraint_coefficients[36] * value; + total_sum += constraint_coefficients[36] * value; // Constraint: memory/is_func. value = ((memory_address_diff_0 - 1) * (column18_row1 - column18_row3)) * domain21.floor_div(&NonZeroFelt::from_felt_unchecked(domain1)); - total_sum = total_sum + constraint_coefficients[37] * value; + total_sum += constraint_coefficients[37] * value; // Constraint: memory/initial_addr. value = (column18_row0 - 1).floor_div(&NonZeroFelt::from_felt_unchecked(domain20)); - total_sum = total_sum + constraint_coefficients[38] * value; + total_sum += constraint_coefficients[38] * value; // Constraint: public_memory_addr_zero. value = (column17_row2).floor_div(&NonZeroFelt::from_felt_unchecked(domain3)); - total_sum = total_sum + constraint_coefficients[39] * value; + total_sum += constraint_coefficients[39] * value; // Constraint: public_memory_value_zero. value = (column17_row3).floor_div(&NonZeroFelt::from_felt_unchecked(domain3)); - total_sum = total_sum + constraint_coefficients[40] * value; + total_sum += constraint_coefficients[40] * value; // Constraint: range_check16/perm/init0. value = ((global_values.range_check16_perm_interaction_elm - column19_row2) @@ -625,7 +625,7 @@ pub fn eval_composition_polynomial_inner( + column19_row0 - global_values.range_check16_perm_interaction_elm) .floor_div(&NonZeroFelt::from_felt_unchecked(domain20)); - total_sum = total_sum + constraint_coefficients[41] * value; + total_sum += constraint_coefficients[41] * value; // Constraint: range_check16/perm/step0. value = ((global_values.range_check16_perm_interaction_elm - column19_row6) @@ -633,32 +633,32 @@ pub fn eval_composition_polynomial_inner( - (global_values.range_check16_perm_interaction_elm - column19_row4) * column21_inter1_row1) * domain22.floor_div(&NonZeroFelt::from_felt_unchecked(domain2)); - total_sum = total_sum + constraint_coefficients[42] * value; + total_sum += constraint_coefficients[42] * value; // Constraint: range_check16/perm/last. value = (column21_inter1_row1 - global_values.range_check16_perm_public_memory_prod) .floor_div(&NonZeroFelt::from_felt_unchecked(domain22)); - total_sum = total_sum + constraint_coefficients[43] * value; + total_sum += constraint_coefficients[43] * value; // Constraint: range_check16/diff_is_bit. value = (range_check16_diff_0 * range_check16_diff_0 - range_check16_diff_0) * domain22.floor_div(&NonZeroFelt::from_felt_unchecked(domain2)); - total_sum = total_sum + constraint_coefficients[44] * value; + total_sum += constraint_coefficients[44] * value; // Constraint: range_check16/minimum. value = (column19_row2 - global_values.range_check_min) .floor_div(&NonZeroFelt::from_felt_unchecked(domain20)); - total_sum = total_sum + constraint_coefficients[45] * value; + total_sum += constraint_coefficients[45] * value; // Constraint: range_check16/maximum. value = (column19_row2 - global_values.range_check_max) .floor_div(&NonZeroFelt::from_felt_unchecked(domain22)); - total_sum = total_sum + constraint_coefficients[46] * value; + total_sum += constraint_coefficients[46] * value; // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/last_one_is_zero. value = (column14_row255 * (column3_row0 - (column3_row1 + column3_row1))) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[47] * value; + total_sum += constraint_coefficients[47] * value; // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/zeroes_between_ones0. value = (column14_row255 @@ -666,98 +666,98 @@ pub fn eval_composition_polynomial_inner( - Felt::from_hex_unchecked("0x800000000000000000000000000000000000000000000000") * column3_row192)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[48] * value; + total_sum += constraint_coefficients[48] * value; // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/cumulative_bit192. value = (column14_row255 - column13_row255 * (column3_row192 - (column3_row193 + column3_row193))) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[49] * value; + total_sum += constraint_coefficients[49] * value; // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/zeroes_between_ones192. value = (column13_row255 * (column3_row193 - Felt::from(8) * column3_row196)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[50] * value; + total_sum += constraint_coefficients[50] * value; // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/cumulative_bit196. value = (column13_row255 - (column3_row251 - (column3_row252 + column3_row252)) * (column3_row196 - (column3_row197 + column3_row197))) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[51] * value; + total_sum += constraint_coefficients[51] * value; // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/zeroes_between_ones196. value = ((column3_row251 - (column3_row252 + column3_row252)) * (column3_row197 - Felt::from_hex_unchecked("0x40000000000000") * column3_row251)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[52] * value; + total_sum += constraint_coefficients[52] * value; // Constraint: pedersen/hash0/ec_subset_sum/booleanity_test. value = (pedersen_hash0_ec_subset_sum_bit_0 * (pedersen_hash0_ec_subset_sum_bit_0 - 1)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[53] * value; + total_sum += constraint_coefficients[53] * value; // Constraint: pedersen/hash0/ec_subset_sum/bit_extraction_end. value = (column3_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain10)); - total_sum = total_sum + constraint_coefficients[54] * value; + total_sum += constraint_coefficients[54] * value; // Constraint: pedersen/hash0/ec_subset_sum/zeros_tail. value = (column3_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain9)); - total_sum = total_sum + constraint_coefficients[55] * value; + total_sum += constraint_coefficients[55] * value; // Constraint: pedersen/hash0/ec_subset_sum/add_points/slope. value = (pedersen_hash0_ec_subset_sum_bit_0 * (column2_row0 - global_values.pedersen_points_y) - column13_row0 * (column1_row0 - global_values.pedersen_points_x)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[56] * value; + total_sum += constraint_coefficients[56] * value; // Constraint: pedersen/hash0/ec_subset_sum/add_points/x. value = (column13_row0 * column13_row0 - pedersen_hash0_ec_subset_sum_bit_0 * (column1_row0 + global_values.pedersen_points_x + column1_row1)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[57] * value; + total_sum += constraint_coefficients[57] * value; // Constraint: pedersen/hash0/ec_subset_sum/add_points/y. value = (pedersen_hash0_ec_subset_sum_bit_0 * (column2_row0 + column2_row1) - column13_row0 * (column1_row0 - column1_row1)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[58] * value; + total_sum += constraint_coefficients[58] * value; // Constraint: pedersen/hash0/ec_subset_sum/copy_point/x. value = (pedersen_hash0_ec_subset_sum_bit_neg_0 * (column1_row1 - column1_row0)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[59] * value; + total_sum += constraint_coefficients[59] * value; // Constraint: pedersen/hash0/ec_subset_sum/copy_point/y. value = (pedersen_hash0_ec_subset_sum_bit_neg_0 * (column2_row1 - column2_row0)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[60] * value; + total_sum += constraint_coefficients[60] * value; // Constraint: pedersen/hash0/copy_point/x. value = (column1_row256 - column1_row255) * domain11.floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[61] * value; + total_sum += constraint_coefficients[61] * value; // Constraint: pedersen/hash0/copy_point/y. value = (column2_row256 - column2_row255) * domain11.floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[62] * value; + total_sum += constraint_coefficients[62] * value; // Constraint: pedersen/hash0/init/x. value = (column1_row0 - global_values.pedersen_shift_point.x) .floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); - total_sum = total_sum + constraint_coefficients[63] * value; + total_sum += constraint_coefficients[63] * value; // Constraint: pedersen/hash0/init/y. value = (column2_row0 - global_values.pedersen_shift_point.y) .floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); - total_sum = total_sum + constraint_coefficients[64] * value; + total_sum += constraint_coefficients[64] * value; // Constraint: pedersen/hash1/ec_subset_sum/bit_unpacking/last_one_is_zero. value = (column16_row255 * (column6_row0 - (column6_row1 + column6_row1))) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[65] * value; + total_sum += constraint_coefficients[65] * value; // Constraint: pedersen/hash1/ec_subset_sum/bit_unpacking/zeroes_between_ones0. value = (column16_row255 @@ -765,98 +765,98 @@ pub fn eval_composition_polynomial_inner( - Felt::from_hex_unchecked("0x800000000000000000000000000000000000000000000000") * column6_row192)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[66] * value; + total_sum += constraint_coefficients[66] * value; // Constraint: pedersen/hash1/ec_subset_sum/bit_unpacking/cumulative_bit192. value = (column16_row255 - column15_row255 * (column6_row192 - (column6_row193 + column6_row193))) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[67] * value; + total_sum += constraint_coefficients[67] * value; // Constraint: pedersen/hash1/ec_subset_sum/bit_unpacking/zeroes_between_ones192. value = (column15_row255 * (column6_row193 - Felt::from(8) * column6_row196)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[68] * value; + total_sum += constraint_coefficients[68] * value; // Constraint: pedersen/hash1/ec_subset_sum/bit_unpacking/cumulative_bit196. value = (column15_row255 - (column6_row251 - (column6_row252 + column6_row252)) * (column6_row196 - (column6_row197 + column6_row197))) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[69] * value; + total_sum += constraint_coefficients[69] * value; // Constraint: pedersen/hash1/ec_subset_sum/bit_unpacking/zeroes_between_ones196. value = ((column6_row251 - (column6_row252 + column6_row252)) * (column6_row197 - Felt::from_hex_unchecked("0x40000000000000") * column6_row251)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[70] * value; + total_sum += constraint_coefficients[70] * value; // Constraint: pedersen/hash1/ec_subset_sum/booleanity_test. value = (pedersen_hash1_ec_subset_sum_bit_0 * (pedersen_hash1_ec_subset_sum_bit_0 - 1)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[71] * value; + total_sum += constraint_coefficients[71] * value; // Constraint: pedersen/hash1/ec_subset_sum/bit_extraction_end. value = (column6_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain10)); - total_sum = total_sum + constraint_coefficients[72] * value; + total_sum += constraint_coefficients[72] * value; // Constraint: pedersen/hash1/ec_subset_sum/zeros_tail. value = (column6_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain9)); - total_sum = total_sum + constraint_coefficients[73] * value; + total_sum += constraint_coefficients[73] * value; // Constraint: pedersen/hash1/ec_subset_sum/add_points/slope. value = (pedersen_hash1_ec_subset_sum_bit_0 * (column5_row0 - global_values.pedersen_points_y) - column14_row0 * (column4_row0 - global_values.pedersen_points_x)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[74] * value; + total_sum += constraint_coefficients[74] * value; // Constraint: pedersen/hash1/ec_subset_sum/add_points/x. value = (column14_row0 * column14_row0 - pedersen_hash1_ec_subset_sum_bit_0 * (column4_row0 + global_values.pedersen_points_x + column4_row1)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[75] * value; + total_sum += constraint_coefficients[75] * value; // Constraint: pedersen/hash1/ec_subset_sum/add_points/y. value = (pedersen_hash1_ec_subset_sum_bit_0 * (column5_row0 + column5_row1) - column14_row0 * (column4_row0 - column4_row1)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[76] * value; + total_sum += constraint_coefficients[76] * value; // Constraint: pedersen/hash1/ec_subset_sum/copy_point/x. value = (pedersen_hash1_ec_subset_sum_bit_neg_0 * (column4_row1 - column4_row0)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[77] * value; + total_sum += constraint_coefficients[77] * value; // Constraint: pedersen/hash1/ec_subset_sum/copy_point/y. value = (pedersen_hash1_ec_subset_sum_bit_neg_0 * (column5_row1 - column5_row0)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[78] * value; + total_sum += constraint_coefficients[78] * value; // Constraint: pedersen/hash1/copy_point/x. value = (column4_row256 - column4_row255) * domain11.floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[79] * value; + total_sum += constraint_coefficients[79] * value; // Constraint: pedersen/hash1/copy_point/y. value = (column5_row256 - column5_row255) * domain11.floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[80] * value; + total_sum += constraint_coefficients[80] * value; // Constraint: pedersen/hash1/init/x. value = (column4_row0 - global_values.pedersen_shift_point.x) .floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); - total_sum = total_sum + constraint_coefficients[81] * value; + total_sum += constraint_coefficients[81] * value; // Constraint: pedersen/hash1/init/y. value = (column5_row0 - global_values.pedersen_shift_point.y) .floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); - total_sum = total_sum + constraint_coefficients[82] * value; + total_sum += constraint_coefficients[82] * value; // Constraint: pedersen/hash2/ec_subset_sum/bit_unpacking/last_one_is_zero. value = (column20_row145 * (column9_row0 - (column9_row1 + column9_row1))) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[83] * value; + total_sum += constraint_coefficients[83] * value; // Constraint: pedersen/hash2/ec_subset_sum/bit_unpacking/zeroes_between_ones0. value = (column20_row145 @@ -864,98 +864,98 @@ pub fn eval_composition_polynomial_inner( - Felt::from_hex_unchecked("0x800000000000000000000000000000000000000000000000") * column9_row192)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[84] * value; + total_sum += constraint_coefficients[84] * value; // Constraint: pedersen/hash2/ec_subset_sum/bit_unpacking/cumulative_bit192. value = (column20_row145 - column20_row17 * (column9_row192 - (column9_row193 + column9_row193))) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[85] * value; + total_sum += constraint_coefficients[85] * value; // Constraint: pedersen/hash2/ec_subset_sum/bit_unpacking/zeroes_between_ones192. value = (column20_row17 * (column9_row193 - Felt::from(8) * column9_row196)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[86] * value; + total_sum += constraint_coefficients[86] * value; // Constraint: pedersen/hash2/ec_subset_sum/bit_unpacking/cumulative_bit196. value = (column20_row17 - (column9_row251 - (column9_row252 + column9_row252)) * (column9_row196 - (column9_row197 + column9_row197))) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[87] * value; + total_sum += constraint_coefficients[87] * value; // Constraint: pedersen/hash2/ec_subset_sum/bit_unpacking/zeroes_between_ones196. value = ((column9_row251 - (column9_row252 + column9_row252)) * (column9_row197 - Felt::from_hex_unchecked("0x40000000000000") * column9_row251)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[88] * value; + total_sum += constraint_coefficients[88] * value; // Constraint: pedersen/hash2/ec_subset_sum/booleanity_test. value = (pedersen_hash2_ec_subset_sum_bit_0 * (pedersen_hash2_ec_subset_sum_bit_0 - 1)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[89] * value; + total_sum += constraint_coefficients[89] * value; // Constraint: pedersen/hash2/ec_subset_sum/bit_extraction_end. value = (column9_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain10)); - total_sum = total_sum + constraint_coefficients[90] * value; + total_sum += constraint_coefficients[90] * value; // Constraint: pedersen/hash2/ec_subset_sum/zeros_tail. value = (column9_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain9)); - total_sum = total_sum + constraint_coefficients[91] * value; + total_sum += constraint_coefficients[91] * value; // Constraint: pedersen/hash2/ec_subset_sum/add_points/slope. value = (pedersen_hash2_ec_subset_sum_bit_0 * (column8_row0 - global_values.pedersen_points_y) - column15_row0 * (column7_row0 - global_values.pedersen_points_x)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[92] * value; + total_sum += constraint_coefficients[92] * value; // Constraint: pedersen/hash2/ec_subset_sum/add_points/x. value = (column15_row0 * column15_row0 - pedersen_hash2_ec_subset_sum_bit_0 * (column7_row0 + global_values.pedersen_points_x + column7_row1)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[93] * value; + total_sum += constraint_coefficients[93] * value; // Constraint: pedersen/hash2/ec_subset_sum/add_points/y. value = (pedersen_hash2_ec_subset_sum_bit_0 * (column8_row0 + column8_row1) - column15_row0 * (column7_row0 - column7_row1)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[94] * value; + total_sum += constraint_coefficients[94] * value; // Constraint: pedersen/hash2/ec_subset_sum/copy_point/x. value = (pedersen_hash2_ec_subset_sum_bit_neg_0 * (column7_row1 - column7_row0)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[95] * value; + total_sum += constraint_coefficients[95] * value; // Constraint: pedersen/hash2/ec_subset_sum/copy_point/y. value = (pedersen_hash2_ec_subset_sum_bit_neg_0 * (column8_row1 - column8_row0)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[96] * value; + total_sum += constraint_coefficients[96] * value; // Constraint: pedersen/hash2/copy_point/x. value = (column7_row256 - column7_row255) * domain11.floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[97] * value; + total_sum += constraint_coefficients[97] * value; // Constraint: pedersen/hash2/copy_point/y. value = (column8_row256 - column8_row255) * domain11.floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[98] * value; + total_sum += constraint_coefficients[98] * value; // Constraint: pedersen/hash2/init/x. value = (column7_row0 - global_values.pedersen_shift_point.x) .floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); - total_sum = total_sum + constraint_coefficients[99] * value; + total_sum += constraint_coefficients[99] * value; // Constraint: pedersen/hash2/init/y. value = (column8_row0 - global_values.pedersen_shift_point.y) .floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); - total_sum = total_sum + constraint_coefficients[100] * value; + total_sum += constraint_coefficients[100] * value; // Constraint: pedersen/hash3/ec_subset_sum/bit_unpacking/last_one_is_zero. value = (column20_row209 * (column12_row0 - (column12_row1 + column12_row1))) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[101] * value; + total_sum += constraint_coefficients[101] * value; // Constraint: pedersen/hash3/ec_subset_sum/bit_unpacking/zeroes_between_ones0. value = (column20_row209 @@ -963,186 +963,186 @@ pub fn eval_composition_polynomial_inner( - Felt::from_hex_unchecked("0x800000000000000000000000000000000000000000000000") * column12_row192)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[102] * value; + total_sum += constraint_coefficients[102] * value; // Constraint: pedersen/hash3/ec_subset_sum/bit_unpacking/cumulative_bit192. value = (column20_row209 - column20_row81 * (column12_row192 - (column12_row193 + column12_row193))) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[103] * value; + total_sum += constraint_coefficients[103] * value; // Constraint: pedersen/hash3/ec_subset_sum/bit_unpacking/zeroes_between_ones192. value = (column20_row81 * (column12_row193 - Felt::from(8) * column12_row196)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[104] * value; + total_sum += constraint_coefficients[104] * value; // Constraint: pedersen/hash3/ec_subset_sum/bit_unpacking/cumulative_bit196. value = (column20_row81 - (column12_row251 - (column12_row252 + column12_row252)) * (column12_row196 - (column12_row197 + column12_row197))) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[105] * value; + total_sum += constraint_coefficients[105] * value; // Constraint: pedersen/hash3/ec_subset_sum/bit_unpacking/zeroes_between_ones196. value = ((column12_row251 - (column12_row252 + column12_row252)) * (column12_row197 - Felt::from_hex_unchecked("0x40000000000000") * column12_row251)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[106] * value; + total_sum += constraint_coefficients[106] * value; // Constraint: pedersen/hash3/ec_subset_sum/booleanity_test. value = (pedersen_hash3_ec_subset_sum_bit_0 * (pedersen_hash3_ec_subset_sum_bit_0 - 1)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[107] * value; + total_sum += constraint_coefficients[107] * value; // Constraint: pedersen/hash3/ec_subset_sum/bit_extraction_end. value = (column12_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain10)); - total_sum = total_sum + constraint_coefficients[108] * value; + total_sum += constraint_coefficients[108] * value; // Constraint: pedersen/hash3/ec_subset_sum/zeros_tail. value = (column12_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain9)); - total_sum = total_sum + constraint_coefficients[109] * value; + total_sum += constraint_coefficients[109] * value; // Constraint: pedersen/hash3/ec_subset_sum/add_points/slope. value = (pedersen_hash3_ec_subset_sum_bit_0 * (column11_row0 - global_values.pedersen_points_y) - column16_row0 * (column10_row0 - global_values.pedersen_points_x)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[110] * value; + total_sum += constraint_coefficients[110] * value; // Constraint: pedersen/hash3/ec_subset_sum/add_points/x. value = (column16_row0 * column16_row0 - pedersen_hash3_ec_subset_sum_bit_0 * (column10_row0 + global_values.pedersen_points_x + column10_row1)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[111] * value; + total_sum += constraint_coefficients[111] * value; // Constraint: pedersen/hash3/ec_subset_sum/add_points/y. value = (pedersen_hash3_ec_subset_sum_bit_0 * (column11_row0 + column11_row1) - column16_row0 * (column10_row0 - column10_row1)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[112] * value; + total_sum += constraint_coefficients[112] * value; // Constraint: pedersen/hash3/ec_subset_sum/copy_point/x. value = (pedersen_hash3_ec_subset_sum_bit_neg_0 * (column10_row1 - column10_row0)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[113] * value; + total_sum += constraint_coefficients[113] * value; // Constraint: pedersen/hash3/ec_subset_sum/copy_point/y. value = (pedersen_hash3_ec_subset_sum_bit_neg_0 * (column11_row1 - column11_row0)) * domain9.floor_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[114] * value; + total_sum += constraint_coefficients[114] * value; // Constraint: pedersen/hash3/copy_point/x. value = (column10_row256 - column10_row255) * domain11.floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[115] * value; + total_sum += constraint_coefficients[115] * value; // Constraint: pedersen/hash3/copy_point/y. value = (column11_row256 - column11_row255) * domain11.floor_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[116] * value; + total_sum += constraint_coefficients[116] * value; // Constraint: pedersen/hash3/init/x. value = (column10_row0 - global_values.pedersen_shift_point.x) .floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); - total_sum = total_sum + constraint_coefficients[117] * value; + total_sum += constraint_coefficients[117] * value; // Constraint: pedersen/hash3/init/y. value = (column11_row0 - global_values.pedersen_shift_point.y) .floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); - total_sum = total_sum + constraint_coefficients[118] * value; + total_sum += constraint_coefficients[118] * value; // Constraint: pedersen/input0_value0. value = (column17_row7 - column3_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); - total_sum = total_sum + constraint_coefficients[119] * value; + total_sum += constraint_coefficients[119] * value; // Constraint: pedersen/input0_value1. value = (column17_row135 - column6_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); - total_sum = total_sum + constraint_coefficients[120] * value; + total_sum += constraint_coefficients[120] * value; // Constraint: pedersen/input0_value2. value = (column17_row263 - column9_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); - total_sum = total_sum + constraint_coefficients[121] * value; + total_sum += constraint_coefficients[121] * value; // Constraint: pedersen/input0_value3. value = (column17_row391 - column12_row0).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); - total_sum = total_sum + constraint_coefficients[122] * value; + total_sum += constraint_coefficients[122] * value; // Constraint: pedersen/input0_addr. value = (column17_row134 - (column17_row38 + 1)) * domain23.floor_div(&NonZeroFelt::from_felt_unchecked(domain7)); - total_sum = total_sum + constraint_coefficients[123] * value; + total_sum += constraint_coefficients[123] * value; // Constraint: pedersen/init_addr. value = (column17_row6 - global_values.initial_pedersen_addr) .floor_div(&NonZeroFelt::from_felt_unchecked(domain20)); - total_sum = total_sum + constraint_coefficients[124] * value; + total_sum += constraint_coefficients[124] * value; // Constraint: pedersen/input1_value0. value = (column17_row71 - column3_row256).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); - total_sum = total_sum + constraint_coefficients[125] * value; + total_sum += constraint_coefficients[125] * value; // Constraint: pedersen/input1_value1. value = (column17_row199 - column6_row256).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); - total_sum = total_sum + constraint_coefficients[126] * value; + total_sum += constraint_coefficients[126] * value; // Constraint: pedersen/input1_value2. value = (column17_row327 - column9_row256).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); - total_sum = total_sum + constraint_coefficients[127] * value; + total_sum += constraint_coefficients[127] * value; // Constraint: pedersen/input1_value3. value = (column17_row455 - column12_row256).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); - total_sum = total_sum + constraint_coefficients[128] * value; + total_sum += constraint_coefficients[128] * value; // Constraint: pedersen/input1_addr. value = (column17_row70 - (column17_row6 + 1)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain7)); - total_sum = total_sum + constraint_coefficients[129] * value; + total_sum += constraint_coefficients[129] * value; // Constraint: pedersen/output_value0. value = (column17_row39 - column1_row511).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); - total_sum = total_sum + constraint_coefficients[130] * value; + total_sum += constraint_coefficients[130] * value; // Constraint: pedersen/output_value1. value = (column17_row167 - column4_row511).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); - total_sum = total_sum + constraint_coefficients[131] * value; + total_sum += constraint_coefficients[131] * value; // Constraint: pedersen/output_value2. value = (column17_row295 - column7_row511).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); - total_sum = total_sum + constraint_coefficients[132] * value; + total_sum += constraint_coefficients[132] * value; // Constraint: pedersen/output_value3. value = (column17_row423 - column10_row511).floor_div(&NonZeroFelt::from_felt_unchecked(domain12)); - total_sum = total_sum + constraint_coefficients[133] * value; + total_sum += constraint_coefficients[133] * value; // Constraint: pedersen/output_addr. value = (column17_row38 - (column17_row70 + 1)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain7)); - total_sum = total_sum + constraint_coefficients[134] * value; + total_sum += constraint_coefficients[134] * value; // Constraint: range_check_builtin/value. value = (range_check_builtin_value7_0 - column17_row103) .floor_div(&NonZeroFelt::from_felt_unchecked(domain7)); - total_sum = total_sum + constraint_coefficients[135] * value; + total_sum += constraint_coefficients[135] * value; // Constraint: range_check_builtin/addr_step. value = (column17_row230 - (column17_row102 + 1)) * domain23.floor_div(&NonZeroFelt::from_felt_unchecked(domain7)); - total_sum = total_sum + constraint_coefficients[136] * value; + total_sum += constraint_coefficients[136] * value; // Constraint: range_check_builtin/init_addr. value = (column17_row102 - global_values.initial_range_check_addr) .floor_div(&NonZeroFelt::from_felt_unchecked(domain20)); - total_sum = total_sum + constraint_coefficients[137] * value; + total_sum += constraint_coefficients[137] * value; // Constraint: ecdsa/signature0/doubling_key/slope. value = (ecdsa_signature0_doubling_key_x_squared @@ -1151,190 +1151,190 @@ pub fn eval_composition_polynomial_inner( + global_values.ecdsa_sig_config.alpha - (column19_row15 + column19_row15) * column20_row12) * domain13.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[138] * value; + total_sum += constraint_coefficients[138] * value; // Constraint: ecdsa/signature0/doubling_key/x. value = (column20_row12 * column20_row12 - (column19_row7 + column19_row7 + column19_row23)) * domain13.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[139] * value; + total_sum += constraint_coefficients[139] * value; // Constraint: ecdsa/signature0/doubling_key/y. value = (column19_row15 + column19_row31 - column20_row12 * (column19_row7 - column19_row23)) * domain13.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[140] * value; + total_sum += constraint_coefficients[140] * value; // Constraint: ecdsa/signature0/exponentiate_generator/booleanity_test. value = (ecdsa_signature0_exponentiate_generator_bit_0 * (ecdsa_signature0_exponentiate_generator_bit_0 - 1)) * domain16.floor_div(&NonZeroFelt::from_felt_unchecked(domain6)); - total_sum = total_sum + constraint_coefficients[141] * value; + total_sum += constraint_coefficients[141] * value; // Constraint: ecdsa/signature0/exponentiate_generator/bit_extraction_end. value = (column20_row14).floor_div(&NonZeroFelt::from_felt_unchecked(domain17)); - total_sum = total_sum + constraint_coefficients[142] * value; + total_sum += constraint_coefficients[142] * value; // Constraint: ecdsa/signature0/exponentiate_generator/zeros_tail. value = (column20_row14).floor_div(&NonZeroFelt::from_felt_unchecked(domain6)); - total_sum = total_sum + constraint_coefficients[143] * value; + total_sum += constraint_coefficients[143] * value; // Constraint: ecdsa/signature0/exponentiate_generator/add_points/slope. value = (ecdsa_signature0_exponentiate_generator_bit_0 * (column20_row22 - global_values.ecdsa_generator_points_y) - column20_row30 * (column20_row6 - global_values.ecdsa_generator_points_x)) * domain16.floor_div(&NonZeroFelt::from_felt_unchecked(domain6)); - total_sum = total_sum + constraint_coefficients[144] * value; + total_sum += constraint_coefficients[144] * value; // Constraint: ecdsa/signature0/exponentiate_generator/add_points/x. value = (column20_row30 * column20_row30 - ecdsa_signature0_exponentiate_generator_bit_0 * (column20_row6 + global_values.ecdsa_generator_points_x + column20_row38)) * domain16.floor_div(&NonZeroFelt::from_felt_unchecked(domain6)); - total_sum = total_sum + constraint_coefficients[145] * value; + total_sum += constraint_coefficients[145] * value; // Constraint: ecdsa/signature0/exponentiate_generator/add_points/y. value = (ecdsa_signature0_exponentiate_generator_bit_0 * (column20_row22 + column20_row54) - column20_row30 * (column20_row6 - column20_row38)) * domain16.floor_div(&NonZeroFelt::from_felt_unchecked(domain6)); - total_sum = total_sum + constraint_coefficients[146] * value; + total_sum += constraint_coefficients[146] * value; // Constraint: ecdsa/signature0/exponentiate_generator/add_points/x_diff_inv. value = (column20_row1 * (column20_row6 - global_values.ecdsa_generator_points_x) - 1) * domain16.floor_div(&NonZeroFelt::from_felt_unchecked(domain6)); - total_sum = total_sum + constraint_coefficients[147] * value; + total_sum += constraint_coefficients[147] * value; // Constraint: ecdsa/signature0/exponentiate_generator/copy_point/x. value = (ecdsa_signature0_exponentiate_generator_bit_neg_0 * (column20_row38 - column20_row6)) * domain16.floor_div(&NonZeroFelt::from_felt_unchecked(domain6)); - total_sum = total_sum + constraint_coefficients[148] * value; + total_sum += constraint_coefficients[148] * value; // Constraint: ecdsa/signature0/exponentiate_generator/copy_point/y. value = (ecdsa_signature0_exponentiate_generator_bit_neg_0 * (column20_row54 - column20_row22)) * domain16.floor_div(&NonZeroFelt::from_felt_unchecked(domain6)); - total_sum = total_sum + constraint_coefficients[149] * value; + total_sum += constraint_coefficients[149] * value; // Constraint: ecdsa/signature0/exponentiate_key/booleanity_test. value = (ecdsa_signature0_exponentiate_key_bit_0 * (ecdsa_signature0_exponentiate_key_bit_0 - 1)) * domain13.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[150] * value; + total_sum += constraint_coefficients[150] * value; // Constraint: ecdsa/signature0/exponentiate_key/bit_extraction_end. value = (column20_row4).floor_div(&NonZeroFelt::from_felt_unchecked(domain14)); - total_sum = total_sum + constraint_coefficients[151] * value; + total_sum += constraint_coefficients[151] * value; // Constraint: ecdsa/signature0/exponentiate_key/zeros_tail. value = (column20_row4).floor_div(&NonZeroFelt::from_felt_unchecked(domain13)); - total_sum = total_sum + constraint_coefficients[152] * value; + total_sum += constraint_coefficients[152] * value; // Constraint: ecdsa/signature0/exponentiate_key/add_points/slope. value = (ecdsa_signature0_exponentiate_key_bit_0 * (column20_row8 - column19_row15) - column20_row2 * (column20_row0 - column19_row7)) * domain13.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[153] * value; + total_sum += constraint_coefficients[153] * value; // Constraint: ecdsa/signature0/exponentiate_key/add_points/x. value = (column20_row2 * column20_row2 - ecdsa_signature0_exponentiate_key_bit_0 * (column20_row0 + column19_row7 + column20_row16)) * domain13.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[154] * value; + total_sum += constraint_coefficients[154] * value; // Constraint: ecdsa/signature0/exponentiate_key/add_points/y. value = (ecdsa_signature0_exponentiate_key_bit_0 * (column20_row8 + column20_row24) - column20_row2 * (column20_row0 - column20_row16)) * domain13.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[155] * value; + total_sum += constraint_coefficients[155] * value; // Constraint: ecdsa/signature0/exponentiate_key/add_points/x_diff_inv. value = (column20_row10 * (column20_row0 - column19_row7) - 1) * domain13.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[156] * value; + total_sum += constraint_coefficients[156] * value; // Constraint: ecdsa/signature0/exponentiate_key/copy_point/x. value = (ecdsa_signature0_exponentiate_key_bit_neg_0 * (column20_row16 - column20_row0)) * domain13.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[157] * value; + total_sum += constraint_coefficients[157] * value; // Constraint: ecdsa/signature0/exponentiate_key/copy_point/y. value = (ecdsa_signature0_exponentiate_key_bit_neg_0 * (column20_row24 - column20_row8)) * domain13.floor_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[158] * value; + total_sum += constraint_coefficients[158] * value; // Constraint: ecdsa/signature0/init_gen/x. value = (column20_row6 - global_values.ecdsa_sig_config.shift_point.x) .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); - total_sum = total_sum + constraint_coefficients[159] * value; + total_sum += constraint_coefficients[159] * value; // Constraint: ecdsa/signature0/init_gen/y. value = (column20_row22 + global_values.ecdsa_sig_config.shift_point.y) .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); - total_sum = total_sum + constraint_coefficients[160] * value; + total_sum += constraint_coefficients[160] * value; // Constraint: ecdsa/signature0/init_key/x. value = (column20_row0 - global_values.ecdsa_sig_config.shift_point.x) .floor_div(&NonZeroFelt::from_felt_unchecked(domain15)); - total_sum = total_sum + constraint_coefficients[161] * value; + total_sum += constraint_coefficients[161] * value; // Constraint: ecdsa/signature0/init_key/y. value = (column20_row8 - global_values.ecdsa_sig_config.shift_point.y) .floor_div(&NonZeroFelt::from_felt_unchecked(domain15)); - total_sum = total_sum + constraint_coefficients[162] * value; + total_sum += constraint_coefficients[162] * value; // Constraint: ecdsa/signature0/add_results/slope. value = (column20_row8182 - (column20_row4088 + column20_row8190 * (column20_row8166 - column20_row4080))) .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); - total_sum = total_sum + constraint_coefficients[163] * value; + total_sum += constraint_coefficients[163] * value; // Constraint: ecdsa/signature0/add_results/x. value = (column20_row8190 * column20_row8190 - (column20_row8166 + column20_row4080 + column19_row4103)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); - total_sum = total_sum + constraint_coefficients[164] * value; + total_sum += constraint_coefficients[164] * value; // Constraint: ecdsa/signature0/add_results/y. value = (column20_row8182 + column19_row4111 - column20_row8190 * (column20_row8166 - column19_row4103)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); - total_sum = total_sum + constraint_coefficients[165] * value; + total_sum += constraint_coefficients[165] * value; // Constraint: ecdsa/signature0/add_results/x_diff_inv. value = (column20_row8161 * (column20_row8166 - column20_row4080) - 1) .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); - total_sum = total_sum + constraint_coefficients[166] * value; + total_sum += constraint_coefficients[166] * value; // Constraint: ecdsa/signature0/extract_r/slope. value = (column20_row8184 + global_values.ecdsa_sig_config.shift_point.y - column20_row4082 * (column20_row8176 - global_values.ecdsa_sig_config.shift_point.x)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); - total_sum = total_sum + constraint_coefficients[167] * value; + total_sum += constraint_coefficients[167] * value; // Constraint: ecdsa/signature0/extract_r/x. value = (column20_row4082 * column20_row4082 - (column20_row8176 + global_values.ecdsa_sig_config.shift_point.x + column20_row4)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); - total_sum = total_sum + constraint_coefficients[168] * value; + total_sum += constraint_coefficients[168] * value; // Constraint: ecdsa/signature0/extract_r/x_diff_inv. value = (column20_row8178 * (column20_row8176 - global_values.ecdsa_sig_config.shift_point.x) - 1) .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); - total_sum = total_sum + constraint_coefficients[169] * value; + total_sum += constraint_coefficients[169] * value; // Constraint: ecdsa/signature0/z_nonzero. value = (column20_row14 * column20_row4090 - 1) .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); - total_sum = total_sum + constraint_coefficients[170] * value; + total_sum += constraint_coefficients[170] * value; // Constraint: ecdsa/signature0/r_and_w_nonzero. value = (column20_row4 * column20_row4092 - 1) .floor_div(&NonZeroFelt::from_felt_unchecked(domain15)); - total_sum = total_sum + constraint_coefficients[171] * value; + total_sum += constraint_coefficients[171] * value; // Constraint: ecdsa/signature0/q_on_curve/x_squared. value = (column20_row8186 - column19_row7 * column19_row7) .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); - total_sum = total_sum + constraint_coefficients[172] * value; + total_sum += constraint_coefficients[172] * value; // Constraint: ecdsa/signature0/q_on_curve/on_curve. value = (column19_row15 * column19_row15 @@ -1342,31 +1342,31 @@ pub fn eval_composition_polynomial_inner( + global_values.ecdsa_sig_config.alpha * column19_row7 + global_values.ecdsa_sig_config.beta)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); - total_sum = total_sum + constraint_coefficients[173] * value; + total_sum += constraint_coefficients[173] * value; // Constraint: ecdsa/init_addr. value = (column17_row22 - global_values.initial_ecdsa_addr) .floor_div(&NonZeroFelt::from_felt_unchecked(domain20)); - total_sum = total_sum + constraint_coefficients[174] * value; + total_sum += constraint_coefficients[174] * value; // Constraint: ecdsa/message_addr. value = (column17_row4118 - (column17_row22 + 1)) .floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); - total_sum = total_sum + constraint_coefficients[175] * value; + total_sum += constraint_coefficients[175] * value; // Constraint: ecdsa/pubkey_addr. value = (column17_row8214 - (column17_row4118 + 1)) * domain24.floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); - total_sum = total_sum + constraint_coefficients[176] * value; + total_sum += constraint_coefficients[176] * value; // Constraint: ecdsa/message_value0. value = (column17_row4119 - column20_row14).floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); - total_sum = total_sum + constraint_coefficients[177] * value; + total_sum += constraint_coefficients[177] * value; // Constraint: ecdsa/pubkey_value0. value = (column17_row23 - column19_row7).floor_div(&NonZeroFelt::from_felt_unchecked(domain18)); - total_sum = total_sum + constraint_coefficients[178] * value; + total_sum += constraint_coefficients[178] * value; total_sum } @@ -1492,803 +1492,803 @@ pub fn eval_oods_polynomial_inner( value = (column0 - oods_values[0]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[0] * value; + total_sum += constraint_coefficients[0] * value; value = (column0 - oods_values[1]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); - total_sum = total_sum + constraint_coefficients[1] * value; + total_sum += constraint_coefficients[1] * value; value = (column0 - oods_values[2]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); - total_sum = total_sum + constraint_coefficients[2] * value; + total_sum += constraint_coefficients[2] * value; value = (column0 - oods_values[3]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow6 * oods_point)); - total_sum = total_sum + constraint_coefficients[3] * value; + total_sum += constraint_coefficients[3] * value; value = (column0 - oods_values[4]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow7 * oods_point)); - total_sum = total_sum + constraint_coefficients[4] * value; + total_sum += constraint_coefficients[4] * value; value = (column0 - oods_values[5]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow8 * oods_point)); - total_sum = total_sum + constraint_coefficients[5] * value; + total_sum += constraint_coefficients[5] * value; value = (column0 - oods_values[6]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow10 * oods_point)); - total_sum = total_sum + constraint_coefficients[6] * value; + total_sum += constraint_coefficients[6] * value; value = (column0 - oods_values[7]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow11 * oods_point)); - total_sum = total_sum + constraint_coefficients[7] * value; + total_sum += constraint_coefficients[7] * value; value = (column0 - oods_values[8]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow12 * oods_point)); - total_sum = total_sum + constraint_coefficients[8] * value; + total_sum += constraint_coefficients[8] * value; value = (column0 - oods_values[9]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow14 * oods_point)); - total_sum = total_sum + constraint_coefficients[9] * value; + total_sum += constraint_coefficients[9] * value; value = (column0 - oods_values[10]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow15 * oods_point)); - total_sum = total_sum + constraint_coefficients[10] * value; + total_sum += constraint_coefficients[10] * value; value = (column0 - oods_values[11]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow17 * oods_point)); - total_sum = total_sum + constraint_coefficients[11] * value; + total_sum += constraint_coefficients[11] * value; value = (column0 - oods_values[12]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow18 * oods_point)); - total_sum = total_sum + constraint_coefficients[12] * value; + total_sum += constraint_coefficients[12] * value; value = (column0 - oods_values[13]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow19 * oods_point)); - total_sum = total_sum + constraint_coefficients[13] * value; + total_sum += constraint_coefficients[13] * value; value = (column0 - oods_values[14]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow20 * oods_point)); - total_sum = total_sum + constraint_coefficients[14] * value; + total_sum += constraint_coefficients[14] * value; value = (column0 - oods_values[15]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow21 * oods_point)); - total_sum = total_sum + constraint_coefficients[15] * value; + total_sum += constraint_coefficients[15] * value; value = (column1 - oods_values[16]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[16] * value; + total_sum += constraint_coefficients[16] * value; value = (column1 - oods_values[17]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); - total_sum = total_sum + constraint_coefficients[17] * value; + total_sum += constraint_coefficients[17] * value; value = (column1 - oods_values[18]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); - total_sum = total_sum + constraint_coefficients[18] * value; + total_sum += constraint_coefficients[18] * value; value = (column1 - oods_values[19]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); - total_sum = total_sum + constraint_coefficients[19] * value; + total_sum += constraint_coefficients[19] * value; value = (column1 - oods_values[20]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow74 * oods_point)); - total_sum = total_sum + constraint_coefficients[20] * value; + total_sum += constraint_coefficients[20] * value; value = (column2 - oods_values[21]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[21] * value; + total_sum += constraint_coefficients[21] * value; value = (column2 - oods_values[22]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); - total_sum = total_sum + constraint_coefficients[22] * value; + total_sum += constraint_coefficients[22] * value; value = (column2 - oods_values[23]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); - total_sum = total_sum + constraint_coefficients[23] * value; + total_sum += constraint_coefficients[23] * value; value = (column2 - oods_values[24]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); - total_sum = total_sum + constraint_coefficients[24] * value; + total_sum += constraint_coefficients[24] * value; value = (column3 - oods_values[25]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[25] * value; + total_sum += constraint_coefficients[25] * value; value = (column3 - oods_values[26]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); - total_sum = total_sum + constraint_coefficients[26] * value; + total_sum += constraint_coefficients[26] * value; value = (column3 - oods_values[27]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow53 * oods_point)); - total_sum = total_sum + constraint_coefficients[27] * value; + total_sum += constraint_coefficients[27] * value; value = (column3 - oods_values[28]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow54 * oods_point)); - total_sum = total_sum + constraint_coefficients[28] * value; + total_sum += constraint_coefficients[28] * value; value = (column3 - oods_values[29]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow55 * oods_point)); - total_sum = total_sum + constraint_coefficients[29] * value; + total_sum += constraint_coefficients[29] * value; value = (column3 - oods_values[30]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow56 * oods_point)); - total_sum = total_sum + constraint_coefficients[30] * value; + total_sum += constraint_coefficients[30] * value; value = (column3 - oods_values[31]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow57 * oods_point)); - total_sum = total_sum + constraint_coefficients[31] * value; + total_sum += constraint_coefficients[31] * value; value = (column3 - oods_values[32]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow60 * oods_point)); - total_sum = total_sum + constraint_coefficients[32] * value; + total_sum += constraint_coefficients[32] * value; value = (column3 - oods_values[33]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); - total_sum = total_sum + constraint_coefficients[33] * value; + total_sum += constraint_coefficients[33] * value; value = (column4 - oods_values[34]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[34] * value; + total_sum += constraint_coefficients[34] * value; value = (column4 - oods_values[35]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); - total_sum = total_sum + constraint_coefficients[35] * value; + total_sum += constraint_coefficients[35] * value; value = (column4 - oods_values[36]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); - total_sum = total_sum + constraint_coefficients[36] * value; + total_sum += constraint_coefficients[36] * value; value = (column4 - oods_values[37]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); - total_sum = total_sum + constraint_coefficients[37] * value; + total_sum += constraint_coefficients[37] * value; value = (column4 - oods_values[38]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow74 * oods_point)); - total_sum = total_sum + constraint_coefficients[38] * value; + total_sum += constraint_coefficients[38] * value; value = (column5 - oods_values[39]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[39] * value; + total_sum += constraint_coefficients[39] * value; value = (column5 - oods_values[40]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); - total_sum = total_sum + constraint_coefficients[40] * value; + total_sum += constraint_coefficients[40] * value; value = (column5 - oods_values[41]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); - total_sum = total_sum + constraint_coefficients[41] * value; + total_sum += constraint_coefficients[41] * value; value = (column5 - oods_values[42]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); - total_sum = total_sum + constraint_coefficients[42] * value; + total_sum += constraint_coefficients[42] * value; value = (column6 - oods_values[43]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[43] * value; + total_sum += constraint_coefficients[43] * value; value = (column6 - oods_values[44]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); - total_sum = total_sum + constraint_coefficients[44] * value; + total_sum += constraint_coefficients[44] * value; value = (column6 - oods_values[45]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow53 * oods_point)); - total_sum = total_sum + constraint_coefficients[45] * value; + total_sum += constraint_coefficients[45] * value; value = (column6 - oods_values[46]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow54 * oods_point)); - total_sum = total_sum + constraint_coefficients[46] * value; + total_sum += constraint_coefficients[46] * value; value = (column6 - oods_values[47]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow55 * oods_point)); - total_sum = total_sum + constraint_coefficients[47] * value; + total_sum += constraint_coefficients[47] * value; value = (column6 - oods_values[48]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow56 * oods_point)); - total_sum = total_sum + constraint_coefficients[48] * value; + total_sum += constraint_coefficients[48] * value; value = (column6 - oods_values[49]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow57 * oods_point)); - total_sum = total_sum + constraint_coefficients[49] * value; + total_sum += constraint_coefficients[49] * value; value = (column6 - oods_values[50]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow60 * oods_point)); - total_sum = total_sum + constraint_coefficients[50] * value; + total_sum += constraint_coefficients[50] * value; value = (column6 - oods_values[51]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); - total_sum = total_sum + constraint_coefficients[51] * value; + total_sum += constraint_coefficients[51] * value; value = (column7 - oods_values[52]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[52] * value; + total_sum += constraint_coefficients[52] * value; value = (column7 - oods_values[53]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); - total_sum = total_sum + constraint_coefficients[53] * value; + total_sum += constraint_coefficients[53] * value; value = (column7 - oods_values[54]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); - total_sum = total_sum + constraint_coefficients[54] * value; + total_sum += constraint_coefficients[54] * value; value = (column7 - oods_values[55]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); - total_sum = total_sum + constraint_coefficients[55] * value; + total_sum += constraint_coefficients[55] * value; value = (column7 - oods_values[56]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow74 * oods_point)); - total_sum = total_sum + constraint_coefficients[56] * value; + total_sum += constraint_coefficients[56] * value; value = (column8 - oods_values[57]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[57] * value; + total_sum += constraint_coefficients[57] * value; value = (column8 - oods_values[58]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); - total_sum = total_sum + constraint_coefficients[58] * value; + total_sum += constraint_coefficients[58] * value; value = (column8 - oods_values[59]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); - total_sum = total_sum + constraint_coefficients[59] * value; + total_sum += constraint_coefficients[59] * value; value = (column8 - oods_values[60]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); - total_sum = total_sum + constraint_coefficients[60] * value; + total_sum += constraint_coefficients[60] * value; value = (column9 - oods_values[61]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[61] * value; + total_sum += constraint_coefficients[61] * value; value = (column9 - oods_values[62]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); - total_sum = total_sum + constraint_coefficients[62] * value; + total_sum += constraint_coefficients[62] * value; value = (column9 - oods_values[63]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow53 * oods_point)); - total_sum = total_sum + constraint_coefficients[63] * value; + total_sum += constraint_coefficients[63] * value; value = (column9 - oods_values[64]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow54 * oods_point)); - total_sum = total_sum + constraint_coefficients[64] * value; + total_sum += constraint_coefficients[64] * value; value = (column9 - oods_values[65]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow55 * oods_point)); - total_sum = total_sum + constraint_coefficients[65] * value; + total_sum += constraint_coefficients[65] * value; value = (column9 - oods_values[66]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow56 * oods_point)); - total_sum = total_sum + constraint_coefficients[66] * value; + total_sum += constraint_coefficients[66] * value; value = (column9 - oods_values[67]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow57 * oods_point)); - total_sum = total_sum + constraint_coefficients[67] * value; + total_sum += constraint_coefficients[67] * value; value = (column9 - oods_values[68]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow60 * oods_point)); - total_sum = total_sum + constraint_coefficients[68] * value; + total_sum += constraint_coefficients[68] * value; value = (column9 - oods_values[69]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); - total_sum = total_sum + constraint_coefficients[69] * value; + total_sum += constraint_coefficients[69] * value; value = (column10 - oods_values[70]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[70] * value; + total_sum += constraint_coefficients[70] * value; value = (column10 - oods_values[71]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); - total_sum = total_sum + constraint_coefficients[71] * value; + total_sum += constraint_coefficients[71] * value; value = (column10 - oods_values[72]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); - total_sum = total_sum + constraint_coefficients[72] * value; + total_sum += constraint_coefficients[72] * value; value = (column10 - oods_values[73]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); - total_sum = total_sum + constraint_coefficients[73] * value; + total_sum += constraint_coefficients[73] * value; value = (column10 - oods_values[74]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow74 * oods_point)); - total_sum = total_sum + constraint_coefficients[74] * value; + total_sum += constraint_coefficients[74] * value; value = (column11 - oods_values[75]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[75] * value; + total_sum += constraint_coefficients[75] * value; value = (column11 - oods_values[76]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); - total_sum = total_sum + constraint_coefficients[76] * value; + total_sum += constraint_coefficients[76] * value; value = (column11 - oods_values[77]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); - total_sum = total_sum + constraint_coefficients[77] * value; + total_sum += constraint_coefficients[77] * value; value = (column11 - oods_values[78]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); - total_sum = total_sum + constraint_coefficients[78] * value; + total_sum += constraint_coefficients[78] * value; value = (column12 - oods_values[79]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[79] * value; + total_sum += constraint_coefficients[79] * value; value = (column12 - oods_values[80]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); - total_sum = total_sum + constraint_coefficients[80] * value; + total_sum += constraint_coefficients[80] * value; value = (column12 - oods_values[81]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow53 * oods_point)); - total_sum = total_sum + constraint_coefficients[81] * value; + total_sum += constraint_coefficients[81] * value; value = (column12 - oods_values[82]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow54 * oods_point)); - total_sum = total_sum + constraint_coefficients[82] * value; + total_sum += constraint_coefficients[82] * value; value = (column12 - oods_values[83]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow55 * oods_point)); - total_sum = total_sum + constraint_coefficients[83] * value; + total_sum += constraint_coefficients[83] * value; value = (column12 - oods_values[84]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow56 * oods_point)); - total_sum = total_sum + constraint_coefficients[84] * value; + total_sum += constraint_coefficients[84] * value; value = (column12 - oods_values[85]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow57 * oods_point)); - total_sum = total_sum + constraint_coefficients[85] * value; + total_sum += constraint_coefficients[85] * value; value = (column12 - oods_values[86]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow60 * oods_point)); - total_sum = total_sum + constraint_coefficients[86] * value; + total_sum += constraint_coefficients[86] * value; value = (column12 - oods_values[87]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); - total_sum = total_sum + constraint_coefficients[87] * value; + total_sum += constraint_coefficients[87] * value; value = (column13 - oods_values[88]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[88] * value; + total_sum += constraint_coefficients[88] * value; value = (column13 - oods_values[89]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); - total_sum = total_sum + constraint_coefficients[89] * value; + total_sum += constraint_coefficients[89] * value; value = (column14 - oods_values[90]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[90] * value; + total_sum += constraint_coefficients[90] * value; value = (column14 - oods_values[91]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); - total_sum = total_sum + constraint_coefficients[91] * value; + total_sum += constraint_coefficients[91] * value; value = (column15 - oods_values[92]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[92] * value; + total_sum += constraint_coefficients[92] * value; value = (column15 - oods_values[93]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); - total_sum = total_sum + constraint_coefficients[93] * value; + total_sum += constraint_coefficients[93] * value; value = (column16 - oods_values[94]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[94] * value; + total_sum += constraint_coefficients[94] * value; value = (column16 - oods_values[95]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); - total_sum = total_sum + constraint_coefficients[95] * value; + total_sum += constraint_coefficients[95] * value; value = (column17 - oods_values[96]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[96] * value; + total_sum += constraint_coefficients[96] * value; value = (column17 - oods_values[97]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); - total_sum = total_sum + constraint_coefficients[97] * value; + total_sum += constraint_coefficients[97] * value; value = (column17 - oods_values[98]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); - total_sum = total_sum + constraint_coefficients[98] * value; + total_sum += constraint_coefficients[98] * value; value = (column17 - oods_values[99]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow6 * oods_point)); - total_sum = total_sum + constraint_coefficients[99] * value; + total_sum += constraint_coefficients[99] * value; value = (column17 - oods_values[100]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow7 * oods_point)); - total_sum = total_sum + constraint_coefficients[100] * value; + total_sum += constraint_coefficients[100] * value; value = (column17 - oods_values[101]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow8 * oods_point)); - total_sum = total_sum + constraint_coefficients[101] * value; + total_sum += constraint_coefficients[101] * value; value = (column17 - oods_values[102]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow10 * oods_point)); - total_sum = total_sum + constraint_coefficients[102] * value; + total_sum += constraint_coefficients[102] * value; value = (column17 - oods_values[103]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow11 * oods_point)); - total_sum = total_sum + constraint_coefficients[103] * value; + total_sum += constraint_coefficients[103] * value; value = (column17 - oods_values[104]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow12 * oods_point)); - total_sum = total_sum + constraint_coefficients[104] * value; + total_sum += constraint_coefficients[104] * value; value = (column17 - oods_values[105]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow14 * oods_point)); - total_sum = total_sum + constraint_coefficients[105] * value; + total_sum += constraint_coefficients[105] * value; value = (column17 - oods_values[106]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow18 * oods_point)); - total_sum = total_sum + constraint_coefficients[106] * value; + total_sum += constraint_coefficients[106] * value; value = (column17 - oods_values[107]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow19 * oods_point)); - total_sum = total_sum + constraint_coefficients[107] * value; + total_sum += constraint_coefficients[107] * value; value = (column17 - oods_values[108]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow22 * oods_point)); - total_sum = total_sum + constraint_coefficients[108] * value; + total_sum += constraint_coefficients[108] * value; value = (column17 - oods_values[109]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow25 * oods_point)); - total_sum = total_sum + constraint_coefficients[109] * value; + total_sum += constraint_coefficients[109] * value; value = (column17 - oods_values[110]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow26 * oods_point)); - total_sum = total_sum + constraint_coefficients[110] * value; + total_sum += constraint_coefficients[110] * value; value = (column17 - oods_values[111]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow34 * oods_point)); - total_sum = total_sum + constraint_coefficients[111] * value; + total_sum += constraint_coefficients[111] * value; value = (column17 - oods_values[112]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow35 * oods_point)); - total_sum = total_sum + constraint_coefficients[112] * value; + total_sum += constraint_coefficients[112] * value; value = (column17 - oods_values[113]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow40 * oods_point)); - total_sum = total_sum + constraint_coefficients[113] * value; + total_sum += constraint_coefficients[113] * value; value = (column17 - oods_values[114]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow41 * oods_point)); - total_sum = total_sum + constraint_coefficients[114] * value; + total_sum += constraint_coefficients[114] * value; value = (column17 - oods_values[115]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow45 * oods_point)); - total_sum = total_sum + constraint_coefficients[115] * value; + total_sum += constraint_coefficients[115] * value; value = (column17 - oods_values[116]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow46 * oods_point)); - total_sum = total_sum + constraint_coefficients[116] * value; + total_sum += constraint_coefficients[116] * value; value = (column17 - oods_values[117]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow49 * oods_point)); - total_sum = total_sum + constraint_coefficients[117] * value; + total_sum += constraint_coefficients[117] * value; value = (column17 - oods_values[118]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow50 * oods_point)); - total_sum = total_sum + constraint_coefficients[118] * value; + total_sum += constraint_coefficients[118] * value; value = (column17 - oods_values[119]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow52 * oods_point)); - total_sum = total_sum + constraint_coefficients[119] * value; + total_sum += constraint_coefficients[119] * value; value = (column17 - oods_values[120]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow58 * oods_point)); - total_sum = total_sum + constraint_coefficients[120] * value; + total_sum += constraint_coefficients[120] * value; value = (column17 - oods_values[121]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow59 * oods_point)); - total_sum = total_sum + constraint_coefficients[121] * value; + total_sum += constraint_coefficients[121] * value; value = (column17 - oods_values[122]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow79 * oods_point)); - total_sum = total_sum + constraint_coefficients[122] * value; + total_sum += constraint_coefficients[122] * value; value = (column17 - oods_values[123]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow78 * oods_point)); - total_sum = total_sum + constraint_coefficients[123] * value; + total_sum += constraint_coefficients[123] * value; value = (column17 - oods_values[124]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow77 * oods_point)); - total_sum = total_sum + constraint_coefficients[124] * value; + total_sum += constraint_coefficients[124] * value; value = (column17 - oods_values[125]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow76 * oods_point)); - total_sum = total_sum + constraint_coefficients[125] * value; + total_sum += constraint_coefficients[125] * value; value = (column17 - oods_values[126]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow75 * oods_point)); - total_sum = total_sum + constraint_coefficients[126] * value; + total_sum += constraint_coefficients[126] * value; value = (column17 - oods_values[127]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow80 * oods_point)); - total_sum = total_sum + constraint_coefficients[127] * value; + total_sum += constraint_coefficients[127] * value; value = (column17 - oods_values[128]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow69 * oods_point)); - total_sum = total_sum + constraint_coefficients[128] * value; + total_sum += constraint_coefficients[128] * value; value = (column17 - oods_values[129]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow70 * oods_point)); - total_sum = total_sum + constraint_coefficients[129] * value; + total_sum += constraint_coefficients[129] * value; value = (column17 - oods_values[130]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow68 * oods_point)); - total_sum = total_sum + constraint_coefficients[130] * value; + total_sum += constraint_coefficients[130] * value; value = (column18 - oods_values[131]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[131] * value; + total_sum += constraint_coefficients[131] * value; value = (column18 - oods_values[132]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); - total_sum = total_sum + constraint_coefficients[132] * value; + total_sum += constraint_coefficients[132] * value; value = (column18 - oods_values[133]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); - total_sum = total_sum + constraint_coefficients[133] * value; + total_sum += constraint_coefficients[133] * value; value = (column18 - oods_values[134]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow6 * oods_point)); - total_sum = total_sum + constraint_coefficients[134] * value; + total_sum += constraint_coefficients[134] * value; value = (column19 - oods_values[135]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[135] * value; + total_sum += constraint_coefficients[135] * value; value = (column19 - oods_values[136]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); - total_sum = total_sum + constraint_coefficients[136] * value; + total_sum += constraint_coefficients[136] * value; value = (column19 - oods_values[137]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); - total_sum = total_sum + constraint_coefficients[137] * value; + total_sum += constraint_coefficients[137] * value; value = (column19 - oods_values[138]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow6 * oods_point)); - total_sum = total_sum + constraint_coefficients[138] * value; + total_sum += constraint_coefficients[138] * value; value = (column19 - oods_values[139]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow7 * oods_point)); - total_sum = total_sum + constraint_coefficients[139] * value; + total_sum += constraint_coefficients[139] * value; value = (column19 - oods_values[140]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow8 * oods_point)); - total_sum = total_sum + constraint_coefficients[140] * value; + total_sum += constraint_coefficients[140] * value; value = (column19 - oods_values[141]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow10 * oods_point)); - total_sum = total_sum + constraint_coefficients[141] * value; + total_sum += constraint_coefficients[141] * value; value = (column19 - oods_values[142]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow11 * oods_point)); - total_sum = total_sum + constraint_coefficients[142] * value; + total_sum += constraint_coefficients[142] * value; value = (column19 - oods_values[143]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow12 * oods_point)); - total_sum = total_sum + constraint_coefficients[143] * value; + total_sum += constraint_coefficients[143] * value; value = (column19 - oods_values[144]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow14 * oods_point)); - total_sum = total_sum + constraint_coefficients[144] * value; + total_sum += constraint_coefficients[144] * value; value = (column19 - oods_values[145]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow17 * oods_point)); - total_sum = total_sum + constraint_coefficients[145] * value; + total_sum += constraint_coefficients[145] * value; value = (column19 - oods_values[146]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow18 * oods_point)); - total_sum = total_sum + constraint_coefficients[146] * value; + total_sum += constraint_coefficients[146] * value; value = (column19 - oods_values[147]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow19 * oods_point)); - total_sum = total_sum + constraint_coefficients[147] * value; + total_sum += constraint_coefficients[147] * value; value = (column19 - oods_values[148]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow21 * oods_point)); - total_sum = total_sum + constraint_coefficients[148] * value; + total_sum += constraint_coefficients[148] * value; value = (column19 - oods_values[149]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow23 * oods_point)); - total_sum = total_sum + constraint_coefficients[149] * value; + total_sum += constraint_coefficients[149] * value; value = (column19 - oods_values[150]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow26 * oods_point)); - total_sum = total_sum + constraint_coefficients[150] * value; + total_sum += constraint_coefficients[150] * value; value = (column19 - oods_values[151]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow28 * oods_point)); - total_sum = total_sum + constraint_coefficients[151] * value; + total_sum += constraint_coefficients[151] * value; value = (column19 - oods_values[152]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow29 * oods_point)); - total_sum = total_sum + constraint_coefficients[152] * value; + total_sum += constraint_coefficients[152] * value; value = (column19 - oods_values[153]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow31 * oods_point)); - total_sum = total_sum + constraint_coefficients[153] * value; + total_sum += constraint_coefficients[153] * value; value = (column19 - oods_values[154]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow36 * oods_point)); - total_sum = total_sum + constraint_coefficients[154] * value; + total_sum += constraint_coefficients[154] * value; value = (column19 - oods_values[155]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow39 * oods_point)); - total_sum = total_sum + constraint_coefficients[155] * value; + total_sum += constraint_coefficients[155] * value; value = (column19 - oods_values[156]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow42 * oods_point)); - total_sum = total_sum + constraint_coefficients[156] * value; + total_sum += constraint_coefficients[156] * value; value = (column19 - oods_values[157]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow44 * oods_point)); - total_sum = total_sum + constraint_coefficients[157] * value; + total_sum += constraint_coefficients[157] * value; value = (column19 - oods_values[158]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow47 * oods_point)); - total_sum = total_sum + constraint_coefficients[158] * value; + total_sum += constraint_coefficients[158] * value; value = (column19 - oods_values[159]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow48 * oods_point)); - total_sum = total_sum + constraint_coefficients[159] * value; + total_sum += constraint_coefficients[159] * value; value = (column19 - oods_values[160]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow66 * oods_point)); - total_sum = total_sum + constraint_coefficients[160] * value; + total_sum += constraint_coefficients[160] * value; value = (column19 - oods_values[161]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow67 * oods_point)); - total_sum = total_sum + constraint_coefficients[161] * value; + total_sum += constraint_coefficients[161] * value; value = (column20 - oods_values[162]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[162] * value; + total_sum += constraint_coefficients[162] * value; value = (column20 - oods_values[163]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); - total_sum = total_sum + constraint_coefficients[163] * value; + total_sum += constraint_coefficients[163] * value; value = (column20 - oods_values[164]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); - total_sum = total_sum + constraint_coefficients[164] * value; + total_sum += constraint_coefficients[164] * value; value = (column20 - oods_values[165]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow7 * oods_point)); - total_sum = total_sum + constraint_coefficients[165] * value; + total_sum += constraint_coefficients[165] * value; value = (column20 - oods_values[166]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow10 * oods_point)); - total_sum = total_sum + constraint_coefficients[166] * value; + total_sum += constraint_coefficients[166] * value; value = (column20 - oods_values[167]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow12 * oods_point)); - total_sum = total_sum + constraint_coefficients[167] * value; + total_sum += constraint_coefficients[167] * value; value = (column20 - oods_values[168]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow15 * oods_point)); - total_sum = total_sum + constraint_coefficients[168] * value; + total_sum += constraint_coefficients[168] * value; value = (column20 - oods_values[169]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow18 * oods_point)); - total_sum = total_sum + constraint_coefficients[169] * value; + total_sum += constraint_coefficients[169] * value; value = (column20 - oods_values[170]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow20 * oods_point)); - total_sum = total_sum + constraint_coefficients[170] * value; + total_sum += constraint_coefficients[170] * value; value = (column20 - oods_values[171]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow22 * oods_point)); - total_sum = total_sum + constraint_coefficients[171] * value; + total_sum += constraint_coefficients[171] * value; value = (column20 - oods_values[172]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow23 * oods_point)); - total_sum = total_sum + constraint_coefficients[172] * value; + total_sum += constraint_coefficients[172] * value; value = (column20 - oods_values[173]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow24 * oods_point)); - total_sum = total_sum + constraint_coefficients[173] * value; + total_sum += constraint_coefficients[173] * value; value = (column20 - oods_values[174]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow25 * oods_point)); - total_sum = total_sum + constraint_coefficients[174] * value; + total_sum += constraint_coefficients[174] * value; value = (column20 - oods_values[175]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow27 * oods_point)); - total_sum = total_sum + constraint_coefficients[175] * value; + total_sum += constraint_coefficients[175] * value; value = (column20 - oods_values[176]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow30 * oods_point)); - total_sum = total_sum + constraint_coefficients[176] * value; + total_sum += constraint_coefficients[176] * value; value = (column20 - oods_values[177]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow34 * oods_point)); - total_sum = total_sum + constraint_coefficients[177] * value; + total_sum += constraint_coefficients[177] * value; value = (column20 - oods_values[178]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow37 * oods_point)); - total_sum = total_sum + constraint_coefficients[178] * value; + total_sum += constraint_coefficients[178] * value; value = (column20 - oods_values[179]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow38 * oods_point)); - total_sum = total_sum + constraint_coefficients[179] * value; + total_sum += constraint_coefficients[179] * value; value = (column20 - oods_values[180]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow43 * oods_point)); - total_sum = total_sum + constraint_coefficients[180] * value; + total_sum += constraint_coefficients[180] * value; value = (column20 - oods_values[181]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow51 * oods_point)); - total_sum = total_sum + constraint_coefficients[181] * value; + total_sum += constraint_coefficients[181] * value; value = (column20 - oods_values[182]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow71 * oods_point)); - total_sum = total_sum + constraint_coefficients[182] * value; + total_sum += constraint_coefficients[182] * value; value = (column20 - oods_values[183]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow2 * oods_point)); - total_sum = total_sum + constraint_coefficients[183] * value; + total_sum += constraint_coefficients[183] * value; value = (column20 - oods_values[184]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow5 * oods_point)); - total_sum = total_sum + constraint_coefficients[184] * value; + total_sum += constraint_coefficients[184] * value; value = (column20 - oods_values[185]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow13 * oods_point)); - total_sum = total_sum + constraint_coefficients[185] * value; + total_sum += constraint_coefficients[185] * value; value = (column20 - oods_values[186]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow16 * oods_point)); - total_sum = total_sum + constraint_coefficients[186] * value; + total_sum += constraint_coefficients[186] * value; value = (column20 - oods_values[187]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow61 * oods_point)); - total_sum = total_sum + constraint_coefficients[187] * value; + total_sum += constraint_coefficients[187] * value; value = (column20 - oods_values[188]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow1 * oods_point)); - total_sum = total_sum + constraint_coefficients[188] * value; + total_sum += constraint_coefficients[188] * value; value = (column20 - oods_values[189]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow9 * oods_point)); - total_sum = total_sum + constraint_coefficients[189] * value; + total_sum += constraint_coefficients[189] * value; value = (column20 - oods_values[190]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow32 * oods_point)); - total_sum = total_sum + constraint_coefficients[190] * value; + total_sum += constraint_coefficients[190] * value; value = (column20 - oods_values[191]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow33 * oods_point)); - total_sum = total_sum + constraint_coefficients[191] * value; + total_sum += constraint_coefficients[191] * value; value = (column20 - oods_values[192]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow62 * oods_point)); - total_sum = total_sum + constraint_coefficients[192] * value; + total_sum += constraint_coefficients[192] * value; value = (column20 - oods_values[193]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow63 * oods_point)); - total_sum = total_sum + constraint_coefficients[193] * value; + total_sum += constraint_coefficients[193] * value; value = (column20 - oods_values[194]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow64 * oods_point)); - total_sum = total_sum + constraint_coefficients[194] * value; + total_sum += constraint_coefficients[194] * value; value = (column20 - oods_values[195]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow65 * oods_point)); - total_sum = total_sum + constraint_coefficients[195] * value; + total_sum += constraint_coefficients[195] * value; value = (column21 - oods_values[196]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[196] * value; + total_sum += constraint_coefficients[196] * value; value = (column21 - oods_values[197]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); - total_sum = total_sum + constraint_coefficients[197] * value; + total_sum += constraint_coefficients[197] * value; value = (column21 - oods_values[198]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); - total_sum = total_sum + constraint_coefficients[198] * value; + total_sum += constraint_coefficients[198] * value; value = (column21 - oods_values[199]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow8 * oods_point)); - total_sum = total_sum + constraint_coefficients[199] * value; + total_sum += constraint_coefficients[199] * value; // Sum the OODS boundary constraints on the composition polynomials. let oods_point_to_deg = oods_point.pow(CONSTRAINT_DEGREE); diff --git a/crates/air/src/layout/recursive_with_poseidon/autogenerated.rs b/crates/air/src/layout/recursive_with_poseidon/autogenerated.rs index 6df302f..097e651 100644 --- a/crates/air/src/layout/recursive_with_poseidon/autogenerated.rs +++ b/crates/air/src/layout/recursive_with_poseidon/autogenerated.rs @@ -427,11 +427,11 @@ pub fn eval_composition_polynomial_inner( let mut value = (cpu_decode_opcode_range_check_bit_0 * cpu_decode_opcode_range_check_bit_0 - cpu_decode_opcode_range_check_bit_0) * domain4.field_div(&NonZeroFelt::from_felt_unchecked(domain0)); - total_sum = total_sum + constraint_coefficients[0] * value; + total_sum += constraint_coefficients[0] * value; // Constraint: cpu/decode/opcode_range_check/zero. value = (column0_row0).field_div(&NonZeroFelt::from_felt_unchecked(domain4)); - total_sum = total_sum + constraint_coefficients[1] * value; + total_sum += constraint_coefficients[1] * value; // Constraint: cpu/decode/opcode_range_check_input. value = (column1_row1 @@ -441,30 +441,30 @@ pub fn eval_composition_polynomial_inner( * global_values.offset_size + column4_row0)) .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[2] * value; + total_sum += constraint_coefficients[2] * value; // Constraint: cpu/decode/flag_op1_base_op0_bit. value = (cpu_decode_flag_op1_base_op0_0 * cpu_decode_flag_op1_base_op0_0 - cpu_decode_flag_op1_base_op0_0) .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[3] * value; + total_sum += constraint_coefficients[3] * value; // Constraint: cpu/decode/flag_res_op1_bit. value = (cpu_decode_flag_res_op1_0 * cpu_decode_flag_res_op1_0 - cpu_decode_flag_res_op1_0) .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[4] * value; + total_sum += constraint_coefficients[4] * value; // Constraint: cpu/decode/flag_pc_update_regular_bit. value = (cpu_decode_flag_pc_update_regular_0 * cpu_decode_flag_pc_update_regular_0 - cpu_decode_flag_pc_update_regular_0) .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[5] * value; + total_sum += constraint_coefficients[5] * value; // Constraint: cpu/decode/fp_update_regular_bit. value = (cpu_decode_fp_update_regular_0 * cpu_decode_fp_update_regular_0 - cpu_decode_fp_update_regular_0) .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[6] * value; + total_sum += constraint_coefficients[6] * value; // Constraint: cpu/operands/mem_dst_addr. value = (column1_row8 + global_values.half_offset_size @@ -472,7 +472,7 @@ pub fn eval_composition_polynomial_inner( + (Felt::ONE - cpu_decode_opcode_range_check_bit_0) * column5_row0 + column4_row0)) .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[7] * value; + total_sum += constraint_coefficients[7] * value; // Constraint: cpu/operands/mem0_addr. value = (column1_row4 + global_values.half_offset_size @@ -480,7 +480,7 @@ pub fn eval_composition_polynomial_inner( + (Felt::ONE - cpu_decode_opcode_range_check_bit_1) * column5_row0 + column4_row8)) .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[8] * value; + total_sum += constraint_coefficients[8] * value; // Constraint: cpu/operands/mem1_addr. value = (column1_row12 + global_values.half_offset_size @@ -490,12 +490,12 @@ pub fn eval_composition_polynomial_inner( + cpu_decode_flag_op1_base_op0_0 * column1_row5 + column4_row4)) .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[9] * value; + total_sum += constraint_coefficients[9] * value; // Constraint: cpu/operands/ops_mul. value = (column5_row4 - column1_row5 * column1_row13) .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[10] * value; + total_sum += constraint_coefficients[10] * value; // Constraint: cpu/operands/res. value = ((Felt::ONE - cpu_decode_opcode_range_check_bit_9) * column5_row12 @@ -503,17 +503,17 @@ pub fn eval_composition_polynomial_inner( + cpu_decode_opcode_range_check_bit_6 * column5_row4 + cpu_decode_flag_res_op1_0 * column1_row13)) .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[11] * value; + total_sum += constraint_coefficients[11] * value; // Constraint: cpu/update_registers/update_pc/tmp0. value = (column5_row2 - cpu_decode_opcode_range_check_bit_9 * column1_row9) * domain24.field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[12] * value; + total_sum += constraint_coefficients[12] * value; // Constraint: cpu/update_registers/update_pc/tmp1. value = (column5_row10 - column5_row2 * column5_row12) * domain24.field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[13] * value; + total_sum += constraint_coefficients[13] * value; // Constraint: cpu/update_registers/update_pc/pc_cond_negative. value = ((Felt::ONE - cpu_decode_opcode_range_check_bit_9) * column1_row16 @@ -522,12 +522,12 @@ pub fn eval_composition_polynomial_inner( + cpu_decode_opcode_range_check_bit_7 * column5_row12 + cpu_decode_opcode_range_check_bit_8 * (column1_row0 + column5_row12))) * domain24.field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[14] * value; + total_sum += constraint_coefficients[14] * value; // Constraint: cpu/update_registers/update_pc/pc_cond_positive. value = ((column5_row10 - cpu_decode_opcode_range_check_bit_9) * (column1_row16 - npc_reg_0)) * domain24.field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[15] * value; + total_sum += constraint_coefficients[15] * value; // Constraint: cpu/update_registers/update_ap/ap_update. value = (column5_row16 @@ -536,7 +536,7 @@ pub fn eval_composition_polynomial_inner( + cpu_decode_opcode_range_check_bit_11 + cpu_decode_opcode_range_check_bit_12 * Felt::TWO)) * domain24.field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[16] * value; + total_sum += constraint_coefficients[16] * value; // Constraint: cpu/update_registers/update_fp/fp_update. value = (column5_row24 @@ -544,30 +544,30 @@ pub fn eval_composition_polynomial_inner( + cpu_decode_opcode_range_check_bit_13 * column1_row9 + cpu_decode_opcode_range_check_bit_12 * (column5_row0 + 2))) * domain24.field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[17] * value; + total_sum += constraint_coefficients[17] * value; // Constraint: cpu/opcodes/call/push_fp. value = (cpu_decode_opcode_range_check_bit_12 * (column1_row9 - column5_row8)) .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[18] * value; + total_sum += constraint_coefficients[18] * value; // Constraint: cpu/opcodes/call/push_pc. value = (cpu_decode_opcode_range_check_bit_12 * (column1_row5 - (column1_row0 + cpu_decode_opcode_range_check_bit_2 + 1))) .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[19] * value; + total_sum += constraint_coefficients[19] * value; // Constraint: cpu/opcodes/call/off0. value = (cpu_decode_opcode_range_check_bit_12 * (column4_row0 - global_values.half_offset_size)) .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[20] * value; + total_sum += constraint_coefficients[20] * value; // Constraint: cpu/opcodes/call/off1. value = (cpu_decode_opcode_range_check_bit_12 * (column4_row8 - (global_values.half_offset_size + 1))) .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[21] * value; + total_sum += constraint_coefficients[21] * value; // Constraint: cpu/opcodes/call/flags. value = (cpu_decode_opcode_range_check_bit_12 @@ -577,19 +577,19 @@ pub fn eval_composition_polynomial_inner( + Felt::ONE - (cpu_decode_opcode_range_check_bit_0 + cpu_decode_opcode_range_check_bit_1 + 4))) .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[22] * value; + total_sum += constraint_coefficients[22] * value; // Constraint: cpu/opcodes/ret/off0. value = (cpu_decode_opcode_range_check_bit_13 * (column4_row0 + 2 - global_values.half_offset_size)) .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[23] * value; + total_sum += constraint_coefficients[23] * value; // Constraint: cpu/opcodes/ret/off2. value = (cpu_decode_opcode_range_check_bit_13 * (column4_row4 + Felt::ONE - global_values.half_offset_size)) .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[24] * value; + total_sum += constraint_coefficients[24] * value; // Constraint: cpu/opcodes/ret/flags. value = (cpu_decode_opcode_range_check_bit_13 @@ -599,42 +599,42 @@ pub fn eval_composition_polynomial_inner( + cpu_decode_flag_res_op1_0 - 4)) .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[25] * value; + total_sum += constraint_coefficients[25] * value; // Constraint: cpu/opcodes/assert_eq/assert_eq. value = (cpu_decode_opcode_range_check_bit_14 * (column1_row9 - column5_row12)) .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[26] * value; + total_sum += constraint_coefficients[26] * value; // Constraint: initial_ap. value = (column5_row0 - global_values.initial_ap) .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); - total_sum = total_sum + constraint_coefficients[27] * value; + total_sum += constraint_coefficients[27] * value; // Constraint: initial_fp. value = (column5_row8 - global_values.initial_ap) .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); - total_sum = total_sum + constraint_coefficients[28] * value; + total_sum += constraint_coefficients[28] * value; // Constraint: initial_pc. value = (column1_row0 - global_values.initial_pc) .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); - total_sum = total_sum + constraint_coefficients[29] * value; + total_sum += constraint_coefficients[29] * value; // Constraint: final_ap. value = (column5_row0 - global_values.final_ap) .field_div(&NonZeroFelt::from_felt_unchecked(domain24)); - total_sum = total_sum + constraint_coefficients[30] * value; + total_sum += constraint_coefficients[30] * value; // Constraint: final_fp. value = (column5_row8 - global_values.initial_ap) .field_div(&NonZeroFelt::from_felt_unchecked(domain24)); - total_sum = total_sum + constraint_coefficients[31] * value; + total_sum += constraint_coefficients[31] * value; // Constraint: final_pc. value = (column1_row0 - global_values.final_pc) .field_div(&NonZeroFelt::from_felt_unchecked(domain24)); - total_sum = total_sum + constraint_coefficients[32] * value; + total_sum += constraint_coefficients[32] * value; // Constraint: memory/multi_column_perm/perm/init0. value = ((global_values.memory_multi_column_perm_perm_interaction_elm @@ -645,7 +645,7 @@ pub fn eval_composition_polynomial_inner( + global_values.memory_multi_column_perm_hash_interaction_elm0 * column1_row1 - global_values.memory_multi_column_perm_perm_interaction_elm) .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); - total_sum = total_sum + constraint_coefficients[33] * value; + total_sum += constraint_coefficients[33] * value; // Constraint: memory/multi_column_perm/perm/step0. value = ((global_values.memory_multi_column_perm_perm_interaction_elm @@ -657,34 +657,34 @@ pub fn eval_composition_polynomial_inner( + global_values.memory_multi_column_perm_hash_interaction_elm0 * column1_row3)) * column6_inter1_row0) * domain26.field_div(&NonZeroFelt::from_felt_unchecked(domain1)); - total_sum = total_sum + constraint_coefficients[34] * value; + total_sum += constraint_coefficients[34] * value; // Constraint: memory/multi_column_perm/perm/last. value = (column6_inter1_row0 - global_values.memory_multi_column_perm_perm_public_memory_prod) .field_div(&NonZeroFelt::from_felt_unchecked(domain26)); - total_sum = total_sum + constraint_coefficients[35] * value; + total_sum += constraint_coefficients[35] * value; // Constraint: memory/diff_is_bit. value = (memory_address_diff_0 * memory_address_diff_0 - memory_address_diff_0) * domain26.field_div(&NonZeroFelt::from_felt_unchecked(domain1)); - total_sum = total_sum + constraint_coefficients[36] * value; + total_sum += constraint_coefficients[36] * value; // Constraint: memory/is_func. value = ((memory_address_diff_0 - 1) * (column2_row1 - column2_row3)) * domain26.field_div(&NonZeroFelt::from_felt_unchecked(domain1)); - total_sum = total_sum + constraint_coefficients[37] * value; + total_sum += constraint_coefficients[37] * value; // Constraint: memory/initial_addr. value = (column2_row0 - 1).field_div(&NonZeroFelt::from_felt_unchecked(domain25)); - total_sum = total_sum + constraint_coefficients[38] * value; + total_sum += constraint_coefficients[38] * value; // Constraint: public_memory_addr_zero. value = (column1_row2).field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[39] * value; + total_sum += constraint_coefficients[39] * value; // Constraint: public_memory_value_zero. value = (column1_row3).field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[40] * value; + total_sum += constraint_coefficients[40] * value; // Constraint: range_check16/perm/init0. value = ((global_values.range_check16_perm_interaction_elm - column4_row2) @@ -692,34 +692,34 @@ pub fn eval_composition_polynomial_inner( + column4_row0 - global_values.range_check16_perm_interaction_elm) .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); - total_sum = total_sum + constraint_coefficients[41] * value; + total_sum += constraint_coefficients[41] * value; // Constraint: range_check16/perm/step0. value = ((global_values.range_check16_perm_interaction_elm - column4_row6) * column7_inter1_row5 - (global_values.range_check16_perm_interaction_elm - column4_row4) * column7_inter1_row1) * domain27.field_div(&NonZeroFelt::from_felt_unchecked(domain2)); - total_sum = total_sum + constraint_coefficients[42] * value; + total_sum += constraint_coefficients[42] * value; // Constraint: range_check16/perm/last. value = (column7_inter1_row1 - global_values.range_check16_perm_public_memory_prod) .field_div(&NonZeroFelt::from_felt_unchecked(domain27)); - total_sum = total_sum + constraint_coefficients[43] * value; + total_sum += constraint_coefficients[43] * value; // Constraint: range_check16/diff_is_bit. value = (range_check16_diff_0 * range_check16_diff_0 - range_check16_diff_0) * domain27.field_div(&NonZeroFelt::from_felt_unchecked(domain2)); - total_sum = total_sum + constraint_coefficients[44] * value; + total_sum += constraint_coefficients[44] * value; // Constraint: range_check16/minimum. value = (column4_row2 - global_values.range_check_min) .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); - total_sum = total_sum + constraint_coefficients[45] * value; + total_sum += constraint_coefficients[45] * value; // Constraint: range_check16/maximum. value = (column4_row2 - global_values.range_check_max) .field_div(&NonZeroFelt::from_felt_unchecked(domain27)); - total_sum = total_sum + constraint_coefficients[46] * value; + total_sum += constraint_coefficients[46] * value; // Constraint: diluted_check/permutation/init0. value = ((global_values.diluted_check_permutation_interaction_elm - column3_row1) @@ -727,7 +727,7 @@ pub fn eval_composition_polynomial_inner( + column3_row0 - global_values.diluted_check_permutation_interaction_elm) .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); - total_sum = total_sum + constraint_coefficients[47] * value; + total_sum += constraint_coefficients[47] * value; // Constraint: diluted_check/permutation/step0. value = ((global_values.diluted_check_permutation_interaction_elm - column3_row3) @@ -735,21 +735,21 @@ pub fn eval_composition_polynomial_inner( - (global_values.diluted_check_permutation_interaction_elm - column3_row2) * column7_inter1_row0) * domain26.field_div(&NonZeroFelt::from_felt_unchecked(domain1)); - total_sum = total_sum + constraint_coefficients[48] * value; + total_sum += constraint_coefficients[48] * value; // Constraint: diluted_check/permutation/last. value = (column7_inter1_row0 - global_values.diluted_check_permutation_public_memory_prod) .field_div(&NonZeroFelt::from_felt_unchecked(domain26)); - total_sum = total_sum + constraint_coefficients[49] * value; + total_sum += constraint_coefficients[49] * value; // Constraint: diluted_check/init. value = (column6_inter1_row1 - 1).field_div(&NonZeroFelt::from_felt_unchecked(domain25)); - total_sum = total_sum + constraint_coefficients[50] * value; + total_sum += constraint_coefficients[50] * value; // Constraint: diluted_check/first_element. value = (column3_row1 - global_values.diluted_check_first_elm) .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); - total_sum = total_sum + constraint_coefficients[51] * value; + total_sum += constraint_coefficients[51] * value; // Constraint: diluted_check/step. value = (column6_inter1_row3 @@ -760,17 +760,17 @@ pub fn eval_composition_polynomial_inner( * (column3_row3 - column3_row1) * (column3_row3 - column3_row1))) * domain26.field_div(&NonZeroFelt::from_felt_unchecked(domain1)); - total_sum = total_sum + constraint_coefficients[52] * value; + total_sum += constraint_coefficients[52] * value; // Constraint: diluted_check/last. value = (column6_inter1_row1 - global_values.diluted_check_final_cum_val) .field_div(&NonZeroFelt::from_felt_unchecked(domain26)); - total_sum = total_sum + constraint_coefficients[53] * value; + total_sum += constraint_coefficients[53] * value; // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/last_one_is_zero. value = (column5_row57 * (column4_row3 - (column4_row11 + column4_row11))) .field_div(&NonZeroFelt::from_felt_unchecked(domain19)); - total_sum = total_sum + constraint_coefficients[54] * value; + total_sum += constraint_coefficients[54] * value; // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/zeroes_between_ones0. value = (column5_row57 @@ -778,252 +778,252 @@ pub fn eval_composition_polynomial_inner( - Felt::from_hex_unchecked("0x800000000000000000000000000000000000000000000000") * column4_row1539)) .field_div(&NonZeroFelt::from_felt_unchecked(domain19)); - total_sum = total_sum + constraint_coefficients[55] * value; + total_sum += constraint_coefficients[55] * value; // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/cumulative_bit192. value = (column5_row57 - column4_row2047 * (column4_row1539 - (column4_row1547 + column4_row1547))) .field_div(&NonZeroFelt::from_felt_unchecked(domain19)); - total_sum = total_sum + constraint_coefficients[56] * value; + total_sum += constraint_coefficients[56] * value; // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/zeroes_between_ones192. value = (column4_row2047 * (column4_row1547 - Felt::from(8) * column4_row1571)) .field_div(&NonZeroFelt::from_felt_unchecked(domain19)); - total_sum = total_sum + constraint_coefficients[57] * value; + total_sum += constraint_coefficients[57] * value; // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/cumulative_bit196. value = (column4_row2047 - (column4_row2011 - (column4_row2019 + column4_row2019)) * (column4_row1571 - (column4_row1579 + column4_row1579))) .field_div(&NonZeroFelt::from_felt_unchecked(domain19)); - total_sum = total_sum + constraint_coefficients[58] * value; + total_sum += constraint_coefficients[58] * value; // Constraint: pedersen/hash0/ec_subset_sum/bit_unpacking/zeroes_between_ones196. value = ((column4_row2011 - (column4_row2019 + column4_row2019)) * (column4_row1579 - Felt::from_hex_unchecked("0x40000000000000") * column4_row2011)) .field_div(&NonZeroFelt::from_felt_unchecked(domain19)); - total_sum = total_sum + constraint_coefficients[59] * value; + total_sum += constraint_coefficients[59] * value; // Constraint: pedersen/hash0/ec_subset_sum/booleanity_test. value = (pedersen_hash0_ec_subset_sum_bit_0 * (pedersen_hash0_ec_subset_sum_bit_0 - 1)) * domain20.field_div(&NonZeroFelt::from_felt_unchecked(domain3)); - total_sum = total_sum + constraint_coefficients[60] * value; + total_sum += constraint_coefficients[60] * value; // Constraint: pedersen/hash0/ec_subset_sum/bit_extraction_end. value = (column4_row3).field_div(&NonZeroFelt::from_felt_unchecked(domain21)); - total_sum = total_sum + constraint_coefficients[61] * value; + total_sum += constraint_coefficients[61] * value; // Constraint: pedersen/hash0/ec_subset_sum/zeros_tail. value = (column4_row3).field_div(&NonZeroFelt::from_felt_unchecked(domain20)); - total_sum = total_sum + constraint_coefficients[62] * value; + total_sum += constraint_coefficients[62] * value; // Constraint: pedersen/hash0/ec_subset_sum/add_points/slope. value = (pedersen_hash0_ec_subset_sum_bit_0 * (column4_row5 - global_values.pedersen_points_y) - column4_row7 * (column4_row1 - global_values.pedersen_points_x)) * domain20.field_div(&NonZeroFelt::from_felt_unchecked(domain3)); - total_sum = total_sum + constraint_coefficients[63] * value; + total_sum += constraint_coefficients[63] * value; // Constraint: pedersen/hash0/ec_subset_sum/add_points/x. value = (column4_row7 * column4_row7 - pedersen_hash0_ec_subset_sum_bit_0 * (column4_row1 + global_values.pedersen_points_x + column4_row9)) * domain20.field_div(&NonZeroFelt::from_felt_unchecked(domain3)); - total_sum = total_sum + constraint_coefficients[64] * value; + total_sum += constraint_coefficients[64] * value; // Constraint: pedersen/hash0/ec_subset_sum/add_points/y. value = (pedersen_hash0_ec_subset_sum_bit_0 * (column4_row5 + column4_row13) - column4_row7 * (column4_row1 - column4_row9)) * domain20.field_div(&NonZeroFelt::from_felt_unchecked(domain3)); - total_sum = total_sum + constraint_coefficients[65] * value; + total_sum += constraint_coefficients[65] * value; // Constraint: pedersen/hash0/ec_subset_sum/copy_point/x. value = (pedersen_hash0_ec_subset_sum_bit_neg_0 * (column4_row9 - column4_row1)) * domain20.field_div(&NonZeroFelt::from_felt_unchecked(domain3)); - total_sum = total_sum + constraint_coefficients[66] * value; + total_sum += constraint_coefficients[66] * value; // Constraint: pedersen/hash0/ec_subset_sum/copy_point/y. value = (pedersen_hash0_ec_subset_sum_bit_neg_0 * (column4_row13 - column4_row5)) * domain20.field_div(&NonZeroFelt::from_felt_unchecked(domain3)); - total_sum = total_sum + constraint_coefficients[67] * value; + total_sum += constraint_coefficients[67] * value; // Constraint: pedersen/hash0/copy_point/x. value = (column4_row2049 - column4_row2041) * domain22.field_div(&NonZeroFelt::from_felt_unchecked(domain19)); - total_sum = total_sum + constraint_coefficients[68] * value; + total_sum += constraint_coefficients[68] * value; // Constraint: pedersen/hash0/copy_point/y. value = (column4_row2053 - column4_row2045) * domain22.field_div(&NonZeroFelt::from_felt_unchecked(domain19)); - total_sum = total_sum + constraint_coefficients[69] * value; + total_sum += constraint_coefficients[69] * value; // Constraint: pedersen/hash0/init/x. value = (column4_row1 - global_values.pedersen_shift_point.x) .field_div(&NonZeroFelt::from_felt_unchecked(domain23)); - total_sum = total_sum + constraint_coefficients[70] * value; + total_sum += constraint_coefficients[70] * value; // Constraint: pedersen/hash0/init/y. value = (column4_row5 - global_values.pedersen_shift_point.y) .field_div(&NonZeroFelt::from_felt_unchecked(domain23)); - total_sum = total_sum + constraint_coefficients[71] * value; + total_sum += constraint_coefficients[71] * value; // Constraint: pedersen/input0_value0. value = (column1_row11 - column4_row3).field_div(&NonZeroFelt::from_felt_unchecked(domain23)); - total_sum = total_sum + constraint_coefficients[72] * value; + total_sum += constraint_coefficients[72] * value; // Constraint: pedersen/input0_addr. value = (column1_row4106 - (column1_row1034 + 1)) * domain28.field_div(&NonZeroFelt::from_felt_unchecked(domain23)); - total_sum = total_sum + constraint_coefficients[73] * value; + total_sum += constraint_coefficients[73] * value; // Constraint: pedersen/init_addr. value = (column1_row10 - global_values.initial_pedersen_addr) .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); - total_sum = total_sum + constraint_coefficients[74] * value; + total_sum += constraint_coefficients[74] * value; // Constraint: pedersen/input1_value0. value = (column1_row2059 - column4_row2051).field_div(&NonZeroFelt::from_felt_unchecked(domain23)); - total_sum = total_sum + constraint_coefficients[75] * value; + total_sum += constraint_coefficients[75] * value; // Constraint: pedersen/input1_addr. value = (column1_row2058 - (column1_row10 + 1)) .field_div(&NonZeroFelt::from_felt_unchecked(domain23)); - total_sum = total_sum + constraint_coefficients[76] * value; + total_sum += constraint_coefficients[76] * value; // Constraint: pedersen/output_value0. value = (column1_row1035 - column4_row4089).field_div(&NonZeroFelt::from_felt_unchecked(domain23)); - total_sum = total_sum + constraint_coefficients[77] * value; + total_sum += constraint_coefficients[77] * value; // Constraint: pedersen/output_addr. value = (column1_row1034 - (column1_row2058 + 1)) .field_div(&NonZeroFelt::from_felt_unchecked(domain23)); - total_sum = total_sum + constraint_coefficients[78] * value; + total_sum += constraint_coefficients[78] * value; // Constraint: range_check_builtin/value. value = (range_check_builtin_value7_0 - column1_row139) .field_div(&NonZeroFelt::from_felt_unchecked(domain9)); - total_sum = total_sum + constraint_coefficients[79] * value; + total_sum += constraint_coefficients[79] * value; // Constraint: range_check_builtin/addr_step. value = (column1_row394 - (column1_row138 + 1)) * domain29.field_div(&NonZeroFelt::from_felt_unchecked(domain9)); - total_sum = total_sum + constraint_coefficients[80] * value; + total_sum += constraint_coefficients[80] * value; // Constraint: range_check_builtin/init_addr. value = (column1_row138 - global_values.initial_range_check_addr) .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); - total_sum = total_sum + constraint_coefficients[81] * value; + total_sum += constraint_coefficients[81] * value; // Constraint: bitwise/init_var_pool_addr. value = (column1_row42 - global_values.initial_bitwise_addr) .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); - total_sum = total_sum + constraint_coefficients[82] * value; + total_sum += constraint_coefficients[82] * value; // Constraint: bitwise/step_var_pool_addr. value = (column1_row106 - (column1_row42 + 1)) * domain10.field_div(&NonZeroFelt::from_felt_unchecked(domain7)); - total_sum = total_sum + constraint_coefficients[83] * value; + total_sum += constraint_coefficients[83] * value; // Constraint: bitwise/x_or_y_addr. value = (column1_row74 - (column1_row234 + 1)) .field_div(&NonZeroFelt::from_felt_unchecked(domain9)); - total_sum = total_sum + constraint_coefficients[84] * value; + total_sum += constraint_coefficients[84] * value; // Constraint: bitwise/next_var_pool_addr. value = (column1_row298 - (column1_row74 + 1)) * domain29.field_div(&NonZeroFelt::from_felt_unchecked(domain9)); - total_sum = total_sum + constraint_coefficients[85] * value; + total_sum += constraint_coefficients[85] * value; // Constraint: bitwise/partition. value = (bitwise_sum_var_0_0 + bitwise_sum_var_8_0 - column1_row43) .field_div(&NonZeroFelt::from_felt_unchecked(domain7)); - total_sum = total_sum + constraint_coefficients[86] * value; + total_sum += constraint_coefficients[86] * value; // Constraint: bitwise/or_is_and_plus_xor. value = (column1_row75 - (column1_row171 + column1_row235)) .field_div(&NonZeroFelt::from_felt_unchecked(domain9)); - total_sum = total_sum + constraint_coefficients[87] * value; + total_sum += constraint_coefficients[87] * value; // Constraint: bitwise/addition_is_xor_with_and. value = (column3_row0 + column3_row64 - (column3_row192 + column3_row128 + column3_row128)) .field_div(&NonZeroFelt::from_felt_unchecked(domain11)); - total_sum = total_sum + constraint_coefficients[88] * value; + total_sum += constraint_coefficients[88] * value; // Constraint: bitwise/unique_unpacking192. value = ((column3_row176 + column3_row240) * Felt::from(16) - column3_row2) .field_div(&NonZeroFelt::from_felt_unchecked(domain9)); - total_sum = total_sum + constraint_coefficients[89] * value; + total_sum += constraint_coefficients[89] * value; // Constraint: bitwise/unique_unpacking193. value = ((column3_row180 + column3_row244) * Felt::from(16) - column3_row130) .field_div(&NonZeroFelt::from_felt_unchecked(domain9)); - total_sum = total_sum + constraint_coefficients[90] * value; + total_sum += constraint_coefficients[90] * value; // Constraint: bitwise/unique_unpacking194. value = ((column3_row184 + column3_row248) * Felt::from(16) - column3_row66) .field_div(&NonZeroFelt::from_felt_unchecked(domain9)); - total_sum = total_sum + constraint_coefficients[91] * value; + total_sum += constraint_coefficients[91] * value; // Constraint: bitwise/unique_unpacking195. value = ((column3_row188 + column3_row252) * Felt::from(256) - column3_row194) .field_div(&NonZeroFelt::from_felt_unchecked(domain9)); - total_sum = total_sum + constraint_coefficients[92] * value; + total_sum += constraint_coefficients[92] * value; // Constraint: poseidon/param_0/init_input_output_addr. value = (column1_row266 - global_values.initial_poseidon_addr) .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); - total_sum = total_sum + constraint_coefficients[93] * value; + total_sum += constraint_coefficients[93] * value; // Constraint: poseidon/param_0/addr_input_output_step. value = (column1_row778 - (column1_row266 + 3)) * domain30.field_div(&NonZeroFelt::from_felt_unchecked(domain12)); - total_sum = total_sum + constraint_coefficients[94] * value; + total_sum += constraint_coefficients[94] * value; // Constraint: poseidon/param_1/init_input_output_addr. value = (column1_row202 - (global_values.initial_poseidon_addr + 1)) .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); - total_sum = total_sum + constraint_coefficients[95] * value; + total_sum += constraint_coefficients[95] * value; // Constraint: poseidon/param_1/addr_input_output_step. value = (column1_row714 - (column1_row202 + 3)) * domain30.field_div(&NonZeroFelt::from_felt_unchecked(domain12)); - total_sum = total_sum + constraint_coefficients[96] * value; + total_sum += constraint_coefficients[96] * value; // Constraint: poseidon/param_2/init_input_output_addr. value = (column1_row458 - (global_values.initial_poseidon_addr + 2)) .field_div(&NonZeroFelt::from_felt_unchecked(domain25)); - total_sum = total_sum + constraint_coefficients[97] * value; + total_sum += constraint_coefficients[97] * value; // Constraint: poseidon/param_2/addr_input_output_step. value = (column1_row970 - (column1_row458 + 3)) * domain30.field_div(&NonZeroFelt::from_felt_unchecked(domain12)); - total_sum = total_sum + constraint_coefficients[98] * value; + total_sum += constraint_coefficients[98] * value; // Constraint: poseidon/poseidon/full_rounds_state0_squaring. value = (column5_row9 * column5_row9 - column5_row105) .field_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[99] * value; + total_sum += constraint_coefficients[99] * value; // Constraint: poseidon/poseidon/full_rounds_state1_squaring. value = (column5_row73 * column5_row73 - column5_row25) .field_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[100] * value; + total_sum += constraint_coefficients[100] * value; // Constraint: poseidon/poseidon/full_rounds_state2_squaring. value = (column5_row41 * column5_row41 - column5_row89) .field_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[101] * value; + total_sum += constraint_coefficients[101] * value; // Constraint: poseidon/poseidon/partial_rounds_state0_squaring. value = (column5_row6 * column5_row6 - column5_row14) .field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[102] * value; + total_sum += constraint_coefficients[102] * value; // Constraint: poseidon/poseidon/partial_rounds_state1_squaring. value = (column5_row1 * column5_row1 - column5_row17) * domain15.field_div(&NonZeroFelt::from_felt_unchecked(domain6)); - total_sum = total_sum + constraint_coefficients[103] * value; + total_sum += constraint_coefficients[103] * value; // Constraint: poseidon/poseidon/add_first_round_key0. value = (column1_row267 @@ -1032,7 +1032,7 @@ pub fn eval_composition_polynomial_inner( ) - column5_row9) .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); - total_sum = total_sum + constraint_coefficients[104] * value; + total_sum += constraint_coefficients[104] * value; // Constraint: poseidon/poseidon/add_first_round_key1. value = (column1_row203 @@ -1041,7 +1041,7 @@ pub fn eval_composition_polynomial_inner( ) - column5_row73) .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); - total_sum = total_sum + constraint_coefficients[105] * value; + total_sum += constraint_coefficients[105] * value; // Constraint: poseidon/poseidon/add_first_round_key2. value = (column1_row459 @@ -1050,7 +1050,7 @@ pub fn eval_composition_polynomial_inner( ) - column5_row41) .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); - total_sum = total_sum + constraint_coefficients[106] * value; + total_sum += constraint_coefficients[106] * value; // Constraint: poseidon/poseidon/full_round0. value = (column5_row137 @@ -1061,7 +1061,7 @@ pub fn eval_composition_polynomial_inner( + poseidon_poseidon_full_rounds_state2_cubed_0 + global_values.poseidon_poseidon_full_round_key0)) * domain13.field_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[107] * value; + total_sum += constraint_coefficients[107] * value; // Constraint: poseidon/poseidon/full_round1. value = (column5_row201 + poseidon_poseidon_full_rounds_state1_cubed_0 @@ -1069,7 +1069,7 @@ pub fn eval_composition_polynomial_inner( + poseidon_poseidon_full_rounds_state2_cubed_0 + global_values.poseidon_poseidon_full_round_key1)) * domain13.field_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[108] * value; + total_sum += constraint_coefficients[108] * value; // Constraint: poseidon/poseidon/full_round2. value = (column5_row169 @@ -1079,7 +1079,7 @@ pub fn eval_composition_polynomial_inner( + poseidon_poseidon_full_rounds_state1_cubed_0 + global_values.poseidon_poseidon_full_round_key2)) * domain13.field_div(&NonZeroFelt::from_felt_unchecked(domain8)); - total_sum = total_sum + constraint_coefficients[109] * value; + total_sum += constraint_coefficients[109] * value; // Constraint: poseidon/poseidon/last_full_round0. value = (column1_row779 @@ -1089,14 +1089,14 @@ pub fn eval_composition_polynomial_inner( + poseidon_poseidon_full_rounds_state1_cubed_7 + poseidon_poseidon_full_rounds_state2_cubed_7)) .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); - total_sum = total_sum + constraint_coefficients[110] * value; + total_sum += constraint_coefficients[110] * value; // Constraint: poseidon/poseidon/last_full_round1. value = (column1_row715 + poseidon_poseidon_full_rounds_state1_cubed_7 - (poseidon_poseidon_full_rounds_state0_cubed_7 + poseidon_poseidon_full_rounds_state2_cubed_7)) .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); - total_sum = total_sum + constraint_coefficients[111] * value; + total_sum += constraint_coefficients[111] * value; // Constraint: poseidon/poseidon/last_full_round2. value = (column1_row971 @@ -1105,20 +1105,20 @@ pub fn eval_composition_polynomial_inner( - (poseidon_poseidon_full_rounds_state0_cubed_7 + poseidon_poseidon_full_rounds_state1_cubed_7)) .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); - total_sum = total_sum + constraint_coefficients[112] * value; + total_sum += constraint_coefficients[112] * value; // Constraint: poseidon/poseidon/copy_partial_rounds0_i0. value = (column5_row982 - column5_row1).field_div(&NonZeroFelt::from_felt_unchecked(domain16)); - total_sum = total_sum + constraint_coefficients[113] * value; + total_sum += constraint_coefficients[113] * value; // Constraint: poseidon/poseidon/copy_partial_rounds0_i1. value = (column5_row998 - column5_row33).field_div(&NonZeroFelt::from_felt_unchecked(domain16)); - total_sum = total_sum + constraint_coefficients[114] * value; + total_sum += constraint_coefficients[114] * value; // Constraint: poseidon/poseidon/copy_partial_rounds0_i2. value = (column5_row1014 - column5_row65).field_div(&NonZeroFelt::from_felt_unchecked(domain16)); - total_sum = total_sum + constraint_coefficients[115] * value; + total_sum += constraint_coefficients[115] * value; // Constraint: poseidon/poseidon/margin_full_to_partial0. value = (column5_row6 @@ -1130,7 +1130,7 @@ pub fn eval_composition_polynomial_inner( "0x4B085EB1DF4258C3453CC97445954BF3433B6AB9DD5A99592864C00F54A3F9A", ))) .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); - total_sum = total_sum + constraint_coefficients[116] * value; + total_sum += constraint_coefficients[116] * value; // Constraint: poseidon/poseidon/margin_full_to_partial1. value = (column5_row22 @@ -1146,7 +1146,7 @@ pub fn eval_composition_polynomial_inner( "0x46FB825257FEC76C50FE043684D4E6D2D2F2FDFE9B7C8D7128CA7ACC0F66F30", ))) .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); - total_sum = total_sum + constraint_coefficients[117] * value; + total_sum += constraint_coefficients[117] * value; // Constraint: poseidon/poseidon/margin_full_to_partial2. value = (column5_row38 @@ -1162,7 +1162,7 @@ pub fn eval_composition_polynomial_inner( "0xF2193BA0C7EA33CE6222D9446C1E166202AE5461005292F4A2BCB93420151A", ))) .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); - total_sum = total_sum + constraint_coefficients[118] * value; + total_sum += constraint_coefficients[118] * value; // Constraint: poseidon/poseidon/partial_round0. value = (column5_row54 @@ -1176,7 +1176,7 @@ pub fn eval_composition_polynomial_inner( ) * poseidon_poseidon_partial_rounds_state0_cubed_2 + global_values.poseidon_poseidon_partial_round_key0)) * domain17.field_div(&NonZeroFelt::from_felt_unchecked(domain5)); - total_sum = total_sum + constraint_coefficients[119] * value; + total_sum += constraint_coefficients[119] * value; // Constraint: poseidon/poseidon/partial_round1. value = (column5_row97 @@ -1190,7 +1190,7 @@ pub fn eval_composition_polynomial_inner( ) * poseidon_poseidon_partial_rounds_state1_cubed_2 + global_values.poseidon_poseidon_partial_round_key1)) * domain18.field_div(&NonZeroFelt::from_felt_unchecked(domain6)); - total_sum = total_sum + constraint_coefficients[120] * value; + total_sum += constraint_coefficients[120] * value; // Constraint: poseidon/poseidon/margin_partial_to_full0. value = (column5_row521 @@ -1203,7 +1203,7 @@ pub fn eval_composition_polynomial_inner( "0x13D1B5CFD87693224F0AC561AB2C15CA53365D768311AF59CEFAF701BC53B37", ))) .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); - total_sum = total_sum + constraint_coefficients[121] * value; + total_sum += constraint_coefficients[121] * value; // Constraint: poseidon/poseidon/margin_partial_to_full1. value = (column5_row585 @@ -1215,7 +1215,7 @@ pub fn eval_composition_polynomial_inner( "0x3195D6B2D930E71CEDE286D5B8B41D49296DDF222BCD3BF3717A12A9A6947FF", ))) .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); - total_sum = total_sum + constraint_coefficients[122] * value; + total_sum += constraint_coefficients[122] * value; // Constraint: poseidon/poseidon/margin_partial_to_full2. value = (column5_row553 @@ -1231,7 +1231,7 @@ pub fn eval_composition_polynomial_inner( "0x2C14FCCABC26929170CC7AC9989C823608B9008BEF3B8E16B6089A5D33CD72E", ))) .field_div(&NonZeroFelt::from_felt_unchecked(domain16)); - total_sum = total_sum + constraint_coefficients[123] * value; + total_sum += constraint_coefficients[123] * value; total_sum } @@ -1395,771 +1395,771 @@ pub fn eval_oods_polynomial_inner( let mut value = (column0 - oods_values[0]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[0] * value; + total_sum += constraint_coefficients[0] * value; value = (column0 - oods_values[1]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); - total_sum = total_sum + constraint_coefficients[1] * value; + total_sum += constraint_coefficients[1] * value; value = (column0 - oods_values[2]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow5 * oods_point)); - total_sum = total_sum + constraint_coefficients[2] * value; + total_sum += constraint_coefficients[2] * value; value = (column0 - oods_values[3]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow6 * oods_point)); - total_sum = total_sum + constraint_coefficients[3] * value; + total_sum += constraint_coefficients[3] * value; value = (column0 - oods_values[4]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow7 * oods_point)); - total_sum = total_sum + constraint_coefficients[4] * value; + total_sum += constraint_coefficients[4] * value; value = (column0 - oods_values[5]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow8 * oods_point)); - total_sum = total_sum + constraint_coefficients[5] * value; + total_sum += constraint_coefficients[5] * value; value = (column0 - oods_values[6]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow9 * oods_point)); - total_sum = total_sum + constraint_coefficients[6] * value; + total_sum += constraint_coefficients[6] * value; value = (column0 - oods_values[7]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow10 * oods_point)); - total_sum = total_sum + constraint_coefficients[7] * value; + total_sum += constraint_coefficients[7] * value; value = (column0 - oods_values[8]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow11 * oods_point)); - total_sum = total_sum + constraint_coefficients[8] * value; + total_sum += constraint_coefficients[8] * value; value = (column0 - oods_values[9]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow13 * oods_point)); - total_sum = total_sum + constraint_coefficients[9] * value; + total_sum += constraint_coefficients[9] * value; value = (column0 - oods_values[10]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow14 * oods_point)); - total_sum = total_sum + constraint_coefficients[10] * value; + total_sum += constraint_coefficients[10] * value; value = (column0 - oods_values[11]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow15 * oods_point)); - total_sum = total_sum + constraint_coefficients[11] * value; + total_sum += constraint_coefficients[11] * value; value = (column0 - oods_values[12]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow16 * oods_point)); - total_sum = total_sum + constraint_coefficients[12] * value; + total_sum += constraint_coefficients[12] * value; value = (column0 - oods_values[13]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow17 * oods_point)); - total_sum = total_sum + constraint_coefficients[13] * value; + total_sum += constraint_coefficients[13] * value; value = (column0 - oods_values[14]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow18 * oods_point)); - total_sum = total_sum + constraint_coefficients[14] * value; + total_sum += constraint_coefficients[14] * value; value = (column0 - oods_values[15]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow19 * oods_point)); - total_sum = total_sum + constraint_coefficients[15] * value; + total_sum += constraint_coefficients[15] * value; value = (column1 - oods_values[16]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[16] * value; + total_sum += constraint_coefficients[16] * value; value = (column1 - oods_values[17]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); - total_sum = total_sum + constraint_coefficients[17] * value; + total_sum += constraint_coefficients[17] * value; value = (column1 - oods_values[18]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow5 * oods_point)); - total_sum = total_sum + constraint_coefficients[18] * value; + total_sum += constraint_coefficients[18] * value; value = (column1 - oods_values[19]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow6 * oods_point)); - total_sum = total_sum + constraint_coefficients[19] * value; + total_sum += constraint_coefficients[19] * value; value = (column1 - oods_values[20]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow7 * oods_point)); - total_sum = total_sum + constraint_coefficients[20] * value; + total_sum += constraint_coefficients[20] * value; value = (column1 - oods_values[21]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow8 * oods_point)); - total_sum = total_sum + constraint_coefficients[21] * value; + total_sum += constraint_coefficients[21] * value; value = (column1 - oods_values[22]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow11 * oods_point)); - total_sum = total_sum + constraint_coefficients[22] * value; + total_sum += constraint_coefficients[22] * value; value = (column1 - oods_values[23]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow13 * oods_point)); - total_sum = total_sum + constraint_coefficients[23] * value; + total_sum += constraint_coefficients[23] * value; value = (column1 - oods_values[24]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow14 * oods_point)); - total_sum = total_sum + constraint_coefficients[24] * value; + total_sum += constraint_coefficients[24] * value; value = (column1 - oods_values[25]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow15 * oods_point)); - total_sum = total_sum + constraint_coefficients[25] * value; + total_sum += constraint_coefficients[25] * value; value = (column1 - oods_values[26]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow16 * oods_point)); - total_sum = total_sum + constraint_coefficients[26] * value; + total_sum += constraint_coefficients[26] * value; value = (column1 - oods_values[27]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow17 * oods_point)); - total_sum = total_sum + constraint_coefficients[27] * value; + total_sum += constraint_coefficients[27] * value; value = (column1 - oods_values[28]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow20 * oods_point)); - total_sum = total_sum + constraint_coefficients[28] * value; + total_sum += constraint_coefficients[28] * value; value = (column1 - oods_values[29]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow35 * oods_point)); - total_sum = total_sum + constraint_coefficients[29] * value; + total_sum += constraint_coefficients[29] * value; value = (column1 - oods_values[30]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow36 * oods_point)); - total_sum = total_sum + constraint_coefficients[30] * value; + total_sum += constraint_coefficients[30] * value; value = (column1 - oods_values[31]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow50 * oods_point)); - total_sum = total_sum + constraint_coefficients[31] * value; + total_sum += constraint_coefficients[31] * value; value = (column1 - oods_values[32]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow51 * oods_point)); - total_sum = total_sum + constraint_coefficients[32] * value; + total_sum += constraint_coefficients[32] * value; value = (column1 - oods_values[33]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow57 * oods_point)); - total_sum = total_sum + constraint_coefficients[33] * value; + total_sum += constraint_coefficients[33] * value; value = (column1 - oods_values[34]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow62 * oods_point)); - total_sum = total_sum + constraint_coefficients[34] * value; + total_sum += constraint_coefficients[34] * value; value = (column1 - oods_values[35]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow63 * oods_point)); - total_sum = total_sum + constraint_coefficients[35] * value; + total_sum += constraint_coefficients[35] * value; value = (column1 - oods_values[36]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow65 * oods_point)); - total_sum = total_sum + constraint_coefficients[36] * value; + total_sum += constraint_coefficients[36] * value; value = (column1 - oods_values[37]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow75 * oods_point)); - total_sum = total_sum + constraint_coefficients[37] * value; + total_sum += constraint_coefficients[37] * value; value = (column1 - oods_values[38]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow76 * oods_point)); - total_sum = total_sum + constraint_coefficients[38] * value; + total_sum += constraint_coefficients[38] * value; value = (column1 - oods_values[39]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow79 * oods_point)); - total_sum = total_sum + constraint_coefficients[39] * value; + total_sum += constraint_coefficients[39] * value; value = (column1 - oods_values[40]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow80 * oods_point)); - total_sum = total_sum + constraint_coefficients[40] * value; + total_sum += constraint_coefficients[40] * value; value = (column1 - oods_values[41]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow86 * oods_point)); - total_sum = total_sum + constraint_coefficients[41] * value; + total_sum += constraint_coefficients[41] * value; value = (column1 - oods_values[42]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow87 * oods_point)); - total_sum = total_sum + constraint_coefficients[42] * value; + total_sum += constraint_coefficients[42] * value; value = (column1 - oods_values[43]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow115 * oods_point)); - total_sum = total_sum + constraint_coefficients[43] * value; + total_sum += constraint_coefficients[43] * value; value = (column1 - oods_values[44]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow88 * oods_point)); - total_sum = total_sum + constraint_coefficients[44] * value; + total_sum += constraint_coefficients[44] * value; value = (column1 - oods_values[45]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow92 * oods_point)); - total_sum = total_sum + constraint_coefficients[45] * value; + total_sum += constraint_coefficients[45] * value; value = (column1 - oods_values[46]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow93 * oods_point)); - total_sum = total_sum + constraint_coefficients[46] * value; + total_sum += constraint_coefficients[46] * value; value = (column1 - oods_values[47]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow109 * oods_point)); - total_sum = total_sum + constraint_coefficients[47] * value; + total_sum += constraint_coefficients[47] * value; value = (column1 - oods_values[48]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow113 * oods_point)); - total_sum = total_sum + constraint_coefficients[48] * value; + total_sum += constraint_coefficients[48] * value; value = (column1 - oods_values[49]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow110 * oods_point)); - total_sum = total_sum + constraint_coefficients[49] * value; + total_sum += constraint_coefficients[49] * value; value = (column1 - oods_values[50]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow114 * oods_point)); - total_sum = total_sum + constraint_coefficients[50] * value; + total_sum += constraint_coefficients[50] * value; value = (column1 - oods_values[51]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow111 * oods_point)); - total_sum = total_sum + constraint_coefficients[51] * value; + total_sum += constraint_coefficients[51] * value; value = (column1 - oods_values[52]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow116 * oods_point)); - total_sum = total_sum + constraint_coefficients[52] * value; + total_sum += constraint_coefficients[52] * value; value = (column1 - oods_values[53]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow122 * oods_point)); - total_sum = total_sum + constraint_coefficients[53] * value; + total_sum += constraint_coefficients[53] * value; value = (column1 - oods_values[54]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow127 * oods_point)); - total_sum = total_sum + constraint_coefficients[54] * value; + total_sum += constraint_coefficients[54] * value; value = (column1 - oods_values[55]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow131 * oods_point)); - total_sum = total_sum + constraint_coefficients[55] * value; + total_sum += constraint_coefficients[55] * value; value = (column1 - oods_values[56]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow132 * oods_point)); - total_sum = total_sum + constraint_coefficients[56] * value; + total_sum += constraint_coefficients[56] * value; value = (column1 - oods_values[57]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow133 * oods_point)); - total_sum = total_sum + constraint_coefficients[57] * value; + total_sum += constraint_coefficients[57] * value; value = (column2 - oods_values[58]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[58] * value; + total_sum += constraint_coefficients[58] * value; value = (column2 - oods_values[59]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); - total_sum = total_sum + constraint_coefficients[59] * value; + total_sum += constraint_coefficients[59] * value; value = (column2 - oods_values[60]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow5 * oods_point)); - total_sum = total_sum + constraint_coefficients[60] * value; + total_sum += constraint_coefficients[60] * value; value = (column2 - oods_values[61]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow6 * oods_point)); - total_sum = total_sum + constraint_coefficients[61] * value; + total_sum += constraint_coefficients[61] * value; value = (column3 - oods_values[62]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[62] * value; + total_sum += constraint_coefficients[62] * value; value = (column3 - oods_values[63]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); - total_sum = total_sum + constraint_coefficients[63] * value; + total_sum += constraint_coefficients[63] * value; value = (column3 - oods_values[64]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow5 * oods_point)); - total_sum = total_sum + constraint_coefficients[64] * value; + total_sum += constraint_coefficients[64] * value; value = (column3 - oods_values[65]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow6 * oods_point)); - total_sum = total_sum + constraint_coefficients[65] * value; + total_sum += constraint_coefficients[65] * value; value = (column3 - oods_values[66]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow7 * oods_point)); - total_sum = total_sum + constraint_coefficients[66] * value; + total_sum += constraint_coefficients[66] * value; value = (column3 - oods_values[67]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow11 * oods_point)); - total_sum = total_sum + constraint_coefficients[67] * value; + total_sum += constraint_coefficients[67] * value; value = (column3 - oods_values[68]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow16 * oods_point)); - total_sum = total_sum + constraint_coefficients[68] * value; + total_sum += constraint_coefficients[68] * value; value = (column3 - oods_values[69]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow20 * oods_point)); - total_sum = total_sum + constraint_coefficients[69] * value; + total_sum += constraint_coefficients[69] * value; value = (column3 - oods_values[70]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow22 * oods_point)); - total_sum = total_sum + constraint_coefficients[70] * value; + total_sum += constraint_coefficients[70] * value; value = (column3 - oods_values[71]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow24 * oods_point)); - total_sum = total_sum + constraint_coefficients[71] * value; + total_sum += constraint_coefficients[71] * value; value = (column3 - oods_values[72]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow26 * oods_point)); - total_sum = total_sum + constraint_coefficients[72] * value; + total_sum += constraint_coefficients[72] * value; value = (column3 - oods_values[73]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow28 * oods_point)); - total_sum = total_sum + constraint_coefficients[73] * value; + total_sum += constraint_coefficients[73] * value; value = (column3 - oods_values[74]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow31 * oods_point)); - total_sum = total_sum + constraint_coefficients[74] * value; + total_sum += constraint_coefficients[74] * value; value = (column3 - oods_values[75]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow33 * oods_point)); - total_sum = total_sum + constraint_coefficients[75] * value; + total_sum += constraint_coefficients[75] * value; value = (column3 - oods_values[76]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow37 * oods_point)); - total_sum = total_sum + constraint_coefficients[76] * value; + total_sum += constraint_coefficients[76] * value; value = (column3 - oods_values[77]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow39 * oods_point)); - total_sum = total_sum + constraint_coefficients[77] * value; + total_sum += constraint_coefficients[77] * value; value = (column3 - oods_values[78]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow41 * oods_point)); - total_sum = total_sum + constraint_coefficients[78] * value; + total_sum += constraint_coefficients[78] * value; value = (column3 - oods_values[79]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow43 * oods_point)); - total_sum = total_sum + constraint_coefficients[79] * value; + total_sum += constraint_coefficients[79] * value; value = (column3 - oods_values[80]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow45 * oods_point)); - total_sum = total_sum + constraint_coefficients[80] * value; + total_sum += constraint_coefficients[80] * value; value = (column3 - oods_values[81]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow46 * oods_point)); - total_sum = total_sum + constraint_coefficients[81] * value; + total_sum += constraint_coefficients[81] * value; value = (column3 - oods_values[82]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow48 * oods_point)); - total_sum = total_sum + constraint_coefficients[82] * value; + total_sum += constraint_coefficients[82] * value; value = (column3 - oods_values[83]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow59 * oods_point)); - total_sum = total_sum + constraint_coefficients[83] * value; + total_sum += constraint_coefficients[83] * value; value = (column3 - oods_values[84]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow60 * oods_point)); - total_sum = total_sum + constraint_coefficients[84] * value; + total_sum += constraint_coefficients[84] * value; value = (column3 - oods_values[85]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow68 * oods_point)); - total_sum = total_sum + constraint_coefficients[85] * value; + total_sum += constraint_coefficients[85] * value; value = (column3 - oods_values[86]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow69 * oods_point)); - total_sum = total_sum + constraint_coefficients[86] * value; + total_sum += constraint_coefficients[86] * value; value = (column3 - oods_values[87]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow70 * oods_point)); - total_sum = total_sum + constraint_coefficients[87] * value; + total_sum += constraint_coefficients[87] * value; value = (column3 - oods_values[88]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow71 * oods_point)); - total_sum = total_sum + constraint_coefficients[88] * value; + total_sum += constraint_coefficients[88] * value; value = (column3 - oods_values[89]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow72 * oods_point)); - total_sum = total_sum + constraint_coefficients[89] * value; + total_sum += constraint_coefficients[89] * value; value = (column3 - oods_values[90]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow73 * oods_point)); - total_sum = total_sum + constraint_coefficients[90] * value; + total_sum += constraint_coefficients[90] * value; value = (column3 - oods_values[91]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow82 * oods_point)); - total_sum = total_sum + constraint_coefficients[91] * value; + total_sum += constraint_coefficients[91] * value; value = (column3 - oods_values[92]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow83 * oods_point)); - total_sum = total_sum + constraint_coefficients[92] * value; + total_sum += constraint_coefficients[92] * value; value = (column3 - oods_values[93]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow84 * oods_point)); - total_sum = total_sum + constraint_coefficients[93] * value; + total_sum += constraint_coefficients[93] * value; value = (column3 - oods_values[94]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow85 * oods_point)); - total_sum = total_sum + constraint_coefficients[94] * value; + total_sum += constraint_coefficients[94] * value; value = (column4 - oods_values[95]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[95] * value; + total_sum += constraint_coefficients[95] * value; value = (column4 - oods_values[96]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); - total_sum = total_sum + constraint_coefficients[96] * value; + total_sum += constraint_coefficients[96] * value; value = (column4 - oods_values[97]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow5 * oods_point)); - total_sum = total_sum + constraint_coefficients[97] * value; + total_sum += constraint_coefficients[97] * value; value = (column4 - oods_values[98]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow6 * oods_point)); - total_sum = total_sum + constraint_coefficients[98] * value; + total_sum += constraint_coefficients[98] * value; value = (column4 - oods_values[99]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow7 * oods_point)); - total_sum = total_sum + constraint_coefficients[99] * value; + total_sum += constraint_coefficients[99] * value; value = (column4 - oods_values[100]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow8 * oods_point)); - total_sum = total_sum + constraint_coefficients[100] * value; + total_sum += constraint_coefficients[100] * value; value = (column4 - oods_values[101]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow9 * oods_point)); - total_sum = total_sum + constraint_coefficients[101] * value; + total_sum += constraint_coefficients[101] * value; value = (column4 - oods_values[102]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow10 * oods_point)); - total_sum = total_sum + constraint_coefficients[102] * value; + total_sum += constraint_coefficients[102] * value; value = (column4 - oods_values[103]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow11 * oods_point)); - total_sum = total_sum + constraint_coefficients[103] * value; + total_sum += constraint_coefficients[103] * value; value = (column4 - oods_values[104]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow13 * oods_point)); - total_sum = total_sum + constraint_coefficients[104] * value; + total_sum += constraint_coefficients[104] * value; value = (column4 - oods_values[105]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow15 * oods_point)); - total_sum = total_sum + constraint_coefficients[105] * value; + total_sum += constraint_coefficients[105] * value; value = (column4 - oods_values[106]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow16 * oods_point)); - total_sum = total_sum + constraint_coefficients[106] * value; + total_sum += constraint_coefficients[106] * value; value = (column4 - oods_values[107]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow17 * oods_point)); - total_sum = total_sum + constraint_coefficients[107] * value; + total_sum += constraint_coefficients[107] * value; value = (column4 - oods_values[108]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow37 * oods_point)); - total_sum = total_sum + constraint_coefficients[108] * value; + total_sum += constraint_coefficients[108] * value; value = (column4 - oods_values[109]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow52 * oods_point)); - total_sum = total_sum + constraint_coefficients[109] * value; + total_sum += constraint_coefficients[109] * value; value = (column4 - oods_values[110]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow58 * oods_point)); - total_sum = total_sum + constraint_coefficients[110] * value; + total_sum += constraint_coefficients[110] * value; value = (column4 - oods_values[111]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow66 * oods_point)); - total_sum = total_sum + constraint_coefficients[111] * value; + total_sum += constraint_coefficients[111] * value; value = (column4 - oods_values[112]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow67 * oods_point)); - total_sum = total_sum + constraint_coefficients[112] * value; + total_sum += constraint_coefficients[112] * value; value = (column4 - oods_values[113]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow78 * oods_point)); - total_sum = total_sum + constraint_coefficients[113] * value; + total_sum += constraint_coefficients[113] * value; value = (column4 - oods_values[114]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow81 * oods_point)); - total_sum = total_sum + constraint_coefficients[114] * value; + total_sum += constraint_coefficients[114] * value; value = (column4 - oods_values[115]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow3 * oods_point)); - total_sum = total_sum + constraint_coefficients[115] * value; + total_sum += constraint_coefficients[115] * value; value = (column4 - oods_values[116]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow12 * oods_point)); - total_sum = total_sum + constraint_coefficients[116] * value; + total_sum += constraint_coefficients[116] * value; value = (column4 - oods_values[117]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow30 * oods_point)); - total_sum = total_sum + constraint_coefficients[117] * value; + total_sum += constraint_coefficients[117] * value; value = (column4 - oods_values[118]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow112 * oods_point)); - total_sum = total_sum + constraint_coefficients[118] * value; + total_sum += constraint_coefficients[118] * value; value = (column4 - oods_values[119]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow2 * oods_point)); - total_sum = total_sum + constraint_coefficients[119] * value; + total_sum += constraint_coefficients[119] * value; value = (column4 - oods_values[120]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow123 * oods_point)); - total_sum = total_sum + constraint_coefficients[120] * value; + total_sum += constraint_coefficients[120] * value; value = (column4 - oods_values[121]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow124 * oods_point)); - total_sum = total_sum + constraint_coefficients[121] * value; + total_sum += constraint_coefficients[121] * value; value = (column4 - oods_values[122]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow125 * oods_point)); - total_sum = total_sum + constraint_coefficients[122] * value; + total_sum += constraint_coefficients[122] * value; value = (column4 - oods_values[123]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow126 * oods_point)); - total_sum = total_sum + constraint_coefficients[123] * value; + total_sum += constraint_coefficients[123] * value; value = (column4 - oods_values[124]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow128 * oods_point)); - total_sum = total_sum + constraint_coefficients[124] * value; + total_sum += constraint_coefficients[124] * value; value = (column4 - oods_values[125]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow129 * oods_point)); - total_sum = total_sum + constraint_coefficients[125] * value; + total_sum += constraint_coefficients[125] * value; value = (column4 - oods_values[126]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow130 * oods_point)); - total_sum = total_sum + constraint_coefficients[126] * value; + total_sum += constraint_coefficients[126] * value; value = (column4 - oods_values[127]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow1 * oods_point)); - total_sum = total_sum + constraint_coefficients[127] * value; + total_sum += constraint_coefficients[127] * value; value = (column5 - oods_values[128]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[128] * value; + total_sum += constraint_coefficients[128] * value; value = (column5 - oods_values[129]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); - total_sum = total_sum + constraint_coefficients[129] * value; + total_sum += constraint_coefficients[129] * value; value = (column5 - oods_values[130]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow5 * oods_point)); - total_sum = total_sum + constraint_coefficients[130] * value; + total_sum += constraint_coefficients[130] * value; value = (column5 - oods_values[131]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow7 * oods_point)); - total_sum = total_sum + constraint_coefficients[131] * value; + total_sum += constraint_coefficients[131] * value; value = (column5 - oods_values[132]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow9 * oods_point)); - total_sum = total_sum + constraint_coefficients[132] * value; + total_sum += constraint_coefficients[132] * value; value = (column5 - oods_values[133]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow11 * oods_point)); - total_sum = total_sum + constraint_coefficients[133] * value; + total_sum += constraint_coefficients[133] * value; value = (column5 - oods_values[134]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow13 * oods_point)); - total_sum = total_sum + constraint_coefficients[134] * value; + total_sum += constraint_coefficients[134] * value; value = (column5 - oods_values[135]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow14 * oods_point)); - total_sum = total_sum + constraint_coefficients[135] * value; + total_sum += constraint_coefficients[135] * value; value = (column5 - oods_values[136]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow16 * oods_point)); - total_sum = total_sum + constraint_coefficients[136] * value; + total_sum += constraint_coefficients[136] * value; value = (column5 - oods_values[137]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow18 * oods_point)); - total_sum = total_sum + constraint_coefficients[137] * value; + total_sum += constraint_coefficients[137] * value; value = (column5 - oods_values[138]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow20 * oods_point)); - total_sum = total_sum + constraint_coefficients[138] * value; + total_sum += constraint_coefficients[138] * value; value = (column5 - oods_values[139]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow21 * oods_point)); - total_sum = total_sum + constraint_coefficients[139] * value; + total_sum += constraint_coefficients[139] * value; value = (column5 - oods_values[140]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow23 * oods_point)); - total_sum = total_sum + constraint_coefficients[140] * value; + total_sum += constraint_coefficients[140] * value; value = (column5 - oods_values[141]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow24 * oods_point)); - total_sum = total_sum + constraint_coefficients[141] * value; + total_sum += constraint_coefficients[141] * value; value = (column5 - oods_values[142]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow25 * oods_point)); - total_sum = total_sum + constraint_coefficients[142] * value; + total_sum += constraint_coefficients[142] * value; value = (column5 - oods_values[143]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow27 * oods_point)); - total_sum = total_sum + constraint_coefficients[143] * value; + total_sum += constraint_coefficients[143] * value; value = (column5 - oods_values[144]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow29 * oods_point)); - total_sum = total_sum + constraint_coefficients[144] * value; + total_sum += constraint_coefficients[144] * value; value = (column5 - oods_values[145]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow32 * oods_point)); - total_sum = total_sum + constraint_coefficients[145] * value; + total_sum += constraint_coefficients[145] * value; value = (column5 - oods_values[146]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow34 * oods_point)); - total_sum = total_sum + constraint_coefficients[146] * value; + total_sum += constraint_coefficients[146] * value; value = (column5 - oods_values[147]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow38 * oods_point)); - total_sum = total_sum + constraint_coefficients[147] * value; + total_sum += constraint_coefficients[147] * value; value = (column5 - oods_values[148]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow40 * oods_point)); - total_sum = total_sum + constraint_coefficients[148] * value; + total_sum += constraint_coefficients[148] * value; value = (column5 - oods_values[149]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow42 * oods_point)); - total_sum = total_sum + constraint_coefficients[149] * value; + total_sum += constraint_coefficients[149] * value; value = (column5 - oods_values[150]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow44 * oods_point)); - total_sum = total_sum + constraint_coefficients[150] * value; + total_sum += constraint_coefficients[150] * value; value = (column5 - oods_values[151]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow47 * oods_point)); - total_sum = total_sum + constraint_coefficients[151] * value; + total_sum += constraint_coefficients[151] * value; value = (column5 - oods_values[152]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow49 * oods_point)); - total_sum = total_sum + constraint_coefficients[152] * value; + total_sum += constraint_coefficients[152] * value; value = (column5 - oods_values[153]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow53 * oods_point)); - total_sum = total_sum + constraint_coefficients[153] * value; + total_sum += constraint_coefficients[153] * value; value = (column5 - oods_values[154]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow54 * oods_point)); - total_sum = total_sum + constraint_coefficients[154] * value; + total_sum += constraint_coefficients[154] * value; value = (column5 - oods_values[155]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow55 * oods_point)); - total_sum = total_sum + constraint_coefficients[155] * value; + total_sum += constraint_coefficients[155] * value; value = (column5 - oods_values[156]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow56 * oods_point)); - total_sum = total_sum + constraint_coefficients[156] * value; + total_sum += constraint_coefficients[156] * value; value = (column5 - oods_values[157]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow61 * oods_point)); - total_sum = total_sum + constraint_coefficients[157] * value; + total_sum += constraint_coefficients[157] * value; value = (column5 - oods_values[158]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow64 * oods_point)); - total_sum = total_sum + constraint_coefficients[158] * value; + total_sum += constraint_coefficients[158] * value; value = (column5 - oods_values[159]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow74 * oods_point)); - total_sum = total_sum + constraint_coefficients[159] * value; + total_sum += constraint_coefficients[159] * value; value = (column5 - oods_values[160]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow77 * oods_point)); - total_sum = total_sum + constraint_coefficients[160] * value; + total_sum += constraint_coefficients[160] * value; value = (column5 - oods_values[161]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow89 * oods_point)); - total_sum = total_sum + constraint_coefficients[161] * value; + total_sum += constraint_coefficients[161] * value; value = (column5 - oods_values[162]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow90 * oods_point)); - total_sum = total_sum + constraint_coefficients[162] * value; + total_sum += constraint_coefficients[162] * value; value = (column5 - oods_values[163]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow91 * oods_point)); - total_sum = total_sum + constraint_coefficients[163] * value; + total_sum += constraint_coefficients[163] * value; value = (column5 - oods_values[164]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow94 * oods_point)); - total_sum = total_sum + constraint_coefficients[164] * value; + total_sum += constraint_coefficients[164] * value; value = (column5 - oods_values[165]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow95 * oods_point)); - total_sum = total_sum + constraint_coefficients[165] * value; + total_sum += constraint_coefficients[165] * value; value = (column5 - oods_values[166]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow96 * oods_point)); - total_sum = total_sum + constraint_coefficients[166] * value; + total_sum += constraint_coefficients[166] * value; value = (column5 - oods_values[167]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow97 * oods_point)); - total_sum = total_sum + constraint_coefficients[167] * value; + total_sum += constraint_coefficients[167] * value; value = (column5 - oods_values[168]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow98 * oods_point)); - total_sum = total_sum + constraint_coefficients[168] * value; + total_sum += constraint_coefficients[168] * value; value = (column5 - oods_values[169]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow99 * oods_point)); - total_sum = total_sum + constraint_coefficients[169] * value; + total_sum += constraint_coefficients[169] * value; value = (column5 - oods_values[170]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow100 * oods_point)); - total_sum = total_sum + constraint_coefficients[170] * value; + total_sum += constraint_coefficients[170] * value; value = (column5 - oods_values[171]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow101 * oods_point)); - total_sum = total_sum + constraint_coefficients[171] * value; + total_sum += constraint_coefficients[171] * value; value = (column5 - oods_values[172]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow102 * oods_point)); - total_sum = total_sum + constraint_coefficients[172] * value; + total_sum += constraint_coefficients[172] * value; value = (column5 - oods_values[173]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow104 * oods_point)); - total_sum = total_sum + constraint_coefficients[173] * value; + total_sum += constraint_coefficients[173] * value; value = (column5 - oods_values[174]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow106 * oods_point)); - total_sum = total_sum + constraint_coefficients[174] * value; + total_sum += constraint_coefficients[174] * value; value = (column5 - oods_values[175]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow103 * oods_point)); - total_sum = total_sum + constraint_coefficients[175] * value; + total_sum += constraint_coefficients[175] * value; value = (column5 - oods_values[176]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow105 * oods_point)); - total_sum = total_sum + constraint_coefficients[176] * value; + total_sum += constraint_coefficients[176] * value; value = (column5 - oods_values[177]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow107 * oods_point)); - total_sum = total_sum + constraint_coefficients[177] * value; + total_sum += constraint_coefficients[177] * value; value = (column5 - oods_values[178]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow108 * oods_point)); - total_sum = total_sum + constraint_coefficients[178] * value; + total_sum += constraint_coefficients[178] * value; value = (column5 - oods_values[179]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow117 * oods_point)); - total_sum = total_sum + constraint_coefficients[179] * value; + total_sum += constraint_coefficients[179] * value; value = (column5 - oods_values[180]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow118 * oods_point)); - total_sum = total_sum + constraint_coefficients[180] * value; + total_sum += constraint_coefficients[180] * value; value = (column5 - oods_values[181]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow119 * oods_point)); - total_sum = total_sum + constraint_coefficients[181] * value; + total_sum += constraint_coefficients[181] * value; value = (column5 - oods_values[182]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow120 * oods_point)); - total_sum = total_sum + constraint_coefficients[182] * value; + total_sum += constraint_coefficients[182] * value; value = (column5 - oods_values[183]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow121 * oods_point)); - total_sum = total_sum + constraint_coefficients[183] * value; + total_sum += constraint_coefficients[183] * value; value = (column6 - oods_values[184]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[184] * value; + total_sum += constraint_coefficients[184] * value; value = (column6 - oods_values[185]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); - total_sum = total_sum + constraint_coefficients[185] * value; + total_sum += constraint_coefficients[185] * value; value = (column6 - oods_values[186]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow5 * oods_point)); - total_sum = total_sum + constraint_coefficients[186] * value; + total_sum += constraint_coefficients[186] * value; value = (column6 - oods_values[187]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow6 * oods_point)); - total_sum = total_sum + constraint_coefficients[187] * value; + total_sum += constraint_coefficients[187] * value; value = (column7 - oods_values[188]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow0 * oods_point)); - total_sum = total_sum + constraint_coefficients[188] * value; + total_sum += constraint_coefficients[188] * value; value = (column7 - oods_values[189]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow4 * oods_point)); - total_sum = total_sum + constraint_coefficients[189] * value; + total_sum += constraint_coefficients[189] * value; value = (column7 - oods_values[190]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow5 * oods_point)); - total_sum = total_sum + constraint_coefficients[190] * value; + total_sum += constraint_coefficients[190] * value; value = (column7 - oods_values[191]) .field_div(&NonZeroFelt::from_felt_unchecked(point - pow8 * oods_point)); - total_sum = total_sum + constraint_coefficients[191] * value; + total_sum += constraint_coefficients[191] * value; // Sum the OODS boundary constraints on the composition polynomials. let oods_point_to_deg = oods_point.pow(CONSTRAINT_DEGREE);