Mutable/Movable parameters for multivariate normal
limads opened this issue · comments
Hello, I'm studying the possibility of using this crate for Markov Chain Monte Carlo (MCMC) based inference. In this use case, the log-density of a distribution is evaluated repeatedly at different parameter values. To do that currently, the crate requires re-creating the distributions at each iteration. This isn't much of a problem for scalar distributions, but for the multivariate normal, I have to re-allocate the mean vector and covariance matrix at each iteration (since distributions are immutable), which impacts performance.
Allowing the user to re-set the parameters separately would work:
pub fn set_mean(&mut self, mu : &[f64]);
pub fn set_variance(&mut self, var : &[f64]);
But a solution that moves the parameters out of the struct would also work (therefore preserving the intended immutable API):
pub fn take_parameters(self) -> (DVector<f64>, DMatrix<f64>);
Are there any plans to offer something like that?