Skip to content

Commit 2cd3efe

Browse files
committed
random linear combination test
1 parent a0b0055 commit 2cd3efe

File tree

1 file changed

+23
-11
lines changed

1 file changed

+23
-11
lines changed

gkr/src/poly_commit/orion_test.rs

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,17 @@ fn gen_msg_codeword<F: Field>(
1717
(random_msg0, codeword0)
1818
}
1919

20-
fn vec_add<F: Field>(vec0: Vec<F>, vec1: Vec<F>) -> Vec<F> {
21-
assert_eq!(vec0.len(), vec1.len());
20+
fn linear_combine<F: Field>(vec_s: &Vec<Vec<F>>, scalars: &[F]) -> Vec<F> {
21+
assert_eq!(vec_s.len(), scalars.len());
2222

23-
let mut out = vec![F::ZERO; vec0.len()];
23+
let mut out = vec![F::ZERO; vec_s[0].len()];
2424

25-
(0..vec0.len()).for_each(|i| out[i] = vec0[i] + vec1[i]);
25+
scalars.iter().enumerate().for_each(|(i, scalar)| {
26+
vec_s[i]
27+
.iter()
28+
.zip(out.iter_mut())
29+
.for_each(|(v_ij, o_j)| *o_j += *v_ij * scalar);
30+
});
2631

2732
out
2833
}
@@ -49,16 +54,23 @@ fn test_orion_code_generic<F: Field>() {
4954

5055
let orion_code = OrionCode::<F>::new(example_orion_code_parameter, &mut rng);
5156

52-
// TODO: linearity to random linear combination over vector spaces
53-
let (msg0, codeword0) = gen_msg_codeword(&orion_code, &mut rng);
54-
let (msg1, codeword1) = gen_msg_codeword(&orion_code, &mut rng);
57+
// TODO: 128 scalars
58+
let linear_combine_size = 128;
5559

56-
let msg_sum = vec_add(msg0, msg1);
57-
let codeword_sum = vec_add(codeword0, codeword1);
60+
let random_scalrs: Vec<_> = (0..linear_combine_size)
61+
.map(|_| F::random_unsafe(&mut rng))
62+
.collect();
63+
64+
let (msgs, codewords): (Vec<_>, Vec<_>) = (0..linear_combine_size)
65+
.map(|_| gen_msg_codeword(&orion_code, &mut rng))
66+
.unzip();
67+
68+
let msg_linear_combined = linear_combine(&msgs, &random_scalrs);
69+
let codeword_linear_combined = linear_combine(&codewords, &random_scalrs);
5870

59-
let codeword_computed = orion_code.encode(&msg_sum).unwrap();
71+
let codeword_computed = orion_code.encode(&msg_linear_combined).unwrap();
6072

61-
assert_eq!(codeword_sum, codeword_computed);
73+
assert_eq!(codeword_linear_combined, codeword_computed);
6274
}
6375

6476
#[test]

0 commit comments

Comments
 (0)