pub struct Config {
    pub nrows: usize,
    pub ncols: usize,
    pub wr: usize,
    pub wc: usize,
    pub backtrack_cols: usize,
    pub backtrack_trials: usize,
    pub min_girth: Option<usize>,
    pub girth_trials: usize,
    pub fill_policy: FillPolicy,
}
Expand description

Configuration for the MacKay-Neal construction.

This configuration is used to set the parameters of the LDPC code to construct as well as some options that affect the exectution of the algorithm.

Fields§

§nrows: usize

Number of rows of the parity check matrix.

§ncols: usize

Number of columns of the parity check matrix.

§wr: usize

Maximum row weight of the parity check matrix.

§wc: usize

Column weight of the parity check matrix.

§backtrack_cols: usize

Number of columns to backtrack when there are not enough available columns with weight smaller than the maximum row weight.

§backtrack_trials: usize

Number of times to attempt backtracking before aborting.

§min_girth: Option<usize>

Minimum girth of the Tanner graph; None indicates that no constraints are imposed on the girth.

§girth_trials: usize

Number of times to re-try generating a column to satisfy the minimum girth constraint before aborting.

§fill_policy: FillPolicy

Policy used to select the rows to fill.

Implementations§

source§

impl Config

source

pub fn run(&self, seed: u64) -> Result<SparseMatrix>

Runs the MacKay-Neal algorith using a random seed seed.

source

pub fn search( &self, start_seed: u64, max_tries: u64 ) -> Option<(u64, SparseMatrix)>

Searches for a seed for a successful MacKay-Neal construction by trying several seeds.

The search is performed in parallel using a parallel iterator from the rayon crate. This function returns the successful seed and the corresponding parity check matrix, if one is found, or None otherwise.

Trait Implementations§

source§

impl Clone for Config

source§

fn clone(&self) -> Config

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Config

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq<Config> for Config

source§

fn eq(&self, other: &Config) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for Config

source§

impl StructuralEq for Config

source§

impl StructuralPartialEq for Config

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V