From 41af3faf4900c5f8c6a8dac4c687f009556c394d Mon Sep 17 00:00:00 2001 From: "sm.wu" Date: Tue, 20 Jan 2026 21:38:50 +0800 Subject: [PATCH] deterministic monomial term via btreemap --- crates/multilinear_extensions/src/expression/monomial.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/crates/multilinear_extensions/src/expression/monomial.rs b/crates/multilinear_extensions/src/expression/monomial.rs index 0e40792..32c3092 100644 --- a/crates/multilinear_extensions/src/expression/monomial.rs +++ b/crates/multilinear_extensions/src/expression/monomial.rs @@ -5,7 +5,7 @@ use serde::{Deserialize, Serialize}; use super::Expression; use Expression::*; use p3::field::FieldAlgebra; -use std::{fmt::Display, iter::Sum}; +use std::{collections::BTreeMap, fmt::Display, iter::Sum}; impl Expression { pub fn get_monomial_terms(&self) -> Vec, Expression>> { @@ -71,7 +71,10 @@ impl Expression { terms .into_iter() .map(|Term { scalar, product }| (product, scalar)) - .into_group_map() + .fold(BTreeMap::new(), |mut acc, (product, scalar)| { + acc.entry(product).or_insert_with(Vec::new).push(scalar); + acc + }) .into_iter() .map(|(product, scalar)| Term { scalar: scalar.into_iter().sum(),