only reduce to bits if it's needed
This commit is contained in:
parent
6dab8a4bc6
commit
de3e09c62e
1 changed files with 24 additions and 20 deletions
|
@ -1603,29 +1603,33 @@ impl<'ast, T: Field> Flattener<'ast, T> {
|
|||
|
||||
let res = match should_reduce {
|
||||
true => {
|
||||
let bits = self.get_bits(
|
||||
res.clone(),
|
||||
actual_bitwidth,
|
||||
target_bitwidth,
|
||||
statements_flattened,
|
||||
);
|
||||
if actual_bitwidth != target_bitwidth.to_usize() {
|
||||
let bits = self.get_bits(
|
||||
res.clone(),
|
||||
actual_bitwidth,
|
||||
target_bitwidth,
|
||||
statements_flattened,
|
||||
);
|
||||
|
||||
let field = bits.iter().enumerate().fold(
|
||||
FlatExpression::Number(T::from(0)),
|
||||
|acc, (index, bit)| {
|
||||
FlatExpression::Add(
|
||||
box acc,
|
||||
box FlatExpression::Mult(
|
||||
box FlatExpression::Number(
|
||||
T::from(2).pow(target_bitwidth.to_usize() - index - 1),
|
||||
let field = bits.iter().enumerate().fold(
|
||||
FlatExpression::Number(T::from(0)),
|
||||
|acc, (index, bit)| {
|
||||
FlatExpression::Add(
|
||||
box acc,
|
||||
box FlatExpression::Mult(
|
||||
box FlatExpression::Number(
|
||||
T::from(2).pow(target_bitwidth.to_usize() - index - 1),
|
||||
),
|
||||
box bit.clone().into(),
|
||||
),
|
||||
box bit.clone().into(),
|
||||
),
|
||||
)
|
||||
},
|
||||
);
|
||||
)
|
||||
},
|
||||
);
|
||||
|
||||
FlatUExpression::with_bits(bits).field(field)
|
||||
FlatUExpression::with_bits(bits).field(field)
|
||||
} else {
|
||||
res
|
||||
}
|
||||
}
|
||||
false => res,
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue