@@ -15,21 +15,24 @@ fn real_a_real_b_3x3_full_rank() {
1515 [ -3.0 , 1.0 , 6.0 ] ,
1616 [ 4.0 , -5.0 , 1.0 ] ,
1717 ] ;
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 ( ) ;
1919
2020 let a = a. map ( |v| v. as_c ( ) ) ;
2121 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 {
2424 let ebv = b. dot ( & vec) . map ( |v| v * e) ;
2525 let av = a. dot ( & vec) ;
2626 assert_close_l2 ! ( & av, & ebv, 1e-7 ) ;
2727 }
2828 }
2929
30- let mut eigvals = eigvals_opt
30+ let mut eigvals = geneigvals
3131 . 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+ } )
3336 . collect :: < Vec < _ > > ( ) ;
3437 eigvals. sort_by ( |a, b| a. re ( ) . partial_cmp ( & b. re ( ) ) . unwrap ( ) ) ;
3538 let eigvals = Array1 :: from_vec ( eigvals) ;
@@ -55,21 +58,24 @@ fn real_a_real_b_3x3_nullity_1() {
5558 [ 0.0 , 1.0 , 1.0 ] ,
5659 [ 1.0 , -1.0 , 0.0 ] ,
5760 ] ;
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 ( ) ;
5962
6063 let a = a. map ( |v| v. as_c ( ) ) ;
6164 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 {
6467 let ebv = b. dot ( & vec) . map ( |v| v * e) ;
6568 let av = a. dot ( & vec) ;
6669 assert_close_l2 ! ( & av, & ebv, 1e-7 ) ;
6770 }
6871 }
6972
70- let mut eigvals = eigvals_opt
73+ let mut eigvals = geneigvals
7174 . 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+ } )
7379 . collect :: < Vec < _ > > ( ) ;
7480 eigvals. sort_by ( |a, b| a. re ( ) . partial_cmp ( & b. re ( ) ) . unwrap ( ) ) ;
7581 let eigvals = Array1 :: from_vec ( eigvals) ;
@@ -95,21 +101,24 @@ fn complex_a_complex_b_3x3_full_rank() {
95101 [ c64:: new( 0.0 , -3.0 ) , c64:: new( 2.0 , 2.0 ) , c64:: new( -4.0 , 0.0 ) ] ,
96102 [ c64:: new( 5.0 , 5.0 ) , c64:: new( -1.5 , 1.5 ) , c64:: new( 0.0 , -2.0 ) ] ,
97103 ] ;
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 ( ) ;
99105
100106 let a = a. map ( |v| v. as_c ( ) ) ;
101107 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 {
104110 let ebv = b. dot ( & vec) . map ( |v| v * e) ;
105111 let av = a. dot ( & vec) ;
106112 assert_close_l2 ! ( & av, & ebv, 1e-7 ) ;
107113 }
108114 }
109115
110- let mut eigvals = eigvals_opt
116+ let mut eigvals = geneigvals
111117 . 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+ } )
113122 . collect :: < Vec < _ > > ( ) ;
114123 eigvals. sort_by ( |a, b| a. re ( ) . partial_cmp ( & b. re ( ) ) . unwrap ( ) ) ;
115124 let eigvals = Array1 :: from_vec ( eigvals) ;
@@ -139,21 +148,24 @@ fn complex_a_complex_b_3x3_nullity_1() {
139148 [ c64:: new( 7.85029 , 7.02144 ) , c64:: new( 9.23225 , -0.479451 ) , c64:: new( 13.9507 , -16.5402 ) ] ,
140149 [ c64:: new( -4.47803 , 3.98981 ) , c64:: new( 9.44434 , -4.519970 ) , c64:: new( 40.9006 , -23.5060 ) ] ,
141150 ] ;
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 ( ) ;
143152
144153 let a = a. map ( |v| v. as_c ( ) ) ;
145154 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 {
148157 let ebv = b. dot ( & vec) . map ( |v| v * e) ;
149158 let av = a. dot ( & vec) ;
150159 assert_close_l2 ! ( & av, & ebv, 1e-7 ) ;
151160 }
152161 }
153162
154- let mut eigvals = eigvals_opt
163+ let mut eigvals = geneigvals
155164 . 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+ } )
157169 . collect :: < Vec < _ > > ( ) ;
158170 eigvals. sort_by ( |a, b| a. re ( ) . partial_cmp ( & b. re ( ) ) . unwrap ( ) ) ;
159171 let eigvals = Array1 :: from_vec ( eigvals) ;
0 commit comments