From e25fed64cbf48c9949d5bb051fad41ff37e358c8 Mon Sep 17 00:00:00 2001 From: guipublic Date: Mon, 15 Apr 2024 11:48:10 +0000 Subject: [PATCH] fix field inversion --- acvm-repo/acvm/src/pwg/blackbox/bigint.rs | 2 +- test_programs/execution_success/bigint/src/main.nr | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/acvm-repo/acvm/src/pwg/blackbox/bigint.rs b/acvm-repo/acvm/src/pwg/blackbox/bigint.rs index f094bb1ba20..a47afa5049a 100644 --- a/acvm-repo/acvm/src/pwg/blackbox/bigint.rs +++ b/acvm-repo/acvm/src/pwg/blackbox/bigint.rs @@ -105,7 +105,7 @@ impl BigIntSolver { } BlackBoxFunc::BigIntMul => lhs * rhs, BlackBoxFunc::BigIntDiv => { - lhs * rhs.modpow(&(&modulus - BigUint::from(1_u32)), &modulus) + lhs * rhs.modpow(&(&modulus - BigUint::from(2_u32)), &modulus) } //TODO ensure that modulus is prime _ => unreachable!("ICE - bigint_op must be called for an operation"), }; diff --git a/test_programs/execution_success/bigint/src/main.nr b/test_programs/execution_success/bigint/src/main.nr index db269d63ac0..908cab8accc 100644 --- a/test_programs/execution_success/bigint/src/main.nr +++ b/test_programs/execution_success/bigint/src/main.nr @@ -10,11 +10,11 @@ fn main(mut x: [u8; 5], y: [u8; 5]) { assert(a_bytes[i] == x[i]); assert(b_bytes[i] == y[i]); } + //Regression for issue #4578 + let d = a * b; + assert(d / b == a); - let d = a * b - b; - let d1 = bigint::Secpk1Fq::from_le_bytes(597243850900842442924.to_le_bytes(10)); - assert(d1 == d); - // big_int_example(x[0], x[1]); + big_int_example(x[0], x[1]); } // docs:start:big_int_example