pub trait CpuLogpFunc {
type LogpError: Debug + Send + Sync + Error + LogpError + 'static;
type TransformParams;
// Required methods
fn dim(&self) -> usize;
fn logp(
&mut self,
position: &[f64],
gradient: &mut [f64],
) -> Result<f64, Self::LogpError>;
// Provided methods
fn inv_transform_normalize(
&mut self,
_params: &Self::TransformParams,
_untransformed_position: &[f64],
_untransformed_gradient: &[f64],
_transformed_position: &mut [f64],
_transformed_gradient: &mut [f64],
) -> Result<f64, Self::LogpError> { ... }
fn init_from_untransformed_position(
&mut self,
_params: &Self::TransformParams,
_untransformed_position: &[f64],
_untransformed_gradient: &mut [f64],
_transformed_position: &mut [f64],
_transformed_gradient: &mut [f64],
) -> Result<(f64, f64), Self::LogpError> { ... }
fn init_from_transformed_position(
&mut self,
_params: &Self::TransformParams,
_untransformed_position: &mut [f64],
_untransformed_gradient: &mut [f64],
_transformed_position: &[f64],
_transformed_gradient: &mut [f64],
) -> Result<(f64, f64), Self::LogpError> { ... }
fn update_transformation<'a, R: Rng + ?Sized>(
&'a mut self,
_rng: &mut R,
_untransformed_positions: impl ExactSizeIterator<Item = &'a [f64]>,
_untransformed_gradients: impl ExactSizeIterator<Item = &'a [f64]>,
_untransformed_logp: impl ExactSizeIterator<Item = &'a f64>,
_params: &'a mut Self::TransformParams,
) -> Result<(), Self::LogpError> { ... }
fn new_transformation<R: Rng + ?Sized>(
&mut self,
_rng: &mut R,
_untransformed_position: &[f64],
_untransformed_gradient: &[f64],
_chain: u64,
) -> Result<Self::TransformParams, Self::LogpError> { ... }
fn transformation_id(
&self,
_params: &Self::TransformParams,
) -> Result<i64, Self::LogpError> { ... }
}
Required Associated Types§
Required Methods§
fn dim(&self) -> usize
fn logp( &mut self, position: &[f64], gradient: &mut [f64], ) -> Result<f64, Self::LogpError>
Provided Methods§
fn inv_transform_normalize( &mut self, _params: &Self::TransformParams, _untransformed_position: &[f64], _untransformed_gradient: &[f64], _transformed_position: &mut [f64], _transformed_gradient: &mut [f64], ) -> Result<f64, Self::LogpError>
fn init_from_untransformed_position( &mut self, _params: &Self::TransformParams, _untransformed_position: &[f64], _untransformed_gradient: &mut [f64], _transformed_position: &mut [f64], _transformed_gradient: &mut [f64], ) -> Result<(f64, f64), Self::LogpError>
fn init_from_transformed_position( &mut self, _params: &Self::TransformParams, _untransformed_position: &mut [f64], _untransformed_gradient: &mut [f64], _transformed_position: &[f64], _transformed_gradient: &mut [f64], ) -> Result<(f64, f64), Self::LogpError>
fn update_transformation<'a, R: Rng + ?Sized>( &'a mut self, _rng: &mut R, _untransformed_positions: impl ExactSizeIterator<Item = &'a [f64]>, _untransformed_gradients: impl ExactSizeIterator<Item = &'a [f64]>, _untransformed_logp: impl ExactSizeIterator<Item = &'a f64>, _params: &'a mut Self::TransformParams, ) -> Result<(), Self::LogpError>
fn new_transformation<R: Rng + ?Sized>( &mut self, _rng: &mut R, _untransformed_position: &[f64], _untransformed_gradient: &[f64], _chain: u64, ) -> Result<Self::TransformParams, Self::LogpError>
fn transformation_id( &self, _params: &Self::TransformParams, ) -> Result<i64, Self::LogpError>
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.