Speed up exp_by_const
ValarDragon dojha12@gmail.com
Mon, 08 Jun 2020 17:18:38 -0500
1 files changed,
5 insertions(+),
3 deletions(-)
jump to
M
r1cs-std/src/fields/mod.rs
→
r1cs-std/src/fields/mod.rs
@@ -242,17 +242,19 @@ &self,
mut cs: CS, exp: S, ) -> Result<Self, SynthesisError> { - let mut res = Self::one(cs.ns(|| "Alloc result"))?; + let mut res = self.clone(); let mut found_one = false; for (i, bit) in BitIterator::new(exp).enumerate() { if found_one { - res.square_in_place(cs.ns(|| format!("square for bit {:?}", i)))?; + res = res.square(cs.ns(|| format!("square for bit {:?}", i)))?; } if bit { + if found_one { + res = res.mul(cs.ns(|| format!("mul for bit {:?}", i)), self)?; + } found_one = true; - res.mul_in_place(cs.ns(|| format!("mul for bit {:?}", i)), self)?; } }