diff --git a/src/observation/ordinal.rs b/src/observation/ordinal.rs index 289f049..9301397 100644 --- a/src/observation/ordinal.rs +++ b/src/observation/ordinal.rs @@ -56,20 +56,18 @@ fn cvi_expectations(mean: f64, var: f64, ll_fct: F) -> (f64, f64, f64) where F: Fn(f64) -> f64, { - const N: usize = 30; - let std = var.sqrt(); + let mut exp_ll = 0.0; let mut alpha = 0.0; let mut beta = 0.0; - for i in 0..N { - let val = - (ROOTS_HERMITENORM_WS[i] / TAU.sqrt()) * ll_fct(std * ROOTS_HERMITENORM_XS[i] + mean); + for (ws, xs) in ROOTS_HERMITENORM_WS.iter().zip(ROOTS_HERMITENORM_XS.iter()) { + let val = (ws / TAU.sqrt()) * ll_fct(std * xs + mean); exp_ll += val; - alpha += (ROOTS_HERMITENORM_XS[i] / std) * val; - beta += ((ROOTS_HERMITENORM_XS[i].powi(2) - 1.0) / (2.0 * var)) * val; + alpha += (xs / std) * val; + beta += ((xs.powi(2) - 1.0) / (2.0 * var)) * val; } (exp_ll, alpha, beta)