diff options
author | lloyd <[email protected]> | 2010-03-15 19:14:14 +0000 |
---|---|---|
committer | lloyd <[email protected]> | 2010-03-15 19:14:14 +0000 |
commit | 992ef04c673e1eab95d419731062cd813e9360a1 (patch) | |
tree | 6668c0541464e7575417afcbaabf50914b278244 /src/math | |
parent | 953ea754b875f297c7ba8af9baf72a436552b235 (diff) |
Cache memory used for operations in point
Diffstat (limited to 'src/math')
-rw-r--r-- | src/math/numbertheory/point_gfp.cpp | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/src/math/numbertheory/point_gfp.cpp b/src/math/numbertheory/point_gfp.cpp index 1c38a502c..fe02d4d00 100644 --- a/src/math/numbertheory/point_gfp.cpp +++ b/src/math/numbertheory/point_gfp.cpp @@ -116,13 +116,13 @@ void PointGFp::add(const PointGFp& rhs, BigInt& y = ws_bn[9]; BigInt& z = ws_bn[10]; - rhs_z2 = monty_sqr(rhs.coord_z, ws); - U1 = monty_mult(coord_x, rhs_z2, ws); - S1 = monty_mult(coord_y, monty_mult(rhs.coord_z, rhs_z2, ws), ws); + monty_sqr(rhs_z2, rhs.coord_z, ws); + monty_mult(U1, coord_x, rhs_z2, ws); + monty_mult(S1, coord_y, monty_mult(rhs.coord_z, rhs_z2, ws), ws); - lhs_z2 = monty_sqr(coord_z, ws); - U2 = monty_mult(rhs.coord_x, lhs_z2, ws); - S2 = monty_mult(rhs.coord_y, monty_mult(coord_z, lhs_z2, ws), ws); + monty_sqr(lhs_z2, coord_z, ws); + monty_mult(U2, rhs.coord_x, lhs_z2, ws); + monty_mult(S2, rhs.coord_y, monty_mult(coord_z, lhs_z2, ws), ws); H = U2 - U1; if(H.is_negative()) @@ -144,13 +144,14 @@ void PointGFp::add(const PointGFp& rhs, return; } - U2 = monty_sqr(H, ws); + monty_sqr(U2, H, ws); - S2 = monty_mult(U2, H, ws); + monty_mult(S2, U2, H, ws); - U2 = monty_mult(U1, U2, ws); + monty_mult(U2, U1, U2, ws); - x = monty_sqr(r, ws) - S2 - U2*2; + monty_sqr(x, r, ws); + x -= S2 + U2*2; while(x.is_negative()) x += p; @@ -277,15 +278,15 @@ void PointGFp::mult2(Workspace& workspace) BigInt& y = ws_bn[7]; BigInt& z = ws_bn[8]; - y_2 = monty_sqr(coord_y, ws); + monty_sqr(y_2, coord_y, ws); - S = 4 * monty_mult(coord_x, y_2, ws); + monty_mult(S, coord_x, y_2, ws); + S <<= 2; // * 4 while(S >= p) S -= p; - z4 = monty_sqr(monty_sqr(coord_z, ws), ws); - - a_z4 = monty_mult(curve.get_a_r(), z4, ws); + monty_sqr(z4, monty_sqr(coord_z, ws), ws); + monty_mult(a_z4, curve.get_a_r(), z4, ws); M = 3 * monty_sqr(coord_x, ws) + a_z4; while(M >= p) @@ -307,7 +308,8 @@ void PointGFp::mult2(Workspace& workspace) if(y.is_negative()) y += p; - z = 2 * monty_mult(coord_y, coord_z, ws); + monty_mult(z, coord_y, coord_z, ws); + z <<= 1; if(z >= p) z -= p; |