From fe425d0893ff93a936bb3e8bbbac771033074bdb Mon Sep 17 00:00:00 2001 From: liorgold2 <38202661+liorgold2@users.noreply.github.com> Date: Thu, 13 Apr 2023 16:57:10 +0300 Subject: [PATCH] Fix a bug in dict_squash (wrong constants). (#2771) --- crates/cairo-lang-runner/src/casm_run/mod.rs | 6 +++--- .../src/invocations/felt252_dict.rs | 6 +++--- .../cairo-lang-starknet/test_data/test_contract.casm.json | 4 ++-- tests/e2e_test_data/libfuncs/felt252_dict | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/crates/cairo-lang-runner/src/casm_run/mod.rs b/crates/cairo-lang-runner/src/casm_run/mod.rs index 9f0828d1bc6..a723c0a5c13 100644 --- a/crates/cairo-lang-runner/src/casm_run/mod.rs +++ b/crates/cairo-lang-runner/src/casm_run/mod.rs @@ -670,10 +670,10 @@ impl HintProcessor for CairoHintProcessor { lengths_and_indices.sort(); exec_scopes .assign_or_update_variable("excluded_arc", Box::new(lengths_and_indices[2].1)); - // ceil((PRIME / 2) / 2 ** 128). - let prime_over_2_high = 3544607988759775765608368578435044694_u128; // ceil((PRIME / 3) / 2 ** 128). - let prime_over_3_high = 5316911983139663648412552867652567041_u128; + let prime_over_3_high = 3544607988759775765608368578435044694_u128; + // ceil((PRIME / 2) / 2 ** 128). + let prime_over_2_high = 5316911983139663648412552867652567041_u128; let (range_check_base, range_check_offset) = extract_buffer(range_check_ptr); let range_check_ptr = get_ptr(vm, range_check_base, &range_check_offset)?; vm.insert_value( diff --git a/crates/cairo-lang-sierra-to-casm/src/invocations/felt252_dict.rs b/crates/cairo-lang-sierra-to-casm/src/invocations/felt252_dict.rs index f3c48c009b8..bfab5255596 100644 --- a/crates/cairo-lang-sierra-to-casm/src/invocations/felt252_dict.rs +++ b/crates/cairo-lang-sierra-to-casm/src/invocations/felt252_dict.rs @@ -798,10 +798,10 @@ fn validate_felt252_le(casm_builder: &mut CasmBuilder, range_check: Var, a: Var, casm_build_extend! {casm_builder, const one = 1; const minus_1 = -1; - // ceil((PRIME / 2) / 2 ** 128). - const prime_over_2_high = 3544607988759775765608368578435044694_u128; // ceil((PRIME / 3) / 2 ** 128). - const prime_over_3_high = 5316911983139663648412552867652567041_u128; + const prime_over_3_high = 3544607988759775765608368578435044694_u128; + // ceil((PRIME / 2) / 2 ** 128). + const prime_over_2_high = 5316911983139663648412552867652567041_u128; // Guess two arc lengths. hint AssertLeFindSmallArcs {range_check_ptr: range_check, a: a, b: b} into {}; // Calculate the arc lengths. diff --git a/crates/cairo-lang-starknet/test_data/test_contract.casm.json b/crates/cairo-lang-starknet/test_data/test_contract.casm.json index 8fb2e4b9391..3d3defcc92b 100644 --- a/crates/cairo-lang-starknet/test_data/test_contract.casm.json +++ b/crates/cairo-lang-starknet/test_data/test_contract.casm.json @@ -1550,12 +1550,12 @@ "0x480080017ffc8000", "0x480080027ffb8000", "0x484480017fff8000", - "0x4000000000000088000000000000001", + "0x2aaaaaaaaaaaab05555555555555556", "0x48307fff7ffd8000", "0x480080037ff88000", "0x480080047ff78000", "0x484480017fff8000", - "0x2aaaaaaaaaaaab05555555555555556", + "0x4000000000000088000000000000001", "0x48307fff7ffd8000", "0x48307fff7ffb8000", "0x48507ffe7ffa8000", diff --git a/tests/e2e_test_data/libfuncs/felt252_dict b/tests/e2e_test_data/libfuncs/felt252_dict index 1932a4e937c..3b22d815c0a 100644 --- a/tests/e2e_test_data/libfuncs/felt252_dict +++ b/tests/e2e_test_data/libfuncs/felt252_dict @@ -440,11 +440,11 @@ memory[memory[ap + -4] + 1 + 3], memory[memory[ap + -4] + 1 + 2] = ( %} [ap + 0] = [[ap + -4] + 1], ap++; [ap + 0] = [[ap + -5] + 2], ap++; -[ap + 0] = [ap + -1] * 5316911983139663648412552867652567041, ap++; +[ap + 0] = [ap + -1] * 3544607988759775765608368578435044694, ap++; [ap + 0] = [ap + -3] + [ap + -1], ap++; [ap + 0] = [[ap + -8] + 3], ap++; [ap + 0] = [[ap + -9] + 4], ap++; -[ap + 0] = [ap + -1] * 3544607988759775765608368578435044694, ap++; +[ap + 0] = [ap + -1] * 5316911983139663648412552867652567041, ap++; [ap + 0] = [ap + -3] + [ap + -1], ap++; [ap + 0] = [ap + -5] + [ap + -1], ap++; [ap + 0] = [ap + -6] * [ap + -2], ap++;