fixed rounding rescaling

This commit is contained in:
Jean-Philippe Bossuat
2025-01-08 11:06:56 +01:00
parent 3db800f4ce
commit bdd57b91ed
13 changed files with 649 additions and 362 deletions

View File

@@ -79,6 +79,9 @@ pub trait ScalarOperations<O> {
// Assigns a - b to b.
fn sa_sub_sb_into_sb<const SARANGE: u8, const REDUCE: REDUCEMOD>(&self, a: &O, b: &mut O);
// Assigns a - b to a.
fn sa_sub_sb_into_sa<const SARANGE: u8, const REDUCE: REDUCEMOD>(&self, b: &O, a: &mut O);
// Assigns -a to a.
fn sa_neg_into_sa<const SBRANGE: u8, const REDUCE: REDUCEMOD>(&self, a: &mut O);
@@ -155,6 +158,24 @@ pub trait ScalarOperations<O> {
c: &barrett::Barrett<u64>,
d: &mut u64
);
// Assigns (a - b + c) * d to e.
fn sb_sub_sa_add_sc_mul_sd_into_se<const SBRANGE: u8,const REDUCE: REDUCEMOD>(
&self,
a: &u64,
b: &u64,
c: &u64,
d: &barrett::Barrett<u64>,
e: &mut u64
);
fn sb_sub_sa_add_sc_mul_sd_into_sa<const SBRANGE: u8,const REDUCE: REDUCEMOD>(
&self,
b: &u64,
c: &u64,
d: &barrett::Barrett<u64>,
a: &mut u64
);
}
pub trait VectorOperations<O> {
@@ -187,6 +208,9 @@ pub trait VectorOperations<O> {
// vec(b) <- vec(a) - vec(b).
fn va_sub_vb_into_vb<const CHUNK: usize, const VBRANGE: u8, const REDUCE: REDUCEMOD>(&self, a: &[O], b: &mut [O]);
// vec(a) <- vec(a) - vec(b).
fn va_sub_vb_into_va<const CHUNK: usize, const VBRANGE: u8, const REDUCE: REDUCEMOD>(&self, b: &[O], a: &mut [O]);
// vec(c) <- vec(a) - vec(b).
fn va_sub_vb_into_vc<const CHUNK: usize, const VBRANGE: u8, const REDUCE: REDUCEMOD>(
&self,
@@ -271,4 +295,23 @@ pub trait VectorOperations<O> {
sc: &barrett::Barrett<u64>,
va: &mut [u64],
);
// vec(e) <- (vec(b) - vec(a) + scalar(c)) * scalar(e).
fn vb_sub_va_add_sc_mul_sd_into_ve<const CHUNK: usize, const VBRANGE: u8, const REDUCE: REDUCEMOD>(
&self,
va: &[u64],
vb: &[u64],
sc: &u64,
sd: &barrett::Barrett<u64>,
ve: &mut [u64],
);
// vec(a) <- (vec(b) - vec(a) + scalar(c)) * scalar(e).
fn vb_sub_va_add_sc_mul_sd_into_va<const CHUNK: usize, const VBRANGE: u8, const REDUCE: REDUCEMOD>(
&self,
vb: &[u64],
sc: &u64,
sd: &barrett::Barrett<u64>,
va: &mut [u64],
);
}