@@ -14,6 +14,7 @@ use crate::{error::*, layout::MatrixLayout, *};
1414use cauchy:: * ;
1515use num_traits:: { ToPrimitive , Zero } ;
1616
17+ #[ derive( Clone , PartialEq , Eq ) ]
1718pub enum GeneralizedEigenvalue < T : Scalar > {
1819 /// Finite generalized eigenvalue: `Finite(α/β, (α, β))`
1920 Finite ( T , ( T , T ) ) ,
@@ -22,6 +23,15 @@ pub enum GeneralizedEigenvalue<T: Scalar> {
2223 Indeterminate ( ( T , T ) ) ,
2324}
2425
26+ impl < T : Scalar > std:: fmt:: Display for GeneralizedEigenvalue < T > {
27+ fn fmt ( & self , f : & mut std:: fmt:: Formatter < ' _ > ) -> std:: fmt:: Result {
28+ match self {
29+ Self :: Finite ( e, ( a, b) ) => write ! ( f, "{e:.3e} ({a:.3e}/{b:.3e})" ) ,
30+ Self :: Indeterminate ( ( a, b) ) => write ! ( f, "∞ ({a:.3e}/{b:.3e})" ) ,
31+ }
32+ }
33+ }
34+
2535#[ non_exhaustive]
2636pub struct EigGeneralizedWork < T : Scalar > {
2737 /// Problem size
@@ -464,13 +474,19 @@ macro_rules! impl_eig_generalized_work_r {
464474 if beta. abs( ) < thresh {
465475 GeneralizedEigenvalue :: Indeterminate ( ( alpha. clone( ) , beta. clone( ) ) )
466476 } else {
467- GeneralizedEigenvalue :: Finite ( alpha / beta, ( alpha. clone( ) , beta. clone( ) ) )
477+ GeneralizedEigenvalue :: Finite (
478+ alpha / beta,
479+ ( alpha. clone( ) , beta. clone( ) ) ,
480+ )
468481 }
469482 } else {
470483 if beta. is_zero( ) {
471484 GeneralizedEigenvalue :: Indeterminate ( ( alpha. clone( ) , beta. clone( ) ) )
472485 } else {
473- GeneralizedEigenvalue :: Finite ( alpha / beta, ( alpha. clone( ) , beta. clone( ) ) )
486+ GeneralizedEigenvalue :: Finite (
487+ alpha / beta,
488+ ( alpha. clone( ) , beta. clone( ) ) ,
489+ )
474490 }
475491 }
476492 } )
0 commit comments