Skip to content

Commit 008ebd5

Browse files
committed
gather_first_layer_queries
1 parent c483e4c commit 008ebd5

File tree

5 files changed

+50
-3
lines changed

5 files changed

+50
-3
lines changed

Diff for: calc.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
DEFAULT_PRIME = 2**251 + 17 * 2**192 + 1
22

3-
print((pow(193456804421077096570009938751278224656090409051406060084, 193456804421077096570009938751278224656090409051406060084, DEFAULT_PRIME)))
3+
print((pow(3, DEFAULT_PRIME-2, DEFAULT_PRIME)))

Diff for: src/common/tests/test_math.cairo

+11-2
Original file line numberDiff line numberDiff line change
@@ -53,15 +53,24 @@ fn test_mul_inverse_3() {
5353
#[test]
5454
#[available_gas(9999999999)]
5555
fn test_mul_inverse_4() {
56+
let x = 3;
57+
let inv_x = mul_inverse(x);
58+
assert(inv_x == 1206167596222043737899107594365023368541035738443865566657697352045290673494, 'Invalid value');
59+
assert(x * inv_x == 1, 'Invalid value');
60+
}
61+
62+
#[test]
63+
#[available_gas(9999999999)]
64+
fn test_mul_inverse_5() {
5665
let x = 193456804421077096570009938751278224656090409051406060084;
5766
let inv_inv_x = mul_inverse(mul_inverse(x));
5867
assert(x == inv_inv_x, 'Invalid value');
5968
}
6069

6170
#[test]
6271
#[available_gas(9999999999)]
63-
fn test_mul_inverse_5() {
72+
fn test_mul_inverse_6() {
6473
let x = 19345680409051406060084;
6574
let inv_inv_x = mul_inverse(mul_inverse(x));
6675
assert(x == inv_inv_x, 'Invalid value');
67-
}
76+
}

Diff for: src/fri.cairo

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ mod fri_formula;
22
mod fri_group;
33
mod fri_layer;
44
mod fri_config;
5+
mod fri_first_layer;
56
mod fri_last_layer;
67
mod fri;
78

Diff for: src/fri/fri_first_layer.cairo

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
use core::array::SpanTrait;
2+
use core::option::OptionTrait;
3+
use core::array::ArrayTrait;
4+
use core::traits::TryInto;
5+
6+
use cairo_verifier::common::math;
7+
use cairo_verifier::fri::fri_layer::FriLayerQuery;
8+
use cairo_verifier::FIELD_GENERATOR_INV;
9+
10+
fn gather_first_layer_queries(
11+
n_queries: felt252, queries: Span<felt252>, evaluations: Span<felt252>, x_values: Span<felt252>
12+
) {
13+
let mut fri_queries = ArrayTrait::<FriLayerQuery>::new();
14+
15+
let len: u32 = n_queries.try_into().unwrap();
16+
let mut i: u32 = 0;
17+
loop {
18+
if i == len {
19+
break;
20+
}
21+
22+
// Translate the coset to the homogenous group to have simple FRI equations.
23+
let shifted_x_value = *(x_values.at(i)) * FIELD_GENERATOR_INV;
24+
25+
fri_queries
26+
.append(
27+
FriLayerQuery {
28+
index: *(queries.at(i)),
29+
y_value: *(evaluations.at(i)),
30+
x_inv_value: math::mul_inverse(shifted_x_value),
31+
}
32+
)
33+
}
34+
}

Diff for: src/lib.cairo

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
const FIELD_GENERATOR: felt252 = 3;
2+
const FIELD_GENERATOR_INV: felt252 = 1206167596222043737899107594365023368541035738443865566657697352045290673494;
3+
14
mod channel;
25
mod common;
36
mod structs;

0 commit comments

Comments
 (0)