arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/poulpy-backend/src/cpu_fft64_ref/znx.rs
poulpy-backend/src/cpu_fft64_ref/znx.rsRaw
  1use poulpy_hal::reference::znx::{
  2    ZnxAdd, ZnxAddInplace, ZnxAutomorphism, ZnxCopy, ZnxNegate, ZnxNegateInplace, ZnxNormalizeFinalStep,
  3    ZnxNormalizeFinalStepInplace, ZnxNormalizeFirstStep, ZnxNormalizeFirstStepCarryOnly, ZnxNormalizeFirstStepInplace,
  4    ZnxNormalizeMiddleStep, ZnxNormalizeMiddleStepCarryOnly, ZnxNormalizeMiddleStepInplace, ZnxRotate, ZnxSub, ZnxSubABInplace,
  5    ZnxSubBAInplace, ZnxSwitchRing, ZnxZero, znx_add_inplace_ref, znx_add_ref, znx_automorphism_ref, znx_copy_ref,
  6    znx_negate_inplace_ref, znx_negate_ref, znx_normalize_final_step_inplace_ref, znx_normalize_final_step_ref,
  7    znx_normalize_first_step_carry_only_ref, znx_normalize_first_step_inplace_ref, znx_normalize_first_step_ref,
  8    znx_normalize_middle_step_carry_only_ref, znx_normalize_middle_step_inplace_ref, znx_normalize_middle_step_ref, znx_rotate,
  9    znx_sub_ab_inplace_ref, znx_sub_ba_inplace_ref, znx_sub_ref, znx_switch_ring_ref, znx_zero_ref,
 10};
 11
 12use crate::cpu_fft64_ref::FFT64Ref;
 13
 14impl ZnxAdd for FFT64Ref {
 15    #[inline(always)]
 16    fn znx_add(res: &mut [i64], a: &[i64], b: &[i64]) {
 17        znx_add_ref(res, a, b);
 18    }
 19}
 20
 21impl ZnxAddInplace for FFT64Ref {
 22    #[inline(always)]
 23    fn znx_add_inplace(res: &mut [i64], a: &[i64]) {
 24        znx_add_inplace_ref(res, a);
 25    }
 26}
 27
 28impl ZnxSub for FFT64Ref {
 29    #[inline(always)]
 30    fn znx_sub(res: &mut [i64], a: &[i64], b: &[i64]) {
 31        znx_sub_ref(res, a, b);
 32    }
 33}
 34
 35impl ZnxSubABInplace for FFT64Ref {
 36    #[inline(always)]
 37    fn znx_sub_ab_inplace(res: &mut [i64], a: &[i64]) {
 38        znx_sub_ab_inplace_ref(res, a);
 39    }
 40}
 41
 42impl ZnxSubBAInplace for FFT64Ref {
 43    #[inline(always)]
 44    fn znx_sub_ba_inplace(res: &mut [i64], a: &[i64]) {
 45        znx_sub_ba_inplace_ref(res, a);
 46    }
 47}
 48
 49impl ZnxAutomorphism for FFT64Ref {
 50    #[inline(always)]
 51    fn znx_automorphism(p: i64, res: &mut [i64], a: &[i64]) {
 52        znx_automorphism_ref(p, res, a);
 53    }
 54}
 55
 56impl ZnxCopy for FFT64Ref {
 57    #[inline(always)]
 58    fn znx_copy(res: &mut [i64], a: &[i64]) {
 59        znx_copy_ref(res, a);
 60    }
 61}
 62
 63impl ZnxNegate for FFT64Ref {
 64    #[inline(always)]
 65    fn znx_negate(res: &mut [i64], src: &[i64]) {
 66        znx_negate_ref(res, src);
 67    }
 68}
 69
 70impl ZnxNegateInplace for FFT64Ref {
 71    #[inline(always)]
 72    fn znx_negate_inplace(res: &mut [i64]) {
 73        znx_negate_inplace_ref(res);
 74    }
 75}
 76
 77impl ZnxRotate for FFT64Ref {
 78    #[inline(always)]
 79    fn znx_rotate(p: i64, res: &mut [i64], src: &[i64]) {
 80        znx_rotate::<Self>(p, res, src);
 81    }
 82}
 83
 84impl ZnxZero for FFT64Ref {
 85    #[inline(always)]
 86    fn znx_zero(res: &mut [i64]) {
 87        znx_zero_ref(res);
 88    }
 89}
 90
 91impl ZnxSwitchRing for FFT64Ref {
 92    #[inline(always)]
 93    fn znx_switch_ring(res: &mut [i64], a: &[i64]) {
 94        znx_switch_ring_ref(res, a);
 95    }
 96}
 97
 98impl ZnxNormalizeFinalStep for FFT64Ref {
 99    #[inline(always)]
100    fn znx_normalize_final_step(basek: usize, lsh: usize, x: &mut [i64], a: &[i64], carry: &mut [i64]) {
101        znx_normalize_final_step_ref(basek, lsh, x, a, carry);
102    }
103}
104
105impl ZnxNormalizeFinalStepInplace for FFT64Ref {
106    #[inline(always)]
107    fn znx_normalize_final_step_inplace(basek: usize, lsh: usize, x: &mut [i64], carry: &mut [i64]) {
108        znx_normalize_final_step_inplace_ref(basek, lsh, x, carry);
109    }
110}
111
112impl ZnxNormalizeFirstStep for FFT64Ref {
113    #[inline(always)]
114    fn znx_normalize_first_step(basek: usize, lsh: usize, x: &mut [i64], a: &[i64], carry: &mut [i64]) {
115        znx_normalize_first_step_ref(basek, lsh, x, a, carry);
116    }
117}
118
119impl ZnxNormalizeFirstStepCarryOnly for FFT64Ref {
120    #[inline(always)]
121    fn znx_normalize_first_step_carry_only(basek: usize, lsh: usize, x: &[i64], carry: &mut [i64]) {
122        znx_normalize_first_step_carry_only_ref(basek, lsh, x, carry);
123    }
124}
125
126impl ZnxNormalizeFirstStepInplace for FFT64Ref {
127    #[inline(always)]
128    fn znx_normalize_first_step_inplace(basek: usize, lsh: usize, x: &mut [i64], carry: &mut [i64]) {
129        znx_normalize_first_step_inplace_ref(basek, lsh, x, carry);
130    }
131}
132
133impl ZnxNormalizeMiddleStep for FFT64Ref {
134    #[inline(always)]
135    fn znx_normalize_middle_step(basek: usize, lsh: usize, x: &mut [i64], a: &[i64], carry: &mut [i64]) {
136        znx_normalize_middle_step_ref(basek, lsh, x, a, carry);
137    }
138}
139
140impl ZnxNormalizeMiddleStepCarryOnly for FFT64Ref {
141    #[inline(always)]
142    fn znx_normalize_middle_step_carry_only(basek: usize, lsh: usize, x: &[i64], carry: &mut [i64]) {
143        znx_normalize_middle_step_carry_only_ref(basek, lsh, x, carry);
144    }
145}
146
147impl ZnxNormalizeMiddleStepInplace for FFT64Ref {
148    #[inline(always)]
149    fn znx_normalize_middle_step_inplace(basek: usize, lsh: usize, x: &mut [i64], carry: &mut [i64]) {
150        znx_normalize_middle_step_inplace_ref(basek, lsh, x, carry);
151    }
152}