Skip to content

Commit 05a9fd6

Browse files
committed
Synthesizer is restored based on Ale-75, Playground is deleted from this repository. Find Playground from the repo 'tokamak-zk-evm-playground'
1 parent a19616c commit 05a9fd6

File tree

138 files changed

+4014
-13433
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

138 files changed

+4014
-13433
lines changed

packages/backend/libs/src/group_structures/mod.rs

Lines changed: 333 additions & 296 deletions
Large diffs are not rendered by default.

packages/backend/libs/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
pub mod math;
1+
pub mod polynomials;
2+
pub mod vectors;
23
pub mod tools;
34
pub mod group_structures;
45
pub const s_max: usize = 256;

packages/backend/libs/src/tests.rs

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use std::cmp;
99
#[cfg(test)]
1010
mod tests {
1111
use super::*;
12-
use crate::math::{DensePolynomialExt, BivariatePolynomial};
12+
use crate::polynomials::{DensePolynomialExt, BivariatePolynomial};
1313

1414
// Helper function: Create a simple 2D polynomial
1515
fn create_simple_polynomial() -> DensePolynomialExt {
@@ -460,4 +460,46 @@ mod tests {
460460
}
461461

462462
// More tests can be added as needed
463+
}
464+
465+
#[cfg(test)]
466+
mod tests_vectors {
467+
use icicle_bls12_381::curve::{ScalarField, ScalarCfg};
468+
use icicle_core::traits::{Arithmetic, FieldConfig, FieldImpl, GenerateRandom};
469+
use icicle_runtime::memory::{HostOrDeviceSlice, HostSlice};
470+
use std::cmp;
471+
472+
use crate::vectors::{outer_product_two_vecs, point_mul_two_vecs};
473+
474+
macro_rules! scalar_vec {
475+
( $( $x:expr ),* ) => {
476+
vec![
477+
$( ScalarField::from_u32($x) ),*
478+
].into_boxed_slice()
479+
};
480+
}
481+
482+
#[test]
483+
fn test_point_mul_two_vecs() {
484+
let vec1 = scalar_vec![1, 2, 3];
485+
let vec2 = scalar_vec![4, 5];
486+
let vec3 = scalar_vec![2, 0, 2, 4];
487+
488+
let mut res = vec![ScalarField::zero(); 6].into_boxed_slice();
489+
outer_product_two_vecs(&vec1, &vec2, &mut res);
490+
println!("res : {:?}", res);
491+
492+
let mut res = vec![ScalarField::zero(); 6].into_boxed_slice();
493+
outer_product_two_vecs(&vec2, &vec1, &mut res);
494+
println!("res : {:?}", res);
495+
496+
let mut res = vec![ScalarField::zero(); 12].into_boxed_slice();
497+
outer_product_two_vecs(&vec1, &vec3, &mut res);
498+
println!("res : {:?}", res);
499+
500+
let mut res = vec![ScalarField::zero(); 8].into_boxed_slice();
501+
outer_product_two_vecs(&vec3, &vec2, &mut res);
502+
println!("res : {:?}", res);
503+
504+
}
463505
}

packages/backend/libs/src/tools/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use super::math::{DensePolynomialExt, BivariatePolynomial};
1+
use super::polynomials::{DensePolynomialExt, BivariatePolynomial};
22

33
use icicle_bls12_381::curve::{ScalarField, ScalarCfg};
44
use icicle_bls12_381::polynomials::DensePolynomial;
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
use icicle_core::vec_ops::{VecOps, VecOpsConfig};
2+
use icicle_bls12_381::curve::{ScalarCfg, ScalarField};
3+
use icicle_core::traits::{Arithmetic, FieldConfig, FieldImpl, GenerateRandom};
4+
use icicle_runtime::memory::{HostOrDeviceSlice, HostSlice, DeviceSlice, DeviceVec};
5+
6+
pub fn point_mul_two_vecs(lhs: &Box<[ScalarField]>, rhs: &Box<[ScalarField]>, res: &mut Box<[ScalarField]>){
7+
if lhs.len() != rhs.len() || lhs.len() != res.len() {
8+
panic!("Mismatch of sizes of vectors to be pointwise-multiplied");
9+
}
10+
let vec_ops_cfg = VecOpsConfig::default();
11+
let lhs_buff = HostSlice::from_slice(lhs);
12+
let rhs_buff = HostSlice::from_slice(rhs);
13+
let res_buff = HostSlice::from_mut_slice(res);
14+
ScalarCfg::mul(lhs_buff, rhs_buff, res_buff, &vec_ops_cfg).unwrap();
15+
}
16+
17+
pub fn outer_product_two_vecs(col_vec: &Box<[ScalarField]>, row_vec: &Box<[ScalarField]>, res: &mut Box<[ScalarField]>){
18+
if col_vec.len() * row_vec.len() != res.len() {
19+
panic!("Mismatch of sizes of vectors to be outer-producted");
20+
}
21+
22+
let col_len = col_vec.len();
23+
let row_len = row_vec.len();
24+
25+
let vec_ops_cfg = VecOpsConfig::default();
26+
let min_len = std::cmp::min(row_len, col_len);
27+
let max_len = std::cmp::max(row_len, col_len);
28+
let max_dir = if max_len == row_len {true } else {false};
29+
30+
let base_vec = if max_dir { row_vec } else { col_vec };
31+
32+
let mut res_untransposed = vec![ScalarField::zero(); res.len()].into_boxed_slice();
33+
for ind in 0 .. min_len {
34+
let scaler = if max_dir {col_vec[ind]} else {row_vec[ind]};
35+
let scaler_vec = vec![scaler; max_len].into_boxed_slice();
36+
let mut res_vec = vec![ScalarField::zero(); max_len].into_boxed_slice();
37+
ScalarCfg::mul(
38+
HostSlice::from_slice(&scaler_vec),
39+
HostSlice::from_slice(&base_vec),
40+
HostSlice::from_mut_slice(&mut res_vec),
41+
&vec_ops_cfg
42+
).unwrap();
43+
res_untransposed[ind * max_len .. (ind + 1) * max_len].copy_from_slice(&res_vec);
44+
}
45+
46+
if !max_dir {
47+
let res_untranposed_buf = HostSlice::from_slice(&res_untransposed);
48+
let res_buf = HostSlice::from_mut_slice(res);
49+
ScalarCfg::transpose(
50+
res_untranposed_buf,
51+
min_len as u32,
52+
max_len as u32,
53+
res_buf,
54+
&vec_ops_cfg).unwrap();
55+
} else {
56+
res.clone_from(&res_untransposed);
57+
}
58+
59+
}

packages/frontend/qap-compiler/package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/frontend/qap-compiler/scripts/compile.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
#names=("bufferPrvInPubOut" "bufferPubInPrvOut" "bufferPrvInPrvOut" "ADD" "MUL" "SUB" "DIV" "SDIV" "MOD" "SMOD" "ADDMOD" "MULMOD" "EQ" "ISZERO" "SHL" "SHR" "LT" "GT" "NOT" "BYTE" "SAR" "SIGNEXTEND" "SLT" "SGT" "AND" "OR" "XOR" "DecToBit" "SubEXP")
2-
names=("ADD" "MUL" "SUB")
1+
names=("bufferPrvInPubOut" "bufferPubInPrvOut" "bufferPrvInPrvOut" "ADD" "MUL" "SUB" "DIV" "SDIV" "MOD" "SMOD" "ADDMOD" "MULMOD" "EQ" "ISZERO" "SHL" "SHR" "LT" "GT" "NOT" "BYTE" "SAR" "SIGNEXTEND" "SLT" "SGT" "AND" "OR" "XOR" "DecToBit" "SubEXP")
2+
#names=("ADD" "MUL" "SUB")
33
CURVE_NAME="bls12381"
44

55
# get the directory of the script

packages/frontend/qap-compiler/subcircuits/library/globalWireList.ts

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)