gam_problem/pseudo_logdet.rs
1/// How the penalized Hessian's log-determinant and derivatives treat the
2/// spectrum below the stability floor.
3#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
4pub enum PseudoLogdetMode {
5 /// Keep every eigenpair in the smooth spectral regularizer.
6 #[default]
7 Smooth,
8 /// Exclude numerical null-space directions consistently from pseudo-logdet
9 /// and derivative traces.
10 HardPseudo,
11}
12
13#[cfg(test)]
14mod tests {
15 use super::*;
16
17 #[test]
18 fn default_is_smooth() {
19 assert_eq!(PseudoLogdetMode::default(), PseudoLogdetMode::Smooth);
20 }
21
22 #[test]
23 fn variants_are_distinct() {
24 assert_ne!(PseudoLogdetMode::Smooth, PseudoLogdetMode::HardPseudo);
25 }
26}