use crate::{Gaussian, N_INF}; #[derive(Debug)] pub struct TeamVariable { pub prior: Gaussian, pub likelihood_lose: Gaussian, pub likelihood_win: Gaussian, pub likelihood_draw: Gaussian, } impl TeamVariable { pub fn p(&self) -> Gaussian { self.prior * self.likelihood_lose * self.likelihood_win * self.likelihood_draw } pub fn posterior_win(&self) -> Gaussian { self.prior * self.likelihood_lose * self.likelihood_draw } pub fn posterior_lose(&self) -> Gaussian { self.prior * self.likelihood_win * self.likelihood_draw } pub fn likelihood(&self) -> Gaussian { self.likelihood_win * self.likelihood_lose * self.likelihood_draw } } impl Default for TeamVariable { fn default() -> Self { Self { prior: N_INF, likelihood_lose: N_INF, likelihood_win: N_INF, likelihood_draw: N_INF, } } }