@@ -74,13 +74,11 @@ impl<A: Scalar + Lapack> Orthogonalizer for Householder<A> {
74
74
// Add reflector
75
75
let k = self . len ( ) ;
76
76
let xi = a[ k] . re ( ) ;
77
- a[ k] = A :: from ( if xi > Zero :: zero ( ) { xi + alpha } else { xi - alpha } ) . unwrap ( ) ;
77
+ a[ k] = A :: from ( if xi >= Zero :: zero ( ) { xi + alpha } else { xi - alpha } ) . unwrap ( ) ;
78
78
let norm = a. slice ( s ! [ k..] ) . norm_l2 ( ) ;
79
- dbg ! ( alpha) ;
80
- dbg ! ( norm) ;
81
- azip ! ( mut a ( a. slice_mut( s![ k..] ) ) in { * a = a. div_real( norm) } ) ;
79
+ azip ! ( mut a ( a. slice_mut( s![ ..k] ) ) in { * a = Zero :: zero( ) } ) ;
80
+ azip ! ( mut a ( a. slice_mut( s![ k..] ) ) in { * a = a. div_real( norm) } ) ;
82
81
self . v . push ( a. into_owned ( ) ) ;
83
- dbg ! ( & self . v) ;
84
82
Ok ( coef)
85
83
}
86
84
@@ -105,16 +103,17 @@ mod tests {
105
103
fn householder_append ( ) {
106
104
let mut householder = Householder :: new ( 3 ) ;
107
105
let coef = householder. append ( array ! [ 0.0 , 1.0 , 0.0 ] , 1e-9 ) . unwrap ( ) ;
106
+ dbg ! ( & coef) ;
108
107
close_l2 ( & coef, & array ! [ 1.0 ] , 1e-9 ) . unwrap ( ) ;
109
108
110
109
let coef = householder. append ( array ! [ 1.0 , 1.0 , 0.0 ] , 1e-9 ) . unwrap ( ) ;
111
- close_l2 ( & coef, & array ! [ 1.0 , 1.0 ] , 1e-9 ) . unwrap ( ) ;
110
+ dbg ! ( & coef) ;
111
+ close_l2 ( & coef, & array ! [ -1.0 , 1.0 ] , 1e-9 ) . unwrap ( ) ;
112
112
113
113
assert ! ( householder. append( array![ 1.0 , 2.0 , 0.0 ] , 1e-9 ) . is_err( ) ) ;
114
-
115
114
if let Err ( coef) = householder. append ( array ! [ 1.0 , 2.0 , 0.0 ] , 1e-9 ) {
116
115
dbg ! ( & coef) ;
117
- close_l2 ( & coef, & array ! [ 2.0 , 1.0 , 0.0 ] , 1e-9 ) . unwrap ( ) ;
116
+ close_l2 ( & coef, & array ! [ - 2.0 , 1.0 , 0.0 ] , 1e-9 ) . unwrap ( ) ;
118
117
}
119
118
}
120
119
0 commit comments