pub trait AdvancedTarget<F>: Send + Sync{
// Required methods
fn log_density(&self, x: &Array1<F>) -> F;
fn gradient(&self, x: &Array1<F>) -> Array1<F>;
fn dim(&self) -> usize;
// Provided methods
fn log_density_and_gradient(&self, x: &Array1<F>) -> (F, Array1<F>) { ... }
fn hessian(x: &Array1<F>) -> Option<Array2<F>> { ... }
fn fisher_information(x: &Array1<F>) -> Option<Array2<F>> { ... }
fn riemann_metric(x: &Array1<F>) -> Option<Array2<F>> { ... }
fn modeldimension(&self, modelid: usize) -> usize { ... }
fn model_transition_prob(from_model: usize, _tomodel: usize) -> F { ... }
fn batch_log_density(&self, xbatch: &Array2<F>) -> Array1<F> { ... }
}
Expand description
Advanced-advanced target distribution interface
Required Methods§
Sourcefn log_density(&self, x: &Array1<F>) -> F
fn log_density(&self, x: &Array1<F>) -> F
Compute log probability density
Provided Methods§
Sourcefn log_density_and_gradient(&self, x: &Array1<F>) -> (F, Array1<F>)
fn log_density_and_gradient(&self, x: &Array1<F>) -> (F, Array1<F>)
Compute both log density and gradient efficiently
Sourcefn fisher_information(x: &Array1<F>) -> Option<Array2<F>>
fn fisher_information(x: &Array1<F>) -> Option<Array2<F>>
Compute Fisher information matrix
Sourcefn riemann_metric(x: &Array1<F>) -> Option<Array2<F>>
fn riemann_metric(x: &Array1<F>) -> Option<Array2<F>>
Compute Riemann metric tensor (for Riemannian methods)
Sourcefn modeldimension(&self, modelid: usize) -> usize
fn modeldimension(&self, modelid: usize) -> usize
Support for discontinuous model spaces (for Reversible Jump)
Sourcefn model_transition_prob(from_model: usize, _tomodel: usize) -> F
fn model_transition_prob(from_model: usize, _tomodel: usize) -> F
Model transition probability (for Reversible Jump)
Sourcefn batch_log_density(&self, xbatch: &Array2<F>) -> Array1<F>
fn batch_log_density(&self, xbatch: &Array2<F>) -> Array1<F>
Support parallel evaluation of multiple points
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.