[−][src]Struct believer::parity_check_matrix::ParityCheckMatrix
A sparse parity check matrix.
Methods
impl ParityCheckMatrix
[src]
ⓘImportant traits for ChecksIter<'a>pub fn checks_iter(&self) -> ChecksIter
[src]
ⓘImportant traits for ChecksIter<'a>
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]
ⓘImportant traits for PositionsIter<'a>
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]
fn eq(&self, other: &ParityCheckMatrix) -> bool
[src]
fn ne(&self, other: &ParityCheckMatrix) -> bool
[src]
impl Debug for ParityCheckMatrix
[src]
Auto Trait Implementations
impl Send for ParityCheckMatrix
impl Unpin for ParityCheckMatrix
impl Sync for ParityCheckMatrix
impl RefUnwindSafe for ParityCheckMatrix
impl UnwindSafe for ParityCheckMatrix
Blanket Implementations
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From<T> for T
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,