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