use poulpy_hal::reference::fft64::{ reim::{ ReimAdd, ReimAddInplace, ReimAddMul, ReimCopy, ReimDFTExecute, ReimFFTTable, ReimFromZnx, ReimIFFTTable, ReimMul, ReimMulInplace, ReimNegate, ReimNegateInplace, ReimSub, ReimSubABInplace, ReimSubBAInplace, ReimToZnx, ReimToZnxInplace, ReimZero, fft_ref, ifft_ref, reim_add_inplace_ref, reim_add_ref, reim_addmul_ref, reim_copy_ref, reim_from_znx_i64_ref, reim_mul_inplace_ref, reim_mul_ref, reim_negate_inplace_ref, reim_negate_ref, reim_sub_ab_inplace_ref, reim_sub_ba_inplace_ref, reim_sub_ref, reim_to_znx_i64_inplace_ref, reim_to_znx_i64_ref, reim_zero_ref, }, reim4::{ Reim4Extract1Blk, Reim4Mat1ColProd, Reim4Mat2Cols2ndColProd, Reim4Mat2ColsProd, Reim4Save1Blk, Reim4Save2Blks, reim4_extract_1blk_from_reim_ref, reim4_save_1blk_to_reim_ref, reim4_save_2blk_to_reim_ref, reim4_vec_mat1col_product_ref, reim4_vec_mat2cols_2ndcol_product_ref, reim4_vec_mat2cols_product_ref, }, }; use crate::FFT64Ref; impl ReimDFTExecute, f64> for FFT64Ref { fn reim_dft_execute(table: &ReimFFTTable, data: &mut [f64]) { fft_ref(table.m(), table.omg(), data); } } impl ReimDFTExecute, f64> for FFT64Ref { fn reim_dft_execute(table: &ReimIFFTTable, data: &mut [f64]) { ifft_ref(table.m(), table.omg(), data); } } impl ReimFromZnx for FFT64Ref { #[inline(always)] fn reim_from_znx(res: &mut [f64], a: &[i64]) { reim_from_znx_i64_ref(res, a); } } impl ReimToZnx for FFT64Ref { #[inline(always)] fn reim_to_znx(res: &mut [i64], divisor: f64, a: &[f64]) { reim_to_znx_i64_ref(res, divisor, a); } } impl ReimToZnxInplace for FFT64Ref { #[inline(always)] fn reim_to_znx_inplace(res: &mut [f64], divisor: f64) { reim_to_znx_i64_inplace_ref(res, divisor); } } impl ReimAdd for FFT64Ref { #[inline(always)] fn reim_add(res: &mut [f64], a: &[f64], b: &[f64]) { reim_add_ref(res, a, b); } } impl ReimAddInplace for FFT64Ref { #[inline(always)] fn reim_add_inplace(res: &mut [f64], a: &[f64]) { reim_add_inplace_ref(res, a); } } impl ReimSub for FFT64Ref { #[inline(always)] fn reim_sub(res: &mut [f64], a: &[f64], b: &[f64]) { reim_sub_ref(res, a, b); } } impl ReimSubABInplace for FFT64Ref { #[inline(always)] fn reim_sub_ab_inplace(res: &mut [f64], a: &[f64]) { reim_sub_ab_inplace_ref(res, a); } } impl ReimSubBAInplace for FFT64Ref { #[inline(always)] fn reim_sub_ba_inplace(res: &mut [f64], a: &[f64]) { reim_sub_ba_inplace_ref(res, a); } } impl ReimNegate for FFT64Ref { #[inline(always)] fn reim_negate(res: &mut [f64], a: &[f64]) { reim_negate_ref(res, a); } } impl ReimNegateInplace for FFT64Ref { #[inline(always)] fn reim_negate_inplace(res: &mut [f64]) { reim_negate_inplace_ref(res); } } impl ReimMul for FFT64Ref { #[inline(always)] fn reim_mul(res: &mut [f64], a: &[f64], b: &[f64]) { reim_mul_ref(res, a, b); } } impl ReimMulInplace for FFT64Ref { #[inline(always)] fn reim_mul_inplace(res: &mut [f64], a: &[f64]) { reim_mul_inplace_ref(res, a); } } impl ReimAddMul for FFT64Ref { #[inline(always)] fn reim_addmul(res: &mut [f64], a: &[f64], b: &[f64]) { reim_addmul_ref(res, a, b); } } impl ReimCopy for FFT64Ref { #[inline(always)] fn reim_copy(res: &mut [f64], a: &[f64]) { reim_copy_ref(res, a); } } impl ReimZero for FFT64Ref { #[inline(always)] fn reim_zero(res: &mut [f64]) { reim_zero_ref(res); } } impl Reim4Extract1Blk for FFT64Ref { #[inline(always)] fn reim4_extract_1blk(m: usize, rows: usize, blk: usize, dst: &mut [f64], src: &[f64]) { reim4_extract_1blk_from_reim_ref(m, rows, blk, dst, src); } } impl Reim4Save1Blk for FFT64Ref { #[inline(always)] fn reim4_save_1blk(m: usize, blk: usize, dst: &mut [f64], src: &[f64]) { reim4_save_1blk_to_reim_ref::(m, blk, dst, src); } } impl Reim4Save2Blks for FFT64Ref { #[inline(always)] fn reim4_save_2blks(m: usize, blk: usize, dst: &mut [f64], src: &[f64]) { reim4_save_2blk_to_reim_ref::(m, blk, dst, src); } } impl Reim4Mat1ColProd for FFT64Ref { #[inline(always)] fn reim4_mat1col_prod(nrows: usize, dst: &mut [f64], u: &[f64], v: &[f64]) { reim4_vec_mat1col_product_ref(nrows, dst, u, v); } } impl Reim4Mat2ColsProd for FFT64Ref { #[inline(always)] fn reim4_mat2cols_prod(nrows: usize, dst: &mut [f64], u: &[f64], v: &[f64]) { reim4_vec_mat2cols_product_ref(nrows, dst, u, v); } } impl Reim4Mat2Cols2ndColProd for FFT64Ref { #[inline(always)] fn reim4_mat2cols_2ndcol_prod(nrows: usize, dst: &mut [f64], u: &[f64], v: &[f64]) { reim4_vec_mat2cols_2ndcol_product_ref(nrows, dst, u, v); } }