Skip to content

Commit 2c7d68d

Browse files
committed
format code
1 parent cd7b0b5 commit 2c7d68d

File tree

2 files changed

+61
-55
lines changed

2 files changed

+61
-55
lines changed

src/int_gf2_matrix.rs

Lines changed: 49 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::{GF2Matrix, matrix::Number};
1+
use crate::{matrix::Number, GF2Matrix};
22

33
#[derive(Clone, Copy, Debug)]
44
pub enum BitOrder {
@@ -16,11 +16,10 @@ pub enum BitOrder {
1616
/// representation before expanding into an explicit GF(2) matrix.
1717
pub struct InterGF2Matrix<T: Number> {
1818
elements: Vec<T>,
19-
n: usize
19+
n: usize,
2020
}
2121

22-
impl<T: Number> InterGF2Matrix<T>{
23-
22+
impl<T: Number> InterGF2Matrix<T> {
2423
/// Creates a new integer-encoded matrix.
2524
///
2625
/// # Arguments
@@ -32,49 +31,51 @@ impl<T: Number> InterGF2Matrix<T>{
3231
///
3332
/// ```rust
3433
/// # use lin_algebra::int_gf2_matrix::InterGF2Matrix;
35-
///
34+
///
3635
/// let m = InterGF2Matrix::new(vec![0b1011u8, 0b0101u8], 4);
3736
/// ```
38-
pub fn new(elements: Vec<T>, n: usize) -> Self{
39-
Self {elements: elements, n: n}
37+
pub fn new(elements: Vec<T>, n: usize) -> Self {
38+
Self {
39+
elements: elements,
40+
n: n,
41+
}
4042
}
4143

4244
/// Returns the number of rows in the matrix.
4345
///
4446
/// # Returns
45-
///
47+
///
4648
/// number of rows: this is equal to the number of elements stored internally.
47-
pub fn nrows(&self) -> usize{
49+
pub fn nrows(&self) -> usize {
4850
self.elements.len()
4951
}
5052

5153
/// Returns the number of columns in the matrix.
5254
///
5355
/// # Returns
54-
///
56+
///
5557
/// Number of columns: this corresponds to the number of bits extracted from each row.
56-
pub fn ncols(&self) -> usize{
58+
pub fn ncols(&self) -> usize {
5759
self.n
5860
}
5961

6062
/// Returns the integer-encoded value of a specific row.
6163
///
6264
/// # Arguments
63-
///
65+
///
6466
/// * `row_index`- usize, index of the row.
65-
///
67+
///
6668
/// # Returns
67-
///
69+
///
6870
/// Row corresponding to index `row_index`
69-
///
71+
///
7072
/// # Panics
7173
///
7274
/// Panics if `row_index` is out of bounds.
7375
pub fn row(&self, row_index: usize) -> T {
7476
self.elements[row_index]
7577
}
7678

77-
7879
/// Converts the integer-encoded matrix into an explicit GF(2) matrix.
7980
///
8081
/// Each row is expanded into a vector of bits (`0` or `1`),
@@ -96,27 +97,26 @@ impl<T: Number> InterGF2Matrix<T>{
9697
///
9798
/// ```rust
9899
/// # use lin_algebra::int_gf2_matrix::{InterGF2Matrix, BitOrder};
99-
///
100+
///
100101
/// let m = InterGF2Matrix::new(vec![0b0010u8], 4);
101102
/// let gf2 = m.from_int_matrix_to_gf2_matrix(BitOrder::LSB);
102103
///
103104
/// // Result: [[0, 1, 0, 0]]
104105
/// ```
105106
pub fn from_int_matrix_to_gf2_matrix(&self, bit_order: BitOrder) -> GF2Matrix {
106-
107107
let mut matrix_elements = Vec::with_capacity(self.nrows());
108108
match bit_order {
109109
BitOrder::LSB => {
110-
for &row in &self.elements{
110+
for &row in &self.elements {
111111
let mut r = Vec::with_capacity(self.n);
112112
for i in 0..self.n {
113113
r.push((((row >> i) & T::one()) != T::zero()) as u8);
114114
}
115115
matrix_elements.push(r);
116-
}
117-
},
116+
}
117+
}
118118
BitOrder::MSB => {
119-
for &row in &self.elements{
119+
for &row in &self.elements {
120120
let mut r = Vec::with_capacity(self.n);
121121
for i in (0..self.n).rev() {
122122
r.push((((row >> i) & T::one()) != T::zero()) as u8);
@@ -126,67 +126,65 @@ impl<T: Number> InterGF2Matrix<T>{
126126
}
127127
};
128128
GF2Matrix::new(matrix_elements)
129-
130129
}
131130
}
132131

133-
134132
#[cfg(test)]
135133
mod tests {
136134

137135
use super::*;
138136

139137
#[test]
140-
fn test_from_int_matrix_to_gf2_matrix_u8_lsb(){
141-
let elements = vec![0,1,2,4,8];
138+
fn test_from_int_matrix_to_gf2_matrix_u8_lsb() {
139+
let elements = vec![0, 1, 2, 4, 8];
142140
let int_matrix = InterGF2Matrix::<u8>::new(elements.clone(), 4);
143141
let gf2_matrix = int_matrix.from_int_matrix_to_gf2_matrix(BitOrder::LSB);
144142
let expected = vec![
145-
vec![0,0,0,0],
146-
vec![1,0,0,0],
147-
vec![0,1,0,0],
148-
vec![0,0,1,0],
149-
vec![0,0,0,1],
143+
vec![0, 0, 0, 0],
144+
vec![1, 0, 0, 0],
145+
vec![0, 1, 0, 0],
146+
vec![0, 0, 1, 0],
147+
vec![0, 0, 0, 1],
150148
];
151149
assert_eq!(gf2_matrix.elements, expected);
152150

153-
let elements = vec![0,1,2,3,5];
151+
let elements = vec![0, 1, 2, 3, 5];
154152
let int_matrix = InterGF2Matrix::<u8>::new(elements.clone(), 4);
155153
let gf2_matrix = int_matrix.from_int_matrix_to_gf2_matrix(BitOrder::LSB);
156154
let expected = vec![
157-
vec![0,0,0,0],
158-
vec![1,0,0,0],
159-
vec![0,1,0,0],
160-
vec![1,1,0,0],
161-
vec![1,0,1,0],
155+
vec![0, 0, 0, 0],
156+
vec![1, 0, 0, 0],
157+
vec![0, 1, 0, 0],
158+
vec![1, 1, 0, 0],
159+
vec![1, 0, 1, 0],
162160
];
163161
assert_eq!(gf2_matrix.elements, expected);
164162
}
165163

166164
#[test]
167-
fn test_from_int_matrix_to_gf2_matrix_u8_msb(){
168-
let elements = vec![0,1,2,4, 8];
165+
fn test_from_int_matrix_to_gf2_matrix_u8_msb() {
166+
let elements = vec![0, 1, 2, 4, 8];
169167
let int_matrix = InterGF2Matrix::<u8>::new(elements.clone(), 4);
170168
let gf2_matrix = int_matrix.from_int_matrix_to_gf2_matrix(BitOrder::MSB);
171169
let expected = vec![
172-
vec![0,0,0,0],
173-
vec![0,0,0,1],
174-
vec![0,0,1,0],
175-
vec![0,1,0,0],
176-
vec![1,0,0,0],
170+
vec![0, 0, 0, 0],
171+
vec![0, 0, 0, 1],
172+
vec![0, 0, 1, 0],
173+
vec![0, 1, 0, 0],
174+
vec![1, 0, 0, 0],
177175
];
178176
assert_eq!(gf2_matrix.elements, expected);
179177

180-
let elements = vec![0,1,2,3,5];
178+
let elements = vec![0, 1, 2, 3, 5];
181179
let int_matrix = InterGF2Matrix::<u8>::new(elements.clone(), 4);
182180
let gf2_matrix = int_matrix.from_int_matrix_to_gf2_matrix(BitOrder::MSB);
183181
let expected = vec![
184-
vec![0,0,0,0],
185-
vec![0,0,0,1],
186-
vec![0,0,1,0],
187-
vec![0,0,1,1],
188-
vec![0,1,0,1],
182+
vec![0, 0, 0, 0],
183+
vec![0, 0, 0, 1],
184+
vec![0, 0, 1, 0],
185+
vec![0, 0, 1, 1],
186+
vec![0, 1, 0, 1],
189187
];
190188
assert_eq!(gf2_matrix.elements, expected);
191189
}
192-
}
190+
}

src/matrix.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,17 @@
1-
use num_traits::{Zero, One};
2-
use std::ops::{BitXor, BitAnd, Shr};
1+
use num_traits::{One, Zero};
2+
use std::ops::{BitAnd, BitXor, Shr};
33

44
pub trait Number:
5-
Copy + Eq + Ord + BitXor<Output = Self> + BitAnd<Output = Self> + Shr<usize, Output = Self> + Zero + One
6-
{}
5+
Copy
6+
+ Eq
7+
+ Ord
8+
+ BitXor<Output = Self>
9+
+ BitAnd<Output = Self>
10+
+ Shr<usize, Output = Self>
11+
+ Zero
12+
+ One
13+
{
14+
}
715

816
impl Number for u8 {}
917
impl Number for u16 {}

0 commit comments

Comments
 (0)