diff --git a/Cargo.lock b/Cargo.lock index 14c7c3d5..0b96c9d2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -393,9 +393,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -412,9 +412,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" @@ -722,9 +722,9 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" dependencies = [ "adler2", ] @@ -969,9 +969,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ "bitflags", ] @@ -1058,24 +1058,24 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "semver" -version = "1.0.23" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" [[package]] name = "serde" -version = "1.0.215" +version = "1.0.216" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" +checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.215" +version = "1.0.216" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" +checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" dependencies = [ "proc-macro2", "quote", @@ -1137,7 +1137,6 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "stark-rings" version = "0.0.1-alpha" -source = "git+ssh://git@github.com/NethermindEth/stark-rings.git?branch=main#6db62a87790910f67630eab2772dc585fcf21ad9" dependencies = [ "ark-crypto-primitives", "ark-ff", @@ -1160,7 +1159,6 @@ dependencies = [ [[package]] name = "stark-rings-linalg" version = "0.0.1-alpha" -source = "git+ssh://git@github.com/NethermindEth/stark-rings.git?branch=main#6db62a87790910f67630eab2772dc585fcf21ad9" dependencies = [ "ark-ff", "ark-serialize", @@ -1177,7 +1175,6 @@ dependencies = [ [[package]] name = "stark-rings-poly" version = "0.0.1-alpha" -source = "git+ssh://git@github.com/NethermindEth/stark-rings.git?branch=main#6db62a87790910f67630eab2772dc585fcf21ad9" dependencies = [ "ark-ff", "ark-serialize", @@ -1221,18 +1218,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.6" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec2a1820ebd077e2b90c4df007bebf344cd394098a13c563957d0afc83ea47" +checksum = "08f5383f3e0071702bf93ab5ee99b52d26936be9dedd9413067cbdcddcb6141a" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.6" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d65750cab40f4ff1929fb1ba509e9914eb756131cef4210da8d5d700d26f6312" +checksum = "f2f357fcec90b3caef6623a099691be676d033b40a058ac95d2a6ade6fa0c943" dependencies = [ "proc-macro2", "quote", diff --git a/latticefold/src/arith.rs b/latticefold/src/arith.rs index e69f82fa..666bfcb5 100644 --- a/latticefold/src/arith.rs +++ b/latticefold/src/arith.rs @@ -274,13 +274,11 @@ impl Witness { fn get_fhat(f: &[NTT::CoefficientRepresentation]) -> Vec> { let num_vars = log2(f.len().next_power_of_two()) as usize; - let mut fhat = vec![ - DenseMultilinearExtension::from_evaluations_vec( - num_vars, - vec![NTT::zero(); f.len().next_power_of_two()] - ); - NTT::CoefficientRepresentation::dimension() / NTT::dimension() - ]; + let mut fhat = + vec![ + DenseMultilinearExtension::from_evaluations_vec(num_vars, Vec::::new()); + NTT::CoefficientRepresentation::dimension() / NTT::dimension() + ]; for (i, f_i) in f.iter().enumerate() { for (j, coeff_chunk_j) in f_i.coeffs().chunks(NTT::dimension()).enumerate() { @@ -293,6 +291,9 @@ impl Witness { } } + // Make any possible MLEs smaller + fhat.iter_mut().for_each(|mle| mle.truncate_lnze()); + fhat } diff --git a/latticefold/src/nifs/decomposition/tests/mod.rs b/latticefold/src/nifs/decomposition/tests/mod.rs index 1987674c..3191f8c0 100644 --- a/latticefold/src/nifs/decomposition/tests/mod.rs +++ b/latticefold/src/nifs/decomposition/tests/mod.rs @@ -64,7 +64,9 @@ where let Mz_mles: Vec> = ccs .M .iter() - .map(|M| DenseMultilinearExtension::from_slice(log_m, &mat_vec_mul(M, &z).unwrap())) + .map(|M| { + DenseMultilinearExtension::from_evaluations_vec(log_m, mat_vec_mul(M, &z).unwrap()) + }) .collect(); let u = compute_u(&Mz_mles, &r).unwrap(); diff --git a/latticefold/src/nifs/linearization/tests/mod.rs b/latticefold/src/nifs/linearization/tests/mod.rs index f07c9409..2973720f 100644 --- a/latticefold/src/nifs/linearization/tests/mod.rs +++ b/latticefold/src/nifs/linearization/tests/mod.rs @@ -211,7 +211,9 @@ fn test_compute_u() { let expected_Mz_mles: Vec> = ccs .M .iter() - .map(|M| DenseMultilinearExtension::from_slice(ccs.s, &mat_vec_mul(M, &z_ccs).unwrap())) + .map(|M| { + DenseMultilinearExtension::from_evaluations_vec(ccs.s, mat_vec_mul(M, &z_ccs).unwrap()) + }) .collect(); let expected_u = compute_u(&expected_Mz_mles, &point_r).unwrap(); diff --git a/latticefold/src/utils/mle_helpers.rs b/latticefold/src/utils/mle_helpers.rs index 3143b63a..6e3ec15c 100644 --- a/latticefold/src/utils/mle_helpers.rs +++ b/latticefold/src/utils/mle_helpers.rs @@ -46,9 +46,8 @@ impl Evaluate for &[R] { impl Evaluate for &DenseMultilinearExtension { fn evaluate(self, point: &[R]) -> Result { - DenseMultilinearExtension::::evaluate(self, point).ok_or( - MleEvaluationError::IncorrectLength(point.len(), self.evaluations.len()), - ) + DenseMultilinearExtension::::evaluate(self, point) + .ok_or(MleEvaluationError::IncorrectLength(point.len(), self.elen)) } } @@ -107,7 +106,7 @@ where if 1 << n_vars < m.len() { Err(MleEvaluationError::IncorrectLength(1 << n_vars, m.len()).into()) } else { - Ok(DenseMultilinearExtension::from_slice(n_vars, &m)) + Ok(DenseMultilinearExtension::from_evaluations_vec(n_vars, m)) } }) .collect::>() @@ -130,7 +129,7 @@ where if 1 << n_vars < m.len() { Err(MleEvaluationError::IncorrectLength(1 << n_vars, m.len()).into()) } else { - Ok(DenseMultilinearExtension::from_slice(n_vars, &m)) + Ok(DenseMultilinearExtension::from_evaluations_vec(n_vars, m)) } }) .collect::>()