Skip to main content

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}