use crate::{ api::{ZnAddDistF64, ZnAddNormal, ZnFillDistF64, ZnFillNormal, ZnFillUniform, ZnNormalizeInplace}, layouts::{Backend, Module, Scratch, ZnToMut}, oep::{ZnAddDistF64Impl, ZnAddNormalImpl, ZnFillDistF64Impl, ZnFillNormalImpl, ZnFillUniformImpl, ZnNormalizeInplaceImpl}, source::Source, }; impl ZnNormalizeInplace for Module where B: Backend + ZnNormalizeInplaceImpl, { fn zn_normalize_inplace(&self, n: usize, basek: usize, a: &mut A, a_col: usize, scratch: &mut Scratch) where A: ZnToMut, { B::zn_normalize_inplace_impl(n, basek, a, a_col, scratch) } } impl ZnFillUniform for Module where B: Backend + ZnFillUniformImpl, { fn zn_fill_uniform(&self, n: usize, basek: usize, res: &mut R, res_col: usize, k: usize, source: &mut Source) where R: ZnToMut, { B::zn_fill_uniform_impl(n, basek, res, res_col, k, source); } } impl ZnFillDistF64 for Module where B: Backend + ZnFillDistF64Impl, { fn zn_fill_dist_f64>( &self, n: usize, basek: usize, res: &mut R, res_col: usize, k: usize, source: &mut Source, dist: D, bound: f64, ) where R: ZnToMut, { B::zn_fill_dist_f64_impl(n, basek, res, res_col, k, source, dist, bound); } } impl ZnAddDistF64 for Module where B: Backend + ZnAddDistF64Impl, { fn zn_add_dist_f64>( &self, n: usize, basek: usize, res: &mut R, res_col: usize, k: usize, source: &mut Source, dist: D, bound: f64, ) where R: ZnToMut, { B::zn_add_dist_f64_impl(n, basek, res, res_col, k, source, dist, bound); } } impl ZnFillNormal for Module where B: Backend + ZnFillNormalImpl, { fn zn_fill_normal( &self, n: usize, basek: usize, res: &mut R, res_col: usize, k: usize, source: &mut Source, sigma: f64, bound: f64, ) where R: ZnToMut, { B::zn_fill_normal_impl(n, basek, res, res_col, k, source, sigma, bound); } } impl ZnAddNormal for Module where B: Backend + ZnAddNormalImpl, { fn zn_add_normal( &self, n: usize, basek: usize, res: &mut R, res_col: usize, k: usize, source: &mut Source, sigma: f64, bound: f64, ) where R: ZnToMut, { B::zn_add_normal_impl(n, basek, res, res_col, k, source, sigma, bound); } }