Trait CpuLogpFunc

Source
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§

Source

fn dim(&self) -> usize

Source

fn logp( &mut self, position: &[f64], gradient: &mut [f64], ) -> Result<f64, Self::LogpError>

Provided Methods§

Source

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>

Source

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>

Source

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>

Source

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>

Source

fn new_transformation<R: Rng + ?Sized>( &mut self, _rng: &mut R, _untransformed_position: &[f64], _untransformed_gradient: &[f64], _chain: u64, ) -> Result<Self::TransformParams, Self::LogpError>

Source

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.

Implementors§