[][src]Struct believer::parity_check_matrix::ParityCheckMatrix

pub struct ParityCheckMatrix { /* fields omitted */ }

A sparse parity check matrix.

Methods

impl ParityCheckMatrix[src]

Important traits for ChecksIter<'a>
pub fn checks_iter(&self) -> ChecksIter[src]

Returns an iterator that yields a slice for each check of self.

Example

let parity_check = ParityCheckMatrix::new(
    vec![
        vec![0, 1],
        vec![1, 2],
    ],
    3
);
let mut iter = parity_check.checks_iter();

assert_eq!(iter.next(), parity_check.check(0));
assert_eq!(iter.next(), parity_check.check(1));
assert_eq!(iter.next(), None);

pub fn check(&self, check: usize) -> Option<Check>[src]

Returns Some slice of the given check in self. Returns None if check is out of bound.

Example

let parity_check = ParityCheckMatrix::new(
    vec![
        vec![0, 1],
        vec![1, 2],
    ],
    3
);
let slice = parity_check.check(0).unwrap();
let vector = vec![GF2::B1, GF2::B1, GF2::B0];

assert_eq!(slice.dot(&vector), GF2::B0);

pub fn dot(&self, vector: &[GF2]) -> Vec<GF2>[src]

Computes the dot product between self and a binary vector.

Example

let parity_check = ParityCheckMatrix::new(
    vec![
        vec![0, 1],
        vec![1, 2],
    ],
    3
);
let vector = vec![GF2::B0, GF2::B1, GF2::B1];

assert_eq!(parity_check.dot(&vector), vec![GF2::B1, GF2::B0]);

pub fn has_codeword(&self, message: &[GF2]) -> bool[src]

Checks if a given message is a codeword of self.

Example

let parity_check = ParityCheckMatrix::new(
    vec![
        vec![0, 1],
        vec![1, 2],
    ],
    3
);
let message = vec![GF2::B0, GF2::B1, GF2::B1];
let codeword = vec![GF2::B0; 3];

assert_eq!(parity_check.has_codeword(&message), false);
assert_eq!(parity_check.has_codeword(&codeword), true);

pub fn is_empty(&self) -> bool[src]

Returns true is there is no value in self.

pub fn len(&self) -> usize[src]

Returns the number of 1 in self.

pub fn n_bits(&self) -> usize[src]

Returns the number of bits in self.

pub fn n_checks(&self) -> usize[src]

Returns the number of checks in self.

pub fn new(checks: Vec<Vec<usize>>, n_bits: usize) -> Self[src]

Creates a new ParityCheckMatrix from a list of checks where each check is a list of the bits connected to that check and the number of bits.

Example

// The parity check matrix of a 3 bits repetition code.
let parity_check = ParityCheckMatrix::new(
    vec![
        vec![0, 1],
        vec![1, 2],
    ],
    3
);

Important traits for PositionsIter<'a>
pub fn positions_iter(&self) -> PositionsIter[src]

positions are ordered by check first.

Example

let parity_check = ParityCheckMatrix::new(
    vec![
        vec![0, 1],
        vec![1, 2],
    ],
    3
);
let mut iter = parity_check.positions_iter();

assert_eq!(iter.next(), Some((0, 0)));
assert_eq!(iter.next(), Some((0, 1)));
assert_eq!(iter.next(), Some((1, 1)));
assert_eq!(iter.next(), Some((1, 2)));
assert_eq!(iter.next(), None);

pub fn rank(&self) -> usize[src]

Computes the rank of self.

Example

let parity_check = ParityCheckMatrix::new(
    vec![
        vec![0, 1],
        vec![1, 2],
        vec![0, 2],
    ],
    3
);
assert_eq!(parity_check.rank(), 2);

Trait Implementations

impl PartialEq<ParityCheckMatrix> for ParityCheckMatrix[src]

impl Debug for ParityCheckMatrix[src]

Auto Trait Implementations

Blanket Implementations

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

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