Fix Barrett reduction.

This commit is contained in:
2018-04-13 10:56:59 -04:00
parent 330dabe017
commit d98baa1381

View File

@@ -214,10 +214,8 @@ impl UCN {
let mut r1 = self.clone(); let mut r1 = self.clone();
r1.contents.resize(u.k + 1, 0); r1.contents.resize(u.k + 1, 0);
println!("r1: {:X}", r1); println!("r1: {:X}", r1);
let mut mlimited = u.m.clone(); let mut r2 = q3 * &u.m;
mlimited.contents.resize(u.k + 1, 0); r2.contents.resize(u.k + 1, 0);
let r2 = q3 * &mlimited;
println!("r2: {:X}", r2);
let mut r = if r1 >= r2 { let mut r = if r1 >= r2 {
r1 - r2 r1 - r2
} else { } else {
@@ -226,12 +224,10 @@ impl UCN {
bk1cont.push(1); bk1cont.push(1);
(r1 + UCN{ contents: bk1cont }) - r2 (r1 + UCN{ contents: bk1cont }) - r2
}; };
println!("r: {:?}", r);
// 4. Whiler≥mdo:r←rm. // 4. Whiler≥mdo:r←rm.
while &r >= &u.m { while &r >= &u.m {
r -= &u.m; r -= &u.m;
} }
println!("r: {:?}", r);
// 5. Return(r). // 5. Return(r).
r r
} }