mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-08 00:33:06 +00:00
arithmetic_u32::tests: Extract get_wires() from test_gate_constraint().
Use F::from_noncanonical_u64 for addend, so that we can reuse get_wires in our canonicity check test.
This commit is contained in:
parent
58889e7649
commit
508d478872
@ -347,8 +347,10 @@ mod tests {
|
||||
use plonky2::gates::gate::Gate;
|
||||
use plonky2::gates::gate_testing::{test_eval_fns, test_low_degree};
|
||||
use plonky2::hash::hash_types::HashOut;
|
||||
use plonky2::hash::hash_types::RichField;
|
||||
use plonky2::plonk::config::{GenericConfig, PoseidonGoldilocksConfig};
|
||||
use plonky2::plonk::vars::EvaluationVars;
|
||||
use plonky2_field::extension::Extendable;
|
||||
use plonky2_field::goldilocks_field::GoldilocksField;
|
||||
use plonky2_field::types::Field;
|
||||
use rand::Rng;
|
||||
@ -374,15 +376,12 @@ mod tests {
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_gate_constraint() {
|
||||
const D: usize = 2;
|
||||
type C = PoseidonGoldilocksConfig;
|
||||
type F = <C as GenericConfig<D>>::F;
|
||||
type FF = <C as GenericConfig<D>>::FE;
|
||||
const NUM_U32_ARITHMETIC_OPS: usize = 3;
|
||||
|
||||
fn get_wires(
|
||||
fn get_wires<
|
||||
F: RichField + Extendable<D>,
|
||||
FF: From<F>,
|
||||
const D: usize,
|
||||
const NUM_U32_ARITHMETIC_OPS: usize,
|
||||
>(
|
||||
multiplicands_0: Vec<u64>,
|
||||
multiplicands_1: Vec<u64>,
|
||||
addends: Vec<u64>,
|
||||
@ -414,7 +413,7 @@ mod tests {
|
||||
|
||||
v0.push(F::from_canonical_u64(m0));
|
||||
v0.push(F::from_canonical_u64(m1));
|
||||
v0.push(F::from_canonical_u64(a));
|
||||
v0.push(F::from_noncanonical_u64(a));
|
||||
v0.push(F::from_canonical_u64(output_low));
|
||||
v0.push(F::from_canonical_u64(output_high));
|
||||
v1.append(&mut output_limbs_f);
|
||||
@ -423,6 +422,14 @@ mod tests {
|
||||
v0.iter().chain(v1.iter()).map(|&x| x.into()).collect()
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_gate_constraint() {
|
||||
const D: usize = 2;
|
||||
type C = PoseidonGoldilocksConfig;
|
||||
type F = <C as GenericConfig<D>>::F;
|
||||
type FF = <C as GenericConfig<D>>::FE;
|
||||
const NUM_U32_ARITHMETIC_OPS: usize = 3;
|
||||
|
||||
let mut rng = rand::thread_rng();
|
||||
let multiplicands_0: Vec<_> = (0..NUM_U32_ARITHMETIC_OPS)
|
||||
.map(|_| rng.gen::<u32>() as u64)
|
||||
@ -441,7 +448,11 @@ mod tests {
|
||||
|
||||
let vars = EvaluationVars {
|
||||
local_constants: &[],
|
||||
local_wires: &get_wires(multiplicands_0, multiplicands_1, addends),
|
||||
local_wires: &get_wires::<F, FF, D, NUM_U32_ARITHMETIC_OPS>(
|
||||
multiplicands_0,
|
||||
multiplicands_1,
|
||||
addends,
|
||||
),
|
||||
public_inputs_hash: &HashOut::rand(),
|
||||
};
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user