From 003be7427cbb69ad67936210d63b4a75a1c87c36 Mon Sep 17 00:00:00 2001 From: Toshiki Teramura Date: Sun, 20 Aug 2017 17:56:18 +0900 Subject: [PATCH 1/2] Specify the result Repr for `factorize()` --- src/solve.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/solve.rs b/src/solve.rs index f6cd3ef5..52919b63 100644 --- a/src/solve.rs +++ b/src/solve.rs @@ -75,14 +75,13 @@ where } } -impl Factorize for ArrayBase +impl Factorize> for ArrayBase where A: Scalar, Si: Data, - So: DataOwned + DataMut, { - fn factorize(&self) -> Result> { - let mut a: ArrayBase = replicate(self); + fn factorize(&self) -> Result>> { + let mut a: Array2 = replicate(self); let ipiv = unsafe { A::lu(a.layout()?, a.as_allocated_mut()?)? }; Ok(Factorized { a: a, ipiv: ipiv }) } From 50c6d3f375324e7a188ecf3500a4b3f8fe36f3e5 Mon Sep 17 00:00:00 2001 From: Toshiki Teramura Date: Sun, 20 Aug 2017 18:08:24 +0900 Subject: [PATCH 2/2] Add example for solve --- examples/solve.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 examples/solve.rs diff --git a/examples/solve.rs b/examples/solve.rs new file mode 100644 index 00000000..2bcba2d8 --- /dev/null +++ b/examples/solve.rs @@ -0,0 +1,21 @@ + +extern crate ndarray; +extern crate ndarray_linalg; + +use ndarray::*; +use ndarray_linalg::*; + +// Solve `Ax=b` for many b with fixed A +fn factorize() -> Result<(), error::LinalgError> { + let a: Array2 = random((3, 3)); + let f = a.factorize_into()?; // LU factorize A (A is consumed) + for _ in 0..10 { + let b: Array1 = random(3); + let x = f.solve(Transpose::No, b)?; // solve Ax=b using factorized L, U + } + Ok(()) +} + +fn main() { + factorize().unwrap(); +}