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?
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:
But a solution that moves the parameters out of the struct would also work (therefore preserving the intended immutable API):
Are there any plans to offer something like that?