@@ -15,21 +15,24 @@ fn real_a_real_b_3x3_full_rank() {
15
15
[ -3.0 , 1.0 , 6.0 ] ,
16
16
[ 4.0 , -5.0 , 1.0 ] ,
17
17
] ;
18
- let ( eigvals_opt , eigvecs) = ( a. clone ( ) , b. clone ( ) ) . eig_generalized ( None ) . unwrap ( ) ;
18
+ let ( geneigvals , eigvecs) = ( a. clone ( ) , b. clone ( ) ) . eig_generalized ( None ) . unwrap ( ) ;
19
19
20
20
let a = a. map ( |v| v. as_c ( ) ) ;
21
21
let b = b. map ( |v| v. as_c ( ) ) ;
22
- for ( e_opt , vec) in eigvals_opt . iter ( ) . zip ( eigvecs. columns ( ) ) {
23
- if let Some ( e ) = e_opt . as_ref ( ) {
22
+ for ( ge , vec) in geneigvals . iter ( ) . zip ( eigvecs. columns ( ) ) {
23
+ if let GeneralizedEigenvalue :: Finite ( e , _ ) = ge {
24
24
let ebv = b. dot ( & vec) . map ( |v| v * e) ;
25
25
let av = a. dot ( & vec) ;
26
26
assert_close_l2 ! ( & av, & ebv, 1e-7 ) ;
27
27
}
28
28
}
29
29
30
- let mut eigvals = eigvals_opt
30
+ let mut eigvals = geneigvals
31
31
. iter ( )
32
- . filter_map ( |& e_opt: & Option < c64 > | e_opt)
32
+ . filter_map ( |ge : & GeneralizedEigenvalue < c64 > | match ge {
33
+ GeneralizedEigenvalue :: Finite ( e, _) => Some ( e. clone ( ) ) ,
34
+ GeneralizedEigenvalue :: Indeterminate ( _) => None ,
35
+ } )
33
36
. collect :: < Vec < _ > > ( ) ;
34
37
eigvals. sort_by ( |a, b| a. re ( ) . partial_cmp ( & b. re ( ) ) . unwrap ( ) ) ;
35
38
let eigvals = Array1 :: from_vec ( eigvals) ;
@@ -55,21 +58,24 @@ fn real_a_real_b_3x3_nullity_1() {
55
58
[ 0.0 , 1.0 , 1.0 ] ,
56
59
[ 1.0 , -1.0 , 0.0 ] ,
57
60
] ;
58
- let ( eigvals_opt , eigvecs) = ( a. clone ( ) , b. clone ( ) ) . eig_generalized ( Some ( 1e-4 ) ) . unwrap ( ) ;
61
+ let ( geneigvals , eigvecs) = ( a. clone ( ) , b. clone ( ) ) . eig_generalized ( Some ( 1e-4 ) ) . unwrap ( ) ;
59
62
60
63
let a = a. map ( |v| v. as_c ( ) ) ;
61
64
let b = b. map ( |v| v. as_c ( ) ) ;
62
- for ( e_opt , vec) in eigvals_opt . iter ( ) . zip ( eigvecs. columns ( ) ) {
63
- if let Some ( e ) = e_opt . as_ref ( ) {
65
+ for ( ge , vec) in geneigvals . iter ( ) . zip ( eigvecs. columns ( ) ) {
66
+ if let GeneralizedEigenvalue :: Finite ( e , _ ) = ge {
64
67
let ebv = b. dot ( & vec) . map ( |v| v * e) ;
65
68
let av = a. dot ( & vec) ;
66
69
assert_close_l2 ! ( & av, & ebv, 1e-7 ) ;
67
70
}
68
71
}
69
72
70
- let mut eigvals = eigvals_opt
73
+ let mut eigvals = geneigvals
71
74
. iter ( )
72
- . filter_map ( |& e_opt: & Option < c64 > | e_opt)
75
+ . filter_map ( |ge : & GeneralizedEigenvalue < c64 > | match ge {
76
+ GeneralizedEigenvalue :: Finite ( e, _) => Some ( e. clone ( ) ) ,
77
+ GeneralizedEigenvalue :: Indeterminate ( _) => None ,
78
+ } )
73
79
. collect :: < Vec < _ > > ( ) ;
74
80
eigvals. sort_by ( |a, b| a. re ( ) . partial_cmp ( & b. re ( ) ) . unwrap ( ) ) ;
75
81
let eigvals = Array1 :: from_vec ( eigvals) ;
@@ -95,21 +101,24 @@ fn complex_a_complex_b_3x3_full_rank() {
95
101
[ c64:: new( 0.0 , -3.0 ) , c64:: new( 2.0 , 2.0 ) , c64:: new( -4.0 , 0.0 ) ] ,
96
102
[ c64:: new( 5.0 , 5.0 ) , c64:: new( -1.5 , 1.5 ) , c64:: new( 0.0 , -2.0 ) ] ,
97
103
] ;
98
- let ( eigvals_opt , eigvecs) = ( a. clone ( ) , b. clone ( ) ) . eig_generalized ( None ) . unwrap ( ) ;
104
+ let ( geneigvals , eigvecs) = ( a. clone ( ) , b. clone ( ) ) . eig_generalized ( None ) . unwrap ( ) ;
99
105
100
106
let a = a. map ( |v| v. as_c ( ) ) ;
101
107
let b = b. map ( |v| v. as_c ( ) ) ;
102
- for ( e_opt , vec) in eigvals_opt . iter ( ) . zip ( eigvecs. columns ( ) ) {
103
- if let Some ( e ) = e_opt . as_ref ( ) {
108
+ for ( ge , vec) in geneigvals . iter ( ) . zip ( eigvecs. columns ( ) ) {
109
+ if let GeneralizedEigenvalue :: Finite ( e , _ ) = ge {
104
110
let ebv = b. dot ( & vec) . map ( |v| v * e) ;
105
111
let av = a. dot ( & vec) ;
106
112
assert_close_l2 ! ( & av, & ebv, 1e-7 ) ;
107
113
}
108
114
}
109
115
110
- let mut eigvals = eigvals_opt
116
+ let mut eigvals = geneigvals
111
117
. iter ( )
112
- . filter_map ( |& e_opt: & Option < c64 > | e_opt)
118
+ . filter_map ( |ge : & GeneralizedEigenvalue < c64 > | match ge {
119
+ GeneralizedEigenvalue :: Finite ( e, _) => Some ( e. clone ( ) ) ,
120
+ GeneralizedEigenvalue :: Indeterminate ( _) => None ,
121
+ } )
113
122
. collect :: < Vec < _ > > ( ) ;
114
123
eigvals. sort_by ( |a, b| a. re ( ) . partial_cmp ( & b. re ( ) ) . unwrap ( ) ) ;
115
124
let eigvals = Array1 :: from_vec ( eigvals) ;
@@ -139,21 +148,24 @@ fn complex_a_complex_b_3x3_nullity_1() {
139
148
[ c64:: new( 7.85029 , 7.02144 ) , c64:: new( 9.23225 , -0.479451 ) , c64:: new( 13.9507 , -16.5402 ) ] ,
140
149
[ c64:: new( -4.47803 , 3.98981 ) , c64:: new( 9.44434 , -4.519970 ) , c64:: new( 40.9006 , -23.5060 ) ] ,
141
150
] ;
142
- let ( eigvals_opt , eigvecs) = ( a. clone ( ) , b. clone ( ) ) . eig_generalized ( Some ( 1e-4 ) ) . unwrap ( ) ;
151
+ let ( geneigvals , eigvecs) = ( a. clone ( ) , b. clone ( ) ) . eig_generalized ( Some ( 1e-4 ) ) . unwrap ( ) ;
143
152
144
153
let a = a. map ( |v| v. as_c ( ) ) ;
145
154
let b = b. map ( |v| v. as_c ( ) ) ;
146
- for ( e_opt , vec) in eigvals_opt . iter ( ) . zip ( eigvecs. columns ( ) ) {
147
- if let Some ( e ) = e_opt . as_ref ( ) {
155
+ for ( ge , vec) in geneigvals . iter ( ) . zip ( eigvecs. columns ( ) ) {
156
+ if let GeneralizedEigenvalue :: Finite ( e , _ ) = ge {
148
157
let ebv = b. dot ( & vec) . map ( |v| v * e) ;
149
158
let av = a. dot ( & vec) ;
150
159
assert_close_l2 ! ( & av, & ebv, 1e-7 ) ;
151
160
}
152
161
}
153
162
154
- let mut eigvals = eigvals_opt
163
+ let mut eigvals = geneigvals
155
164
. iter ( )
156
- . filter_map ( |& e_opt: & Option < c64 > | e_opt)
165
+ . filter_map ( |ge : & GeneralizedEigenvalue < c64 > | match ge {
166
+ GeneralizedEigenvalue :: Finite ( e, _) => Some ( e. clone ( ) ) ,
167
+ GeneralizedEigenvalue :: Indeterminate ( _) => None ,
168
+ } )
157
169
. collect :: < Vec < _ > > ( ) ;
158
170
eigvals. sort_by ( |a, b| a. re ( ) . partial_cmp ( & b. re ( ) ) . unwrap ( ) ) ;
159
171
let eigvals = Array1 :: from_vec ( eigvals) ;
0 commit comments