Struct ark_poly::polynomial::multivariate::SparsePolynomial
source · [−]Expand description
Stores a sparse multivariate polynomial in coefficient form.
Fields
num_vars: usizeThe number of variables the polynomial supports
terms: Vec<(F, T)>List of each term along with its coefficient
Trait Implementations
sourceimpl<'a, 'b, F: Field, T: Term> Add<&'a SparsePolynomial<F, T>> for &'b SparsePolynomial<F, T>
impl<'a, 'b, F: Field, T: Term> Add<&'a SparsePolynomial<F, T>> for &'b SparsePolynomial<F, T>
type Output = SparsePolynomial<F, T>
type Output = SparsePolynomial<F, T>
The resulting type after applying the
+ operator.sourcefn add(self, other: &'a SparsePolynomial<F, T>) -> SparsePolynomial<F, T>
fn add(self, other: &'a SparsePolynomial<F, T>) -> SparsePolynomial<F, T>
Performs the
+ operation. Read moresourceimpl<F: Field, T: Term> Add<SparsePolynomial<F, T>> for SparsePolynomial<F, T>
impl<F: Field, T: Term> Add<SparsePolynomial<F, T>> for SparsePolynomial<F, T>
type Output = SparsePolynomial<F, T>
type Output = SparsePolynomial<F, T>
The resulting type after applying the
+ operator.sourcefn add(self, other: SparsePolynomial<F, T>) -> Self
fn add(self, other: SparsePolynomial<F, T>) -> Self
Performs the
+ operation. Read moresourceimpl<'a, F: Field, T: Term> AddAssign<&'a SparsePolynomial<F, T>> for SparsePolynomial<F, T>
impl<'a, F: Field, T: Term> AddAssign<&'a SparsePolynomial<F, T>> for SparsePolynomial<F, T>
sourcefn add_assign(&mut self, other: &'a SparsePolynomial<F, T>)
fn add_assign(&mut self, other: &'a SparsePolynomial<F, T>)
Performs the
+= operation. Read moresourceimpl<'a, F: Field, T: Term> AddAssign<(F, &'a SparsePolynomial<F, T>)> for SparsePolynomial<F, T>
impl<'a, F: Field, T: Term> AddAssign<(F, &'a SparsePolynomial<F, T>)> for SparsePolynomial<F, T>
sourcefn add_assign(&mut self, (f, other): (F, &'a SparsePolynomial<F, T>))
fn add_assign(&mut self, (f, other): (F, &'a SparsePolynomial<F, T>))
Performs the
+= operation. Read moresourceimpl<F: Field, T: Term> CanonicalDeserialize for SparsePolynomial<F, T>
impl<F: Field, T: Term> CanonicalDeserialize for SparsePolynomial<F, T>
sourcefn deserialize_with_mode<R: Read>(
reader: R,
compress: Compress,
validate: Validate
) -> Result<Self, SerializationError>
fn deserialize_with_mode<R: Read>(
reader: R,
compress: Compress,
validate: Validate
) -> Result<Self, SerializationError>
The general deserialize method that takes in customization flags.
fn deserialize_compressed<R>(reader: R) -> Result<Self, SerializationError>where
R: Read,
fn deserialize_compressed_unchecked<R>(
reader: R
) -> Result<Self, SerializationError>where
R: Read,
fn deserialize_uncompressed<R>(reader: R) -> Result<Self, SerializationError>where
R: Read,
fn deserialize_uncompressed_unchecked<R>(
reader: R
) -> Result<Self, SerializationError>where
R: Read,
sourceimpl<F: Field, T: Term> CanonicalSerialize for SparsePolynomial<F, T>
impl<F: Field, T: Term> CanonicalSerialize for SparsePolynomial<F, T>
sourcefn serialize_with_mode<W: Write>(
&self,
writer: W,
compress: Compress
) -> Result<(), SerializationError>
fn serialize_with_mode<W: Write>(
&self,
writer: W,
compress: Compress
) -> Result<(), SerializationError>
The general serialize method that takes in customization flags.
fn serialized_size(&self, compress: Compress) -> usize
fn serialize_compressed<W>(&self, writer: W) -> Result<(), SerializationError>where
W: Write,
fn compressed_size(&self) -> usize
fn serialize_uncompressed<W>(&self, writer: W) -> Result<(), SerializationError>where
W: Write,
fn uncompressed_size(&self) -> usize
sourceimpl<F: Field, T: Term> Debug for SparsePolynomial<F, T>
impl<F: Field, T: Term> Debug for SparsePolynomial<F, T>
sourceimpl<F: Field> DenseMVPolynomial<F> for SparsePolynomial<F, SparseTerm>
impl<F: Field> DenseMVPolynomial<F> for SparsePolynomial<F, SparseTerm>
sourcefn rand<R: Rng>(d: usize, l: usize, rng: &mut R) -> Self
fn rand<R: Rng>(d: usize, l: usize, rng: &mut R) -> Self
Outputs an l-variate polynomial which is the sum of l d-degree
univariate polynomials where each coefficient is sampled uniformly at random.
sourcefn from_coefficients_vec(num_vars: usize, terms: Vec<(F, SparseTerm)>) -> Self
fn from_coefficients_vec(num_vars: usize, terms: Vec<(F, SparseTerm)>) -> Self
Constructs a new polynomial from a list of tuples of the form (coeff, Self::Term)
Examples
use ark_poly::{
polynomial::multivariate::{SparsePolynomial, SparseTerm, Term},
DenseMVPolynomial, Polynomial,
};
use ark_test_curves::bls12_381::Fq;
// Create a multivariate polynomial in 3 variables, with 4 terms:
// 2*x_0^3 + x_0*x_2 + x_1*x_2 + 5
let poly = SparsePolynomial::from_coefficients_vec(
3,
vec![
(Fq::from(2), SparseTerm::new(vec![(0, 3)])),
(Fq::from(1), SparseTerm::new(vec![(0, 1), (2, 1)])),
(Fq::from(1), SparseTerm::new(vec![(1, 1), (2, 1)])),
(Fq::from(5), SparseTerm::new(vec![])),
],
);sourcefn terms(&self) -> &[(F, Self::Term)]
fn terms(&self) -> &[(F, Self::Term)]
Returns the terms of a self as a list of tuples of the form (coeff, Self::Term)
type Term = SparseTerm
type Term = SparseTerm
The type of the terms of
selfsourcefn from_coefficients_slice(num_vars: usize, terms: &[(F, Self::Term)]) -> Self
fn from_coefficients_slice(num_vars: usize, terms: &[(F, Self::Term)]) -> Self
Constructs a new polynomial from a list of tuples of the form
(coeff, Self::Term)sourceimpl<F: Field, T: Term> Neg for SparsePolynomial<F, T>
impl<F: Field, T: Term> Neg for SparsePolynomial<F, T>
type Output = SparsePolynomial<F, T>
type Output = SparsePolynomial<F, T>
The resulting type after applying the
- operator.sourcefn neg(self) -> SparsePolynomial<F, T>
fn neg(self) -> SparsePolynomial<F, T>
Performs the unary
- operation. Read moresourceimpl<F: Field, T: Term> PartialEq<SparsePolynomial<F, T>> for SparsePolynomial<F, T>where
F: PartialEq,
T: PartialEq,
impl<F: Field, T: Term> PartialEq<SparsePolynomial<F, T>> for SparsePolynomial<F, T>where
F: PartialEq,
T: PartialEq,
sourceimpl<F: Field> Polynomial<F> for SparsePolynomial<F, SparseTerm>
impl<F: Field> Polynomial<F> for SparsePolynomial<F, SparseTerm>
sourcefn degree(&self) -> usize
fn degree(&self) -> usize
Returns the total degree of the polynomial
Examples
use ark_poly::{
polynomial::multivariate::{SparsePolynomial, SparseTerm},
DenseMVPolynomial, Polynomial,
};
use ark_std::test_rng;
use ark_test_curves::bls12_381::Fq;
let rng = &mut test_rng();
// Create a multivariate polynomial of degree 7
let poly: SparsePolynomial<Fq, SparseTerm> = SparsePolynomial::rand(7, 2, rng);
assert_eq!(poly.degree(), 7);sourcefn evaluate(&self, point: &Vec<F>) -> F
fn evaluate(&self, point: &Vec<F>) -> F
Evaluates self at the given point in Self::Point.
Examples
use ark_poly::{
polynomial::multivariate::{SparsePolynomial, SparseTerm, Term},
DenseMVPolynomial, Polynomial,
};
use ark_ff::UniformRand;
use ark_std::test_rng;
use ark_test_curves::bls12_381::Fq;
let rng = &mut test_rng();
let poly = SparsePolynomial::rand(4, 3, rng);
let random_point = vec![Fq::rand(rng); 3];
// The result will be a single element in the field.
let result: Fq = poly.evaluate(&random_point);sourceimpl<'a, 'b, F: Field, T: Term> Sub<&'a SparsePolynomial<F, T>> for &'b SparsePolynomial<F, T>
impl<'a, 'b, F: Field, T: Term> Sub<&'a SparsePolynomial<F, T>> for &'b SparsePolynomial<F, T>
type Output = SparsePolynomial<F, T>
type Output = SparsePolynomial<F, T>
The resulting type after applying the
- operator.sourcefn sub(self, other: &'a SparsePolynomial<F, T>) -> SparsePolynomial<F, T>
fn sub(self, other: &'a SparsePolynomial<F, T>) -> SparsePolynomial<F, T>
Performs the
- operation. Read moresourceimpl<'a, F: Field, T: Term> SubAssign<&'a SparsePolynomial<F, T>> for SparsePolynomial<F, T>
impl<'a, F: Field, T: Term> SubAssign<&'a SparsePolynomial<F, T>> for SparsePolynomial<F, T>
sourcefn sub_assign(&mut self, other: &'a SparsePolynomial<F, T>)
fn sub_assign(&mut self, other: &'a SparsePolynomial<F, T>)
Performs the
-= operation. Read moresourceimpl<F: Field, T: Term> Valid for SparsePolynomial<F, T>
impl<F: Field, T: Term> Valid for SparsePolynomial<F, T>
fn check(&self) -> Result<(), SerializationError>
fn batch_check<'a>(
batch: impl Iterator<Item = &'a Self> + Send
) -> Result<(), SerializationError>where
Self: 'a,
sourceimpl<F: Field, T: Term> Zero for SparsePolynomial<F, T>
impl<F: Field, T: Term> Zero for SparsePolynomial<F, T>
impl<F: Field, T: Term> Eq for SparsePolynomial<F, T>where
F: Eq,
T: Eq,
Auto Trait Implementations
impl<F, T> RefUnwindSafe for SparsePolynomial<F, T>where
F: RefUnwindSafe,
T: RefUnwindSafe,
impl<F, T> Send for SparsePolynomial<F, T>
impl<F, T> Sync for SparsePolynomial<F, T>
impl<F, T> Unpin for SparsePolynomial<F, T>where
F: Unpin,
T: Unpin,
impl<F, T> UnwindSafe for SparsePolynomial<F, T>where
F: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more