@@ -2,8 +2,11 @@ use ndarray::*;
2
2
use ndarray_linalg:: * ;
3
3
4
4
// Test Av_i = e_i v_i for i = 0..n
5
- fn test_eig < T : Scalar > ( a : Array2 < T > , eigs : Array1 < T :: Complex > , vecs : Array2 < T :: Complex > )
6
- where
5
+ fn test_eig < T : Scalar > (
6
+ a : ArrayView2 < ' _ , T > ,
7
+ eigs : ArrayView1 < ' _ , T :: Complex > ,
8
+ vecs : ArrayView2 < ' _ , T :: Complex > ,
9
+ ) where
7
10
T :: Complex : Lapack ,
8
11
{
9
12
println ! ( "a\n {:+.4}" , & a) ;
@@ -205,29 +208,37 @@ macro_rules! impl_test_real {
205
208
#[ test]
206
209
fn [ <$real _eigvals >] ( ) {
207
210
let a = test_matrix_real:: <$real>( ) ;
208
- let ( e, _vecs) = a. eig( ) . unwrap( ) ;
209
- assert_close_l2!( & e, & answer_eig_real:: <$real>( ) , 1.0e-3 ) ;
211
+ let ( e1, _vecs) = a. eig( ) . unwrap( ) ;
212
+ let e2 = a. eigvals( ) . unwrap( ) ;
213
+ assert_close_l2!( & e1, & answer_eig_real:: <$real>( ) , 1.0e-3 ) ;
214
+ assert_close_l2!( & e2, & answer_eig_real:: <$real>( ) , 1.0e-3 ) ;
210
215
}
211
216
212
217
#[ test]
213
218
fn [ <$real _eigvals_t>] ( ) {
214
219
let a = test_matrix_real_t:: <$real>( ) ;
215
- let ( e, _vecs) = a. eig( ) . unwrap( ) ;
216
- assert_close_l2!( & e, & answer_eig_real:: <$real>( ) , 1.0e-3 ) ;
220
+ let ( e1, _vecs) = a. eig( ) . unwrap( ) ;
221
+ let e2 = a. eigvals( ) . unwrap( ) ;
222
+ assert_close_l2!( & e1, & answer_eig_real:: <$real>( ) , 1.0e-3 ) ;
223
+ assert_close_l2!( & e2, & answer_eig_real:: <$real>( ) , 1.0e-3 ) ;
217
224
}
218
225
219
226
#[ test]
220
227
fn [ <$real _eig>] ( ) {
221
228
let a = test_matrix_real:: <$real>( ) ;
222
- let ( e, vecs) = a. eig( ) . unwrap( ) ;
223
- test_eig( a, e, vecs) ;
229
+ let ( e1, vecs) = a. eig( ) . unwrap( ) ;
230
+ let e2 = a. eigvals( ) . unwrap( ) ;
231
+ test_eig( a. view( ) , e1. view( ) , vecs. view( ) ) ;
232
+ test_eig( a. view( ) , e2. view( ) , vecs. view( ) ) ;
224
233
}
225
234
226
235
#[ test]
227
236
fn [ <$real _eig_t>] ( ) {
228
237
let a = test_matrix_real_t:: <$real>( ) ;
229
- let ( e, vecs) = a. eig( ) . unwrap( ) ;
230
- test_eig( a, e, vecs) ;
238
+ let ( e1, vecs) = a. eig( ) . unwrap( ) ;
239
+ let e2 = a. eigvals( ) . unwrap( ) ;
240
+ test_eig( a. view( ) , e1. view( ) , vecs. view( ) ) ;
241
+ test_eig( a. view( ) , e2. view( ) , vecs. view( ) ) ;
231
242
}
232
243
233
244
} // paste::item!
@@ -243,15 +254,19 @@ macro_rules! impl_test_complex {
243
254
#[ test]
244
255
fn [ <$complex _eigvals >] ( ) {
245
256
let a = test_matrix_complex:: <$complex>( ) ;
246
- let ( e, _vecs) = a. eig( ) . unwrap( ) ;
247
- assert_close_l2!( & e, & answer_eig_complex:: <$complex>( ) , 1.0e-3 ) ;
257
+ let ( e1, _vecs) = a. eig( ) . unwrap( ) ;
258
+ let e2 = a. eigvals( ) . unwrap( ) ;
259
+ assert_close_l2!( & e1, & answer_eig_complex:: <$complex>( ) , 1.0e-3 ) ;
260
+ assert_close_l2!( & e2, & answer_eig_complex:: <$complex>( ) , 1.0e-3 ) ;
248
261
}
249
262
250
263
#[ test]
251
264
fn [ <$complex _eigvals_t>] ( ) {
252
265
let a = test_matrix_complex_t:: <$complex>( ) ;
253
- let ( e, _vecs) = a. eig( ) . unwrap( ) ;
254
- assert_close_l2!( & e, & answer_eig_complex:: <$complex>( ) , 1.0e-3 ) ;
266
+ let ( e1, _vecs) = a. eig( ) . unwrap( ) ;
267
+ let e2 = a. eigvals( ) . unwrap( ) ;
268
+ assert_close_l2!( & e1, & answer_eig_complex:: <$complex>( ) , 1.0e-3 ) ;
269
+ assert_close_l2!( & e2, & answer_eig_complex:: <$complex>( ) , 1.0e-3 ) ;
255
270
}
256
271
257
272
#[ test]
@@ -271,15 +286,19 @@ macro_rules! impl_test_complex {
271
286
#[ test]
272
287
fn [ <$complex _eig>] ( ) {
273
288
let a = test_matrix_complex:: <$complex>( ) ;
274
- let ( e, vecs) = a. eig( ) . unwrap( ) ;
275
- test_eig( a, e, vecs) ;
289
+ let ( e1, vecs) = a. eig( ) . unwrap( ) ;
290
+ let e2 = a. eigvals( ) . unwrap( ) ;
291
+ test_eig( a. view( ) , e1. view( ) , vecs. view( ) ) ;
292
+ test_eig( a. view( ) , e2. view( ) , vecs. view( ) ) ;
276
293
}
277
294
278
295
#[ test]
279
296
fn [ <$complex _eig_t>] ( ) {
280
297
let a = test_matrix_complex_t:: <$complex>( ) ;
281
- let ( e, vecs) = a. eig( ) . unwrap( ) ;
282
- test_eig( a, e, vecs) ;
298
+ let ( e1, vecs) = a. eig( ) . unwrap( ) ;
299
+ let e2 = a. eigvals( ) . unwrap( ) ;
300
+ test_eig( a. view( ) , e1. view( ) , vecs. view( ) ) ;
301
+ test_eig( a. view( ) , e2. view( ) , vecs. view( ) ) ;
283
302
}
284
303
} // paste::item!
285
304
} ;
0 commit comments