Skip to content

Commit 304ae52

Browse files
committed
fix solve system for corner case with 1x1 sparse matrix (one equation)
1 parent 976dae1 commit 304ae52

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

src/sprsext.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,14 @@ pub fn solve<T>(a: &CsMat<T>, b: &Array2<T>) -> Array2<T>
140140

141141
for (b_col, mut x_col) in b_col_iter.zip(x_col_iter) {
142142
let xi = {
143-
let ldl = LdlNumeric::new(a.view()).unwrap();
144-
let b_vec = Vec::from_iter(b_col.iter().cloned());
145-
let x_vec = ldl.solve(&b_vec);
143+
let x_vec = if b_col.len() > 1 {
144+
let ldl = LdlNumeric::new(a.view()).unwrap();
145+
let b_vec = Vec::from_iter(b_col.iter().cloned());
146+
ldl.solve(&b_vec)
147+
} else {
148+
// In this corner case we have 1x1 sparse matrix and `b` vector with 1 element
149+
vec![b_col[0] / a.to_dense()[[0, 0]]]
150+
};
146151

147152
Array1::from(x_vec)
148153
};

0 commit comments

Comments
 (0)