diff --git a/src/field/extension_field/target.rs b/src/field/extension_field/target.rs index 712c6103..c00470ac 100644 --- a/src/field/extension_field/target.rs +++ b/src/field/extension_field/target.rs @@ -19,15 +19,14 @@ impl ExtensionTarget { pub fn frobenius>(&self, builder: &mut CircuitBuilder) -> Self { let arr = self.to_target_array(); let k = (F::ORDER - 1) / (D as u64); - let z0 = builder.constant(F::Extension::W.exp(k)); - let mut z = builder.one(); - let mut res = [builder.zero(); D]; - for i in 0..D { - res[i] = builder.mul(arr[i], z); - z = builder.mul(z, z0); + let zs = (0..D as u64).map(|i| builder.constant(F::Extension::W.exp(k * i))); + + let mut res = Vec::with_capacity(D); + for (z, a) in zs.zip(arr) { + res.push(builder.mul(z, a)); } - Self(res) + res.try_into().unwrap() } pub fn from_range(gate: usize, range: Range) -> Self {