mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-04 23:03:08 +00:00
Use fold1 in mul_many
This commit is contained in:
parent
939acfed96
commit
90a6ffd775
@ -1,5 +1,7 @@
|
||||
use std::borrow::Borrow;
|
||||
|
||||
use itertools::Itertools;
|
||||
|
||||
use crate::field::extension_field::Extendable;
|
||||
use crate::field::field_types::{PrimeField, RichField};
|
||||
use crate::gates::arithmetic_base::ArithmeticGate;
|
||||
@ -206,11 +208,11 @@ impl<F: RichField + Extendable<D>, const D: usize> CircuitBuilder<F, D> {
|
||||
|
||||
/// Multiply `n` `Target`s.
|
||||
pub fn mul_many(&mut self, terms: &[Target]) -> Target {
|
||||
let mut product = self.one();
|
||||
for &term in terms {
|
||||
product = self.mul(product, term);
|
||||
}
|
||||
product
|
||||
terms
|
||||
.iter()
|
||||
.copied()
|
||||
.fold1(|acc, t| self.mul(acc, t))
|
||||
.unwrap_or_else(|| self.one())
|
||||
}
|
||||
|
||||
/// Exponentiate `base` to the power of `2^power_log`.
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
use itertools::Itertools;
|
||||
|
||||
use crate::field::extension_field::target::{ExtensionAlgebraTarget, ExtensionTarget};
|
||||
use crate::field::extension_field::FieldExtension;
|
||||
use crate::field::extension_field::{Extendable, OEF};
|
||||
@ -294,11 +296,11 @@ impl<F: RichField + Extendable<D>, const D: usize> CircuitBuilder<F, D> {
|
||||
|
||||
/// Multiply `n` `ExtensionTarget`s.
|
||||
pub fn mul_many_extension(&mut self, terms: &[ExtensionTarget<D>]) -> ExtensionTarget<D> {
|
||||
let mut product = self.one_extension();
|
||||
for &term in terms {
|
||||
product = self.mul_extension(product, term);
|
||||
}
|
||||
product
|
||||
terms
|
||||
.iter()
|
||||
.copied()
|
||||
.fold1(|acc, t| self.mul_extension(acc, t))
|
||||
.unwrap_or_else(|| self.one_extension())
|
||||
}
|
||||
|
||||
/// Like `mul_add`, but for `ExtensionTarget`s.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user