Merge pull request #159 from mir-protocol/faster_transpose

Faster transpose method
This commit is contained in:
wborgeaud 2021-08-06 20:07:18 +02:00 committed by GitHub
commit 30bedbb18e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -35,17 +35,13 @@ pub(crate) fn transpose_poly_values<F: Field>(polys: Vec<PolynomialValues<F>>) -
transpose(&poly_values) transpose(&poly_values)
} }
pub(crate) fn transpose<T: Clone>(matrix: &[Vec<T>]) -> Vec<Vec<T>> { pub(crate) fn transpose<F: Field>(matrix: &[Vec<F>]) -> Vec<Vec<F>> {
if matrix.is_empty() { let l = matrix.len();
return Vec::new(); let w = matrix[0].len();
} let mut transposed = vec![vec![F::ZERO; l]; w];
for i in 0..w {
let old_rows = matrix.len(); for j in 0..l {
let old_cols = matrix[0].len(); transposed[i][j] = matrix[j][i];
let mut transposed = vec![Vec::with_capacity(old_rows); old_cols];
for new_r in 0..old_cols {
for old_row in matrix.iter() {
transposed[new_r].push(old_row[new_r].clone());
} }
} }
transposed transposed