diff --git a/lax/src/tridiagonal.rs b/lax/src/tridiagonal.rs index f6cbfc7e..2b1d98e2 100644 --- a/lax/src/tridiagonal.rs +++ b/lax/src/tridiagonal.rs @@ -15,7 +15,7 @@ use std::ops::{Index, IndexMut}; /// ... ..., u{n-1}, /// 0, ..., l{n-1}, d{n-1},] /// ``` -#[derive(Clone, PartialEq)] +#[derive(Clone, PartialEq, Eq)] pub struct Tridiagonal { /// layout of raw matrix pub l: MatrixLayout, diff --git a/ndarray-linalg/examples/eig.rs b/ndarray-linalg/examples/eig.rs index 3e41556a..746ec2e4 100644 --- a/ndarray-linalg/examples/eig.rs +++ b/ndarray-linalg/examples/eig.rs @@ -3,7 +3,7 @@ use ndarray_linalg::*; fn main() { let a = arr2(&[[2.0, 1.0, 2.0], [-2.0, 2.0, 1.0], [1.0, 2.0, -2.0]]); - let (e, vecs) = a.clone().eig().unwrap(); + let (e, vecs) = a.eig().unwrap(); println!("eigenvalues = \n{:?}", e); println!("V = \n{:?}", vecs); let a_c: Array2 = a.map(|f| c64::new(*f, 0.0)); diff --git a/ndarray-linalg/examples/eigh.rs b/ndarray-linalg/examples/eigh.rs index c9bcc941..f4f36841 100644 --- a/ndarray-linalg/examples/eigh.rs +++ b/ndarray-linalg/examples/eigh.rs @@ -6,7 +6,7 @@ use ndarray_linalg::*; fn main() { let a = arr2(&[[3.0, 1.0, 1.0], [1.0, 3.0, 1.0], [1.0, 1.0, 3.0]]); - let (e, vecs) = a.clone().eigh(UPLO::Upper).unwrap(); + let (e, vecs) = a.eigh(UPLO::Upper).unwrap(); println!("eigenvalues = \n{:?}", e); println!("V = \n{:?}", vecs); let av = a.dot(&vecs); diff --git a/ndarray-linalg/src/krylov/householder.rs b/ndarray-linalg/src/krylov/householder.rs index 844d0e7e..c04d9049 100644 --- a/ndarray-linalg/src/krylov/householder.rs +++ b/ndarray-linalg/src/krylov/householder.rs @@ -34,7 +34,7 @@ where { assert_eq!(w.len(), a.len()); let n = a.len(); - let c = A::from(2.0).unwrap() * w.inner(&a); + let c = A::from(2.0).unwrap() * w.inner(a); for l in 0..n { a[l] -= c * w[l]; } diff --git a/ndarray-linalg/src/krylov/mgs.rs b/ndarray-linalg/src/krylov/mgs.rs index dc0dfba6..67806a2c 100644 --- a/ndarray-linalg/src/krylov/mgs.rs +++ b/ndarray-linalg/src/krylov/mgs.rs @@ -50,7 +50,7 @@ impl Orthogonalizer for MGS { let mut coef = Array1::zeros(self.len() + 1); for i in 0..self.len() { let q = &self.q[i]; - let c = q.inner(&a); + let c = q.inner(a); azip!((a in &mut *a, &q in q) *a -= c * q); coef[i] = c; } @@ -77,12 +77,12 @@ impl Orthogonalizer for MGS { self.div_append(&mut a) } - fn div_append(&mut self, mut a: &mut ArrayBase) -> AppendResult + fn div_append(&mut self, a: &mut ArrayBase) -> AppendResult where A: Lapack, S: DataMut, { - let coef = self.decompose(&mut a); + let coef = self.decompose(a); let nrm = coef[coef.len() - 1].re(); if nrm < self.tol { // Linearly dependent diff --git a/ndarray-linalg/src/layout.rs b/ndarray-linalg/src/layout.rs index 9ca772bb..d0d13585 100644 --- a/ndarray-linalg/src/layout.rs +++ b/ndarray-linalg/src/layout.rs @@ -67,9 +67,8 @@ where } fn as_allocated(&self) -> Result<&[A]> { - Ok(self - .as_slice_memory_order() - .ok_or_else(|| LinalgError::MemoryNotCont)?) + self.as_slice_memory_order() + .ok_or(LinalgError::MemoryNotCont) } } @@ -78,8 +77,7 @@ where S: DataMut, { fn as_allocated_mut(&mut self) -> Result<&mut [A]> { - Ok(self - .as_slice_memory_order_mut() - .ok_or_else(|| LinalgError::MemoryNotCont)?) + self.as_slice_memory_order_mut() + .ok_or(LinalgError::MemoryNotCont) } } diff --git a/ndarray-linalg/src/least_squares.rs b/ndarray-linalg/src/least_squares.rs index 25e700e4..86ca17f3 100644 --- a/ndarray-linalg/src/least_squares.rs +++ b/ndarray-linalg/src/least_squares.rs @@ -304,12 +304,12 @@ where a.layout()?, a.as_allocated_mut()?, rhs.as_slice_memory_order_mut() - .ok_or_else(|| LinalgError::MemoryNotCont)?, + .ok_or(LinalgError::MemoryNotCont)?, )?; let (m, n) = (a.shape()[0], a.shape()[1]); let solution = rhs.slice(s![0..n]).to_owned(); - let residual_sum_of_squares = compute_residual_scalar(m, n, rank, &rhs); + let residual_sum_of_squares = compute_residual_scalar(m, n, rank, rhs); Ok(LeastSquaresResult { solution, singular_values: Array::from_shape_vec((singular_values.len(),), singular_values)?, @@ -399,7 +399,7 @@ where let solution: Array2 = rhs.slice(s![..a.shape()[1], ..]).to_owned(); let singular_values = Array::from_shape_vec((singular_values.len(),), singular_values)?; let (m, n) = (a.shape()[0], a.shape()[1]); - let residual_sum_of_squares = compute_residual_array1(m, n, rank, &rhs); + let residual_sum_of_squares = compute_residual_array1(m, n, rank, rhs); Ok(LeastSquaresResult { solution, singular_values, diff --git a/ndarray-linalg/src/lobpcg/lobpcg.rs b/ndarray-linalg/src/lobpcg/lobpcg.rs index 1bc4f2ad..8b7ab616 100644 --- a/ndarray-linalg/src/lobpcg/lobpcg.rs +++ b/ndarray-linalg/src/lobpcg/lobpcg.rs @@ -83,12 +83,11 @@ fn apply_constraints( let u = gram_yv .columns() .into_iter() - .map(|x| { + .flat_map(|x| { let res = cholesky_yy.solvec(&x).unwrap(); res.to_vec() }) - .flatten() .collect::>(); let rows = gram_yv.len_of(Axis(0)); diff --git a/ndarray-linalg/src/lobpcg/svd.rs b/ndarray-linalg/src/lobpcg/svd.rs index 7a326293..f46857cc 100644 --- a/ndarray-linalg/src/lobpcg/svd.rs +++ b/ndarray-linalg/src/lobpcg/svd.rs @@ -30,7 +30,7 @@ impl + 'static + MagnitudeCorrection> Trunc let mut a = self.eigvals.iter().enumerate().collect::>(); // sort by magnitude - a.sort_by(|(_, x), (_, y)| x.partial_cmp(&y).unwrap().reverse()); + a.sort_by(|(_, x), (_, y)| x.partial_cmp(y).unwrap().reverse()); // calculate cut-off magnitude (borrowed from scipy) let cutoff = A::epsilon() * // float precision diff --git a/ndarray-linalg/src/tridiagonal.rs b/ndarray-linalg/src/tridiagonal.rs index b603a5ee..b5aebbf2 100644 --- a/ndarray-linalg/src/tridiagonal.rs +++ b/ndarray-linalg/src/tridiagonal.rs @@ -272,7 +272,7 @@ where Sb: DataMut, { A::solve_tridiagonal( - &self, + self, rhs.layout()?, Transpose::No, rhs.as_slice_mut().unwrap(), @@ -287,7 +287,7 @@ where Sb: DataMut, { A::solve_tridiagonal( - &self, + self, rhs.layout()?, Transpose::Transpose, rhs.as_slice_mut().unwrap(), @@ -302,7 +302,7 @@ where Sb: DataMut, { A::solve_tridiagonal( - &self, + self, rhs.layout()?, Transpose::Hermite, rhs.as_slice_mut().unwrap(), @@ -622,7 +622,7 @@ where { fn det_tridiagonal(&self) -> Result { let n = self.d.len(); - Ok(rec_rel(&self)[n]) + Ok(rec_rel(self)[n]) } } @@ -671,7 +671,7 @@ where A: Scalar + Lapack, { fn rcond_tridiagonal(&self) -> Result { - Ok(A::rcond_tridiagonal(&self)?) + Ok(A::rcond_tridiagonal(self)?) } }