Skip to content

Commit b80cccf

Browse files
committed
Implemented Display for GeneralizedEigenvalue.
1 parent 156d920 commit b80cccf

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

lax/src/eig_generalized.rs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ use crate::{error::*, layout::MatrixLayout, *};
1414
use cauchy::*;
1515
use num_traits::{ToPrimitive, Zero};
1616

17+
#[derive(Clone, PartialEq, Eq)]
1718
pub 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]
2636
pub 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

Comments
 (0)