@@ -268,34 +268,7 @@ macro_rules! impl_eig_work_c {
268
268
}
269
269
270
270
fn eval( mut self , a: & mut [ Self :: Elem ] ) -> Result <EigOwned <Self :: Elem >> {
271
- let lwork = self . work. len( ) . to_i32( ) . unwrap( ) ;
272
- let mut info = 0 ;
273
- unsafe {
274
- $ev(
275
- self . jobvl. as_ptr( ) ,
276
- self . jobvr. as_ptr( ) ,
277
- & self . n,
278
- AsPtr :: as_mut_ptr( a) ,
279
- & self . n,
280
- AsPtr :: as_mut_ptr( & mut self . eigs) ,
281
- AsPtr :: as_mut_ptr( self . vc_l. as_deref_mut( ) . unwrap_or( & mut [ ] ) ) ,
282
- & self . n,
283
- AsPtr :: as_mut_ptr( self . vc_r. as_deref_mut( ) . unwrap_or( & mut [ ] ) ) ,
284
- & self . n,
285
- AsPtr :: as_mut_ptr( & mut self . work) ,
286
- & lwork,
287
- AsPtr :: as_mut_ptr( self . rwork. as_mut( ) . unwrap( ) ) ,
288
- & mut info,
289
- )
290
- } ;
291
- info. as_lapack_result( ) ?;
292
- // Hermite conjugate
293
- if let Some ( vl) = self . vc_l. as_mut( ) {
294
- for value in vl {
295
- let value = unsafe { value. assume_init_mut( ) } ;
296
- value. im = -value. im;
297
- }
298
- }
271
+ let _eig_ref = self . calc( a) ?;
299
272
Ok ( EigOwned {
300
273
eigs: unsafe { self . eigs. assume_init( ) } ,
301
274
vl: self . vc_l. map( |v| unsafe { v. assume_init( ) } ) ,
@@ -435,49 +408,7 @@ macro_rules! impl_eig_work_r {
435
408
}
436
409
437
410
fn eval( mut self , a: & mut [ Self :: Elem ] ) -> Result <EigOwned <Self :: Elem >> {
438
- let lwork = self . work. len( ) . to_i32( ) . unwrap( ) ;
439
- let mut info = 0 ;
440
- unsafe {
441
- $ev(
442
- self . jobvl. as_ptr( ) ,
443
- self . jobvr. as_ptr( ) ,
444
- & self . n,
445
- AsPtr :: as_mut_ptr( a) ,
446
- & self . n,
447
- AsPtr :: as_mut_ptr( self . eigs_re. as_mut( ) . unwrap( ) ) ,
448
- AsPtr :: as_mut_ptr( self . eigs_im. as_mut( ) . unwrap( ) ) ,
449
- AsPtr :: as_mut_ptr( self . vr_l. as_deref_mut( ) . unwrap_or( & mut [ ] ) ) ,
450
- & self . n,
451
- AsPtr :: as_mut_ptr( self . vr_r. as_deref_mut( ) . unwrap_or( & mut [ ] ) ) ,
452
- & self . n,
453
- AsPtr :: as_mut_ptr( & mut self . work) ,
454
- & lwork,
455
- & mut info,
456
- )
457
- } ;
458
- info. as_lapack_result( ) ?;
459
-
460
- let eigs_re = self
461
- . eigs_re
462
- . as_ref( )
463
- . map( |e| unsafe { e. slice_assume_init_ref( ) } )
464
- . unwrap( ) ;
465
- let eigs_im = self
466
- . eigs_im
467
- . as_ref( )
468
- . map( |e| unsafe { e. slice_assume_init_ref( ) } )
469
- . unwrap( ) ;
470
- reconstruct_eigs( eigs_re, eigs_im, & mut self . eigs) ;
471
-
472
- if let Some ( v) = self . vr_l. as_ref( ) {
473
- let v = unsafe { v. slice_assume_init_ref( ) } ;
474
- reconstruct_eigenvectors( true , eigs_im, v, self . vc_l. as_mut( ) . unwrap( ) ) ;
475
- }
476
- if let Some ( v) = self . vr_r. as_ref( ) {
477
- let v = unsafe { v. slice_assume_init_ref( ) } ;
478
- reconstruct_eigenvectors( false , eigs_im, v, self . vc_r. as_mut( ) . unwrap( ) ) ;
479
- }
480
-
411
+ let _eig_ref = self . calc( a) ?;
481
412
Ok ( EigOwned {
482
413
eigs: unsafe { self . eigs. assume_init( ) } ,
483
414
vl: self . vc_l. map( |v| unsafe { v. assume_init( ) } ) ,
0 commit comments