pub struct Radix2DomainVar<F: PrimeField> {
pub gen: F,
pub dim: u64,
/* private fields */
}
Expand description
Defines an evaluation domain over a prime field. The domain is a coset of
size 1<<dim
.
Native code corresponds to ark-poly::univariate::domain::radix2
, but
ark-poly
only supports subgroup for now.
Fields§
§gen: F
generator of subgroup g
dim: u64
dimension of evaluation domain, which is log2(size of coset)
Implementations§
Source§impl<F: PrimeField> Radix2DomainVar<F>
impl<F: PrimeField> Radix2DomainVar<F>
Source§impl<F: PrimeField> Radix2DomainVar<F>
impl<F: PrimeField> Radix2DomainVar<F>
Sourcepub fn elements(&self) -> Vec<FpVar<F>>
pub fn elements(&self) -> Vec<FpVar<F>>
Returns offset, offsetg, offsetg^2, …, offset*g^{coset_size}
Sourcepub fn query_position_to_coset_elements(
&self,
query_pos: &[Boolean<F>],
coset_dim: u64,
) -> Result<Vec<FpVar<F>>, SynthesisError>
pub fn query_position_to_coset_elements( &self, query_pos: &[Boolean<F>], coset_dim: u64, ) -> Result<Vec<FpVar<F>>, SynthesisError>
For domain h<g>
with dimension n
, position
represented by
query_pos
in big endian form, returns all points of
h*g^{position}<g^{2^{n-coset_dim}}>
. The result is the query coset at
index query_pos
for the FRI protocol.
§Panics
This function panics when query_pos.len() != coset_dim
or
query_pos.len() != self.dim
.
Sourcepub fn query_position_to_coset(
&self,
query_pos: &[Boolean<F>],
coset_dim: u64,
) -> Result<Self, SynthesisError>
pub fn query_position_to_coset( &self, query_pos: &[Boolean<F>], coset_dim: u64, ) -> Result<Self, SynthesisError>
For domain h<g>
with dimension n
, position
represented by
query_pos
in big endian form, returns all points of
h*g^{position}<g^{n-query_pos.len()}>
§Panics
This function panics when query_pos.len() < log2_num_cosets
.
Trait Implementations§
Source§impl<F: Clone + PrimeField> Clone for Radix2DomainVar<F>
impl<F: Clone + PrimeField> Clone for Radix2DomainVar<F>
Source§fn clone(&self) -> Radix2DomainVar<F>
fn clone(&self) -> Radix2DomainVar<F>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<F: Debug + PrimeField> Debug for Radix2DomainVar<F>
impl<F: Debug + PrimeField> Debug for Radix2DomainVar<F>
Source§impl<F: PrimeField> EqGadget<F> for Radix2DomainVar<F>
impl<F: PrimeField> EqGadget<F> for Radix2DomainVar<F>
Source§fn is_eq(&self, other: &Self) -> Result<Boolean<F>, SynthesisError>
fn is_eq(&self, other: &Self) -> Result<Boolean<F>, SynthesisError>
Boolean
value representing whether self.value() == other.value()
.Source§fn conditional_enforce_equal(
&self,
other: &Self,
should_enforce: &Boolean<F>,
) -> Result<(), SynthesisError>
fn conditional_enforce_equal( &self, other: &Self, should_enforce: &Boolean<F>, ) -> Result<(), SynthesisError>
should_enforce == true
, enforce that self
and other
are equal;
else, enforce a vacuously true statement. Read moreSource§fn enforce_equal(&self, other: &Self) -> Result<(), SynthesisError>
fn enforce_equal(&self, other: &Self) -> Result<(), SynthesisError>
Source§fn conditional_enforce_not_equal(
&self,
other: &Self,
should_enforce: &Boolean<F>,
) -> Result<(), SynthesisError>
fn conditional_enforce_not_equal( &self, other: &Self, should_enforce: &Boolean<F>, ) -> Result<(), SynthesisError>
should_enforce == true
, enforce that self
and other
are not
equal; else, enforce a vacuously true statement. Read moreSource§fn enforce_not_equal(&self, other: &Self) -> Result<(), SynthesisError>
fn enforce_not_equal(&self, other: &Self) -> Result<(), SynthesisError>
Auto Trait Implementations§
impl<F> Freeze for Radix2DomainVar<F>where
F: Freeze,
impl<F> !RefUnwindSafe for Radix2DomainVar<F>
impl<F> !Send for Radix2DomainVar<F>
impl<F> !Sync for Radix2DomainVar<F>
impl<F> Unpin for Radix2DomainVar<F>where
F: Unpin,
impl<F> !UnwindSafe for Radix2DomainVar<F>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more