Remove unnecessary shadowing from Fq::invert and Fr::invert

Shadowing causes Rust to create new stack variables instead of reusing
the stack space. This change saves 160 bytes of stack space in
Fq::invert (a 20% saving in my tests), and 128 bytes of stack space in
Fr::invert.
This commit is contained in:
Jack Grigg 2019-04-30 09:50:48 +01:00
parent 085e8ae675
commit c5bf022613
No known key found for this signature in database
GPG Key ID: 9E8255172BBF9898
2 changed files with 22 additions and 24 deletions

View File

@ -416,16 +416,15 @@ impl Fq {
}
}
// found using https://github.com/kwantam/addchain
let t10 = *self;
let t0 = t10.square();
let mut t1 = t0 * &t10;
let mut t0 = self.square();
let mut t1 = t0 * self;
let mut t16 = t0.square();
let mut t6 = t16.square();
let t5 = t6 * &t0;
let mut t0 = t6 * &t16;
let t12 = t5 * &t16;
let mut t5 = t6 * &t0;
t0 = t6 * &t16;
let mut t12 = t5 * &t16;
let mut t2 = t6.square();
let t7 = t5 * &t6;
let mut t7 = t5 * &t6;
let mut t15 = t0 * &t5;
let mut t17 = t12.square();
t1.mul_assign(&t17);
@ -433,12 +432,12 @@ impl Fq {
let t8 = t1 * &t17;
let t4 = t8 * &t2;
let t9 = t8 * &t7;
let t7 = t4 * &t5;
t7 = t4 * &t5;
let t11 = t4 * &t17;
let t5 = t9 * &t17;
t5 = t9 * &t17;
let t14 = t7 * &t15;
let t13 = t11 * &t12;
let t12 = t11 * &t17;
t12 = t11 * &t17;
t15.mul_assign(&t12);
t16.mul_assign(&t15);
t3.mul_assign(&t16);
@ -465,7 +464,7 @@ impl Fq {
square_assign_multi(&mut t0, 8);
t0.mul_assign(&t8);
square_assign_multi(&mut t0, 8);
t0.mul_assign(&t10);
t0.mul_assign(self);
square_assign_multi(&mut t0, 14);
t0.mul_assign(&t9);
square_assign_multi(&mut t0, 10);

View File

@ -367,11 +367,10 @@ impl Fr {
}
}
// found using https://github.com/kwantam/addchain
let t10 = *self;
let t1 = t10.square();
let t0 = t1.square();
let t3 = t0 * &t1;
let t6 = t3 * &t10;
let mut t1 = self.square();
let mut t0 = t1.square();
let mut t3 = t0 * &t1;
let t6 = t3 * self;
let t7 = t6 * &t1;
let t12 = t7 * &t3;
let t13 = t12 * &t0;
@ -386,10 +385,10 @@ impl Fr {
let t8 = t18 * &t3;
let t17 = t14 * &t3;
let t11 = t8 * &t3;
let t1 = t17 * &t3;
t1 = t17 * &t3;
let t5 = t11 * &t3;
let t3 = t5 * &t0;
let mut t0 = t5.square();
t3 = t5 * &t0;
t0 = t5.square();
square_assign_multi(&mut t0, 5);
t0.mul_assign(&t3);
square_assign_multi(&mut t0, 6);
@ -407,7 +406,7 @@ impl Fr {
square_assign_multi(&mut t0, 5);
t0.mul_assign(&t16);
square_assign_multi(&mut t0, 3);
t0.mul_assign(&t10);
t0.mul_assign(self);
square_assign_multi(&mut t0, 11);
t0.mul_assign(&t11);
square_assign_multi(&mut t0, 8);
@ -415,7 +414,7 @@ impl Fr {
square_assign_multi(&mut t0, 5);
t0.mul_assign(&t15);
square_assign_multi(&mut t0, 8);
t0.mul_assign(&t10);
t0.mul_assign(self);
square_assign_multi(&mut t0, 12);
t0.mul_assign(&t13);
square_assign_multi(&mut t0, 7);
@ -427,9 +426,9 @@ impl Fr {
square_assign_multi(&mut t0, 5);
t0.mul_assign(&t13);
square_assign_multi(&mut t0, 2);
t0.mul_assign(&t10);
t0.mul_assign(self);
square_assign_multi(&mut t0, 6);
t0.mul_assign(&t10);
t0.mul_assign(self);
square_assign_multi(&mut t0, 9);
t0.mul_assign(&t7);
square_assign_multi(&mut t0, 6);
@ -437,7 +436,7 @@ impl Fr {
square_assign_multi(&mut t0, 8);
t0.mul_assign(&t11);
square_assign_multi(&mut t0, 3);
t0.mul_assign(&t10);
t0.mul_assign(self);
square_assign_multi(&mut t0, 12);
t0.mul_assign(&t9);
square_assign_multi(&mut t0, 11);