pub struct CircleDomain {
pub half_coset: Coset,
}Expand description
A valid domain for circle polynomial interpolation and evaluation.
Valid domains are a disjoint union of two conjugate cosets: +-C + <G_n>.
The ordering defined on this domain is C + iG_n, and then -C - iG_n.
Fields§
§half_coset: CosetImplementations§
Source§impl CircleDomain
impl CircleDomain
Sourcepub const fn new(half_coset: Coset) -> Self
pub const fn new(half_coset: Coset) -> Self
Given a coset C + <G_n>, constructs the circle domain +-C + <G_n> (i.e., this coset and its conjugate).
pub fn iter( &self, ) -> Chain<CosetIterator<CirclePoint<BaseField>>, CosetIterator<CirclePoint<BaseField>>> ⓘ
Sourcepub fn iter_indices(
&self,
) -> Chain<CosetIterator<CirclePointIndex>, CosetIterator<CirclePointIndex>> ⓘ
pub fn iter_indices( &self, ) -> Chain<CosetIterator<CirclePointIndex>, CosetIterator<CirclePointIndex>> ⓘ
Iterates over point indices.
Sourcepub fn at(&self, i: usize) -> CirclePoint<BaseField>
pub fn at(&self, i: usize) -> CirclePoint<BaseField>
Returns the i th domain element.
Sourcepub fn index_at(&self, i: usize) -> CirclePointIndex
pub fn index_at(&self, i: usize) -> CirclePointIndex
Returns the CirclePointIndex of the ith domain element.
Sourcepub fn is_canonic(&self) -> bool
pub fn is_canonic(&self) -> bool
Returns true if the domain is canonic.
Canonic domains are domains with elements that are the entire set of points defined by
G_2n + <G_n> where G_n and G_2n are obtained by repeatedly doubling
crate::core::circle::M31_CIRCLE_GEN.
Sourcepub fn split(&self, log_parts: u32) -> (CircleDomain, Vec<CirclePointIndex>)
pub fn split(&self, log_parts: u32) -> (CircleDomain, Vec<CirclePointIndex>)
Splits a circle domain into a smaller CircleDomains, shifted by offsets.
pub fn shift(&self, shift: CirclePointIndex) -> CircleDomain
Trait Implementations§
Source§impl Clone for CircleDomain
impl Clone for CircleDomain
Source§fn clone(&self) -> CircleDomain
fn clone(&self) -> CircleDomain
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for CircleDomain
Source§impl Debug for CircleDomain
impl Debug for CircleDomain
impl Eq for CircleDomain
Source§impl From<CircleDomain> for LineDomain
impl From<CircleDomain> for LineDomain
Source§fn from(domain: CircleDomain) -> Self
fn from(domain: CircleDomain) -> Self
Source§impl IntoIterator for CircleDomain
impl IntoIterator for CircleDomain
Source§fn into_iter(
self,
) -> Chain<CosetIterator<CirclePoint<BaseField>>, CosetIterator<CirclePoint<BaseField>>> ⓘ
fn into_iter( self, ) -> Chain<CosetIterator<CirclePoint<BaseField>>, CosetIterator<CirclePoint<BaseField>>> ⓘ
Iterates over the points in the domain.
Source§type Item = CirclePoint<M31>
type Item = CirclePoint<M31>
Source§type IntoIter = Chain<CosetIterator<CirclePoint<M31>>, CosetIterator<CirclePoint<M31>>>
type IntoIter = Chain<CosetIterator<CirclePoint<M31>>, CosetIterator<CirclePoint<M31>>>
Source§impl PartialEq for CircleDomain
impl PartialEq for CircleDomain
Source§fn eq(&self, other: &CircleDomain) -> bool
fn eq(&self, other: &CircleDomain) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for CircleDomain
Auto Trait Implementations§
impl Freeze for CircleDomain
impl RefUnwindSafe for CircleDomain
impl Send for CircleDomain
impl Sync for CircleDomain
impl Unpin for CircleDomain
impl UnsafeUnpin for CircleDomain
impl UnwindSafe for CircleDomain
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§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.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