diff --git a/air-script/tests/functions/functions_complex.air b/air-script/tests/functions/functions_complex.air index f4b0607f..192ed62d 100644 --- a/air-script/tests/functions/functions_complex.air +++ b/air-script/tests/functions/functions_complex.air @@ -35,7 +35,7 @@ boundary_constraints { integrity_constraints { # let val = $alpha[0] + v let f = get_multiplicity_flags(s0, s1) - let z = v^4 * f[3] + v^2 * f[2] + v * f[1] + f[0] + let z = v^7 * f[3] + v^2 * f[2] + v * f[1] + f[0] # let folded_value = fold_scalar_and_vec(v, b) enf b_range' = b_range * (z * t - t + 1) # enf b_range' = b_range * 2 diff --git a/air-script/tests/functions/functions_complex.masm b/air-script/tests/functions/functions_complex.masm index 93dd497d..7f10fa8e 100644 --- a/air-script/tests/functions/functions_complex.masm +++ b/air-script/tests/functions/functions_complex.masm @@ -79,35 +79,7 @@ proc.compute_integrity_constraints # Multiply by the composition coefficient padw mem_loadw.4294900200 movdn.3 movdn.3 drop drop ext2mul # integrity constraint 0 for aux - padw mem_loadw.4294900072 drop drop padw mem_loadw.4294900072 movdn.3 movdn.3 drop drop padw mem_loadw.4294900003 movdn.3 movdn.3 drop drop - # push the accumulator to the stack - push.1 movdn.2 push.0 movdn.2 - # => [b1, b0, r1, r0, ...] - # square 2 times - dup.1 dup.1 ext2mul dup.1 dup.1 ext2mul - # multiply - dup.1 dup.1 movdn.5 movdn.5 - # => [b1, b0, r1, r0, b1, b0, ...] (4 cycles) - ext2mul movdn.3 movdn.3 - # => [b1, b0, r1', r0', ...] (5 cycles) - # clean stack - drop drop - # => [r1, r0, ...] (2 cycles) - padw mem_loadw.4294900001 movdn.3 movdn.3 drop drop padw mem_loadw.4294900002 movdn.3 movdn.3 drop drop ext2mul ext2mul padw mem_loadw.4294900003 movdn.3 movdn.3 drop drop - # push the accumulator to the stack - push.1 movdn.2 push.0 movdn.2 - # => [b1, b0, r1, r0, ...] - # square 1 times - dup.1 dup.1 ext2mul - # multiply - dup.1 dup.1 movdn.5 movdn.5 - # => [b1, b0, r1, r0, b1, b0, ...] (4 cycles) - ext2mul movdn.3 movdn.3 - # => [b1, b0, r1', r0', ...] (5 cycles) - # clean stack - drop drop - # => [r1, r0, ...] (2 cycles) - push.1 push.0 padw mem_loadw.4294900001 movdn.3 movdn.3 drop drop ext2sub padw mem_loadw.4294900002 movdn.3 movdn.3 drop drop ext2mul ext2mul ext2add padw mem_loadw.4294900003 movdn.3 movdn.3 drop drop padw mem_loadw.4294900001 movdn.3 movdn.3 drop drop push.1 push.0 padw mem_loadw.4294900002 movdn.3 movdn.3 drop drop ext2sub ext2mul ext2mul ext2add push.1 push.0 padw mem_loadw.4294900001 movdn.3 movdn.3 drop drop ext2sub push.1 push.0 padw mem_loadw.4294900002 movdn.3 movdn.3 drop drop ext2sub ext2mul ext2add padw mem_loadw.4294900000 movdn.3 movdn.3 drop drop ext2mul padw mem_loadw.4294900000 movdn.3 movdn.3 drop drop ext2sub push.1 push.0 ext2add ext2mul ext2sub + padw mem_loadw.4294900072 drop drop padw mem_loadw.4294900072 movdn.3 movdn.3 drop drop padw mem_loadw.4294900003 movdn.3 movdn.3 drop drop padw mem_loadw.4294900003 movdn.3 movdn.3 drop drop padw mem_loadw.4294900003 movdn.3 movdn.3 drop drop ext2mul padw mem_loadw.4294900003 movdn.3 movdn.3 drop drop padw mem_loadw.4294900003 movdn.3 movdn.3 drop drop ext2mul padw mem_loadw.4294900003 movdn.3 movdn.3 drop drop padw mem_loadw.4294900003 movdn.3 movdn.3 drop drop ext2mul ext2mul ext2mul ext2mul padw mem_loadw.4294900001 movdn.3 movdn.3 drop drop padw mem_loadw.4294900002 movdn.3 movdn.3 drop drop ext2mul ext2mul padw mem_loadw.4294900003 movdn.3 movdn.3 drop drop padw mem_loadw.4294900003 movdn.3 movdn.3 drop drop ext2mul push.1 push.0 padw mem_loadw.4294900001 movdn.3 movdn.3 drop drop ext2sub padw mem_loadw.4294900002 movdn.3 movdn.3 drop drop ext2mul ext2mul ext2add padw mem_loadw.4294900003 movdn.3 movdn.3 drop drop padw mem_loadw.4294900001 movdn.3 movdn.3 drop drop push.1 push.0 padw mem_loadw.4294900002 movdn.3 movdn.3 drop drop ext2sub ext2mul ext2mul ext2add push.1 push.0 padw mem_loadw.4294900001 movdn.3 movdn.3 drop drop ext2sub push.1 push.0 padw mem_loadw.4294900002 movdn.3 movdn.3 drop drop ext2sub ext2mul ext2add padw mem_loadw.4294900000 movdn.3 movdn.3 drop drop ext2mul padw mem_loadw.4294900000 movdn.3 movdn.3 drop drop ext2sub push.1 push.0 ext2add ext2mul ext2sub # Multiply by the composition coefficient padw mem_loadw.4294900200 drop drop ext2mul end # END PROC compute_integrity_constraints diff --git a/air-script/tests/functions/functions_complex.rs b/air-script/tests/functions/functions_complex.rs index baa2cad5..8d9b745e 100644 --- a/air-script/tests/functions/functions_complex.rs +++ b/air-script/tests/functions/functions_complex.rs @@ -41,7 +41,7 @@ impl Air for FunctionsAir { fn new(trace_info: TraceInfo, public_inputs: PublicInputs, options: WinterProofOptions) -> Self { let main_degrees = vec![TransitionConstraintDegree::new(1)]; - let aux_degrees = vec![TransitionConstraintDegree::new(8)]; + let aux_degrees = vec![TransitionConstraintDegree::new(11)]; let num_main_assertions = 1; let num_aux_assertions = 0; @@ -86,6 +86,6 @@ impl Air for FunctionsAir { let main_next = main_frame.next(); let aux_current = aux_frame.current(); let aux_next = aux_frame.next(); - result[0] = aux_next[0] - aux_current[0] * ((E::from(main_current[3]).exp(E::PositiveInteger::from(4_u64)) * E::from(main_current[1]) * E::from(main_current[2]) + E::from(main_current[3]).exp(E::PositiveInteger::from(2_u64)) * (E::ONE - E::from(main_current[1])) * E::from(main_current[2]) + E::from(main_current[3]) * E::from(main_current[1]) * (E::ONE - E::from(main_current[2])) + (E::ONE - E::from(main_current[1])) * (E::ONE - E::from(main_current[2]))) * E::from(main_current[0]) - E::from(main_current[0]) + E::ONE); + result[0] = aux_next[0] - aux_current[0] * ((E::from(main_current[3]) * E::from(main_current[3]) * E::from(main_current[3]) * E::from(main_current[3]) * E::from(main_current[3]) * E::from(main_current[3]) * E::from(main_current[3]) * E::from(main_current[1]) * E::from(main_current[2]) + E::from(main_current[3]) * E::from(main_current[3]) * (E::ONE - E::from(main_current[1])) * E::from(main_current[2]) + E::from(main_current[3]) * E::from(main_current[1]) * (E::ONE - E::from(main_current[2])) + (E::ONE - E::from(main_current[1])) * (E::ONE - E::from(main_current[2]))) * E::from(main_current[0]) - E::from(main_current[0]) + E::ONE); } } \ No newline at end of file