Skip to content

Commit 8b092f0

Browse files
committed
Bug fix of Householder::get_q
1 parent 5dce6b6 commit 8b092f0

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

src/krylov/householder.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ impl<A: Scalar> Householder<A> {
2323
/// Take a Reflection `P = I - 2ww^T`
2424
fn reflect<S: DataMut<Elem = A>>(&self, k: usize, a: &mut ArrayBase<S, Ix1>) {
2525
assert!(k < self.v.len());
26-
assert_eq!(a.len(), self.dim);
26+
assert_eq!(a.len(), self.dim, "Input array size mismaches to the dimension");
2727

2828
let w = self.v[k].slice(s![k..]);
2929
let mut a_slice = a.slice_mut(s![k..]);
@@ -90,8 +90,9 @@ impl<A: Scalar + Lapack> Orthogonalizer for Householder<A> {
9090

9191
fn get_q(&self) -> Q<A> {
9292
assert!(self.len() > 0);
93-
let mut a = Array::eye(self.len());
94-
for mut col in a.axis_iter_mut(Axis(0)) {
93+
let mut a = Array::zeros((self.dim(), self.len()));
94+
for (i, mut col) in a.axis_iter_mut(Axis(1)).enumerate() {
95+
col[i] = A::one();
9596
for l in 0..self.len() {
9697
self.reflect(l, &mut col);
9798
}

0 commit comments

Comments
 (0)