pub struct ReedSolomonCode<F> { /* private fields */ }Expand description
Reed–Solomon codes over binary fields.
The Reed–Solomon code admits an efficient encoding algorithm over binary fields due to LCH14. The additive NTT encoding algorithm encodes messages interpreted as the coefficients of a polynomial in a non-standard, novel polynomial basis and the codewords are the polynomial evaluations over a linear subspace of the field. See the [binius-math] crate for more details.
Implementations§
Source§impl<F> ReedSolomonCode<F>
impl<F> ReedSolomonCode<F>
pub fn log_inv_rate(&self) -> usize
Source§impl<F: BinaryField> ReedSolomonCode<F>
impl<F: BinaryField> ReedSolomonCode<F>
Sourcepub const fn new(log_dimension: usize, log_inv_rate: usize) -> Self
pub const fn new(log_dimension: usize, log_inv_rate: usize) -> Self
A code of the given dimension and rate, evaluated over the Gao-Mateer basis.
The evaluation domain is not a parameter: it is the Gao-Mateer basis of log_dimension + log_inv_rate, the same one GaoMateerOnTheFly and GaoMateerPreExpanded generate. A
verifier can therefore rebuild the domain from the code’s shape alone, without being told
which basis the prover encoded over.
Sourcepub fn subspace(&self) -> BinarySubspace<F>
pub fn subspace(&self) -> BinarySubspace<F>
The evaluation domain: the Gao-Mateer basis of Self::log_len dimensions.
Derived on demand rather than stored, so there is no way for it to disagree with the domain a prover or verifier generates from the same dimension.
pub const fn log_dim(&self) -> usize
pub const fn log_len(&self) -> usize
Sourcepub fn encode_batch<P, NTT, A>(
&self,
ntt: &NTT,
data: FieldSlice<'_, P>,
log_batch_size: usize,
alloc: &A,
) -> FieldBuffer<P, A::Vec<P>>
pub fn encode_batch<P, NTT, A>( &self, ntt: &NTT, data: FieldSlice<'_, P>, log_batch_size: usize, alloc: &A, ) -> FieldBuffer<P, A::Vec<P>>
Encodes a message with an interleaved Reed–Solomon code.
This function interprets the message as a batch of independent vectors and applies an interleaved Reed–Solomon.
§Preconditions
data.log_len()must equallog_dim() + log_batch_size.- The NTT subspace must match the code’s subspace.
§Postconditions
- All elements in the output buffer are initialized with the encoded codeword.
Trait Implementations§
Source§impl<F: Clone> Clone for ReedSolomonCode<F>
impl<F: Clone> Clone for ReedSolomonCode<F>
Source§fn clone(&self) -> ReedSolomonCode<F>
fn clone(&self) -> ReedSolomonCode<F>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl<F> Freeze for ReedSolomonCode<F>
impl<F> RefUnwindSafe for ReedSolomonCode<F>where
F: RefUnwindSafe,
impl<F> Send for ReedSolomonCode<F>where
F: Send,
impl<F> Sync for ReedSolomonCode<F>where
F: Sync,
impl<F> Unpin for ReedSolomonCode<F>where
F: Unpin,
impl<F> UnsafeUnpin for ReedSolomonCode<F>
impl<F> UnwindSafe for ReedSolomonCode<F>where
F: UnwindSafe,
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,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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