use crate::XResult;
#[cfg(feature = "cuda")]
mod cuda;
#[cfg(feature = "cuda")]
pub use cuda::*;
#[cfg(feature = "metal")]
pub mod metal;
#[cfg(feature = "metal")]
pub use metal::*;
pub trait GPUMoment {
fn raw_moment_gpu(
&self,
duration: f32,
order: i32,
particles: usize,
time_step: f32,
) -> XResult<f32>;
fn central_moment_gpu(
&self,
duration: f32,
order: i32,
particles: usize,
time_step: f32,
) -> XResult<f32>;
fn mean_gpu(&self, duration: f32, particles: usize, time_step: f32) -> XResult<f32>;
fn msd_gpu(&self, duration: f32, particles: usize, time_step: f32) -> XResult<f32>;
fn frac_raw_moment_gpu(
&self,
duration: f32,
order: f32,
particles: usize,
time_step: f32,
) -> XResult<f32>;
fn frac_central_moment_gpu(
&self,
duration: f32,
order: f32,
particles: usize,
time_step: f32,
) -> XResult<f32>;
}