Revert back.

This commit is contained in:
2018-10-24 07:11:38 +02:00
parent 9cf91fbdf8
commit b39c446b37
5 changed files with 112 additions and 137 deletions

View File

@@ -1,29 +1,33 @@
use std::ops;
#[derive(Clone, Copy)]
#[derive(Clone, Copy, Debug)]
pub struct Gaussian {
pub pi: f64,
pub tau: f64,
pi: f64,
tau: f64,
}
impl Gaussian {
pub fn new() -> Gaussian {
Gaussian::with_pi_tau(0.0, 0.0)
}
pub fn with_pi_tau(pi: f64, tau: f64) -> Gaussian {
pub fn from_pi_tau(pi: f64, tau: f64) -> Gaussian {
Gaussian { pi, tau }
}
pub fn with_mu_sigma(mu: f64, sigma: f64) -> Gaussian {
let pi = 1.0 / sigma.powi(2);
pub fn from_mu_sigma(mu: f64, sigma: f64) -> Gaussian {
let pi = 1.0 / (sigma * sigma);
Gaussian::with_pi_tau(pi, pi * mu)
Self::from_pi_tau(pi, pi * mu)
}
pub fn pi(&self) -> f64 {
self.pi
}
pub fn tau(&self) -> f64 {
self.tau
}
pub fn mu(&self) -> f64 {
if self.pi == 0.0 {
0.0
return 0.0;
} else {
self.tau / self.pi
}
@@ -38,7 +42,7 @@ impl ops::Mul<Gaussian> for Gaussian {
type Output = Gaussian;
fn mul(self, rhs: Gaussian) -> Gaussian {
Gaussian::with_pi_tau(self.pi + rhs.pi, self.tau + rhs.tau)
Gaussian::from_pi_tau(self.pi + rhs.pi, self.tau + rhs.tau)
}
}
@@ -46,6 +50,6 @@ impl ops::Div<Gaussian> for Gaussian {
type Output = Gaussian;
fn div(self, rhs: Gaussian) -> Gaussian {
Gaussian::with_pi_tau(self.pi - rhs.pi, self.tau - rhs.tau)
Gaussian::from_pi_tau(self.pi - rhs.pi, self.tau - rhs.tau)
}
}