@@ -273,26 +273,25 @@ void xDBLADD(point_proj_t P, point_proj_t Q, const f2elm_t XPQ, const f2elm_t ZP
273273 // Output: projective Montgomery points P <- 2*P = (X2P:Z2P) such that x(2P)=X2P/Z2P, and Q <- P+Q = (XQP:ZQP) such that = x(Q+P)=XQP/ZQP.
274274 f2elm_t t0 , t1 , t2 ;
275275
276- fp2add (P -> X , P -> Z , t0 ); // t0 = XP+ZP
277- fp2sub (P -> X , P -> Z , t1 ); // t1 = XP-ZP
278- fp2sqr_mont (t0 , P -> X ); // XP = (XP+ZP)^2
279- fp2sub (Q -> X , Q -> Z , t2 ); // t2 = XQ-ZQ
280- fp2correction (t2 );
281- fp2add (Q -> X , Q -> Z , Q -> X ); // XQ = XQ+ZQ
282- fp2mul_mont (t0 , t2 , t0 ); // t0 = (XP+ZP)*(XQ-ZQ)
283- fp2sqr_mont (t1 , P -> Z ); // ZP = (XP-ZP)^2
284- fp2mul_mont (t1 , Q -> X , t1 ); // t1 = (XP-ZP)*(XQ+ZQ)
285- fp2sub (P -> X , P -> Z , t2 ); // t2 = (XP+ZP)^2-(XP-ZP)^2
286- fp2mul_mont (P -> X , P -> Z , P -> X ); // XP = (XP+ZP)^2*(XP-ZP)^2
287- fp2mul_mont (t2 , A24 , Q -> X ); // XQ = A24*[(XP+ZP)^2-(XP-ZP)^2]
288- fp2sub (t0 , t1 , Q -> Z ); // ZQ = (XP+ZP)*(XQ-ZQ)-(XP-ZP)*(XQ+ZQ)
289- fp2add (Q -> X , P -> Z , P -> Z ); // ZP = A24*[(XP+ZP)^2-(XP-ZP)^2]+(XP-ZP)^2
290- fp2add (t0 , t1 , Q -> X ); // XQ = (XP+ZP)*(XQ-ZQ)+(XP-ZP)*(XQ+ZQ)
291- fp2mul_mont (P -> Z , t2 , P -> Z ); // ZP = [A24*[(XP+ZP)^2-(XP-ZP)^2]+(XP-ZP)^2]*[(XP+ZP)^2-(XP-ZP)^2]
292- fp2sqr_mont (Q -> Z , Q -> Z ); // ZQ = [(XP+ZP)*(XQ-ZQ)-(XP-ZP)*(XQ+ZQ)]^2
293- fp2sqr_mont (Q -> X , Q -> X ); // XQ = [(XP+ZP)*(XQ-ZQ)+(XP-ZP)*(XQ+ZQ)]^2
294- fp2mul_mont (Q -> X , ZPQ , Q -> X ); // XQ = ZPQ*[(XP+ZP)*(XQ-ZQ)+(XP-ZP)*(XQ+ZQ)]^2
295- fp2mul_mont (Q -> Z , XPQ , Q -> Z ); // ZQ = XPQ*[(XP+ZP)*(XQ-ZQ)-(XP-ZP)*(XQ+ZQ)]^2
276+ mp2_add (P -> X , P -> Z , t0 ); // t0 = XP+ZP
277+ mp2_sub_p2 (P -> X , P -> Z , t1 ); // t1 = XP-ZP
278+ fp2sqr_mont (t0 , P -> X ); // XP = (XP+ZP)^2
279+ mp2_sub_p2 (Q -> X , Q -> Z , t2 ); // t2 = XQ-ZQ
280+ mp2_add (Q -> X , Q -> Z , Q -> X ); // XQ = XQ+ZQ
281+ fp2mul_mont (t0 , t2 , t0 ); // t0 = (XP+ZP)*(XQ-ZQ)
282+ fp2sqr_mont (t1 , P -> Z ); // ZP = (XP-ZP)^2
283+ fp2mul_mont (t1 , Q -> X , t1 ); // t1 = (XP-ZP)*(XQ+ZQ)
284+ mp2_sub_p2 (P -> X , P -> Z , t2 ); // t2 = (XP+ZP)^2-(XP-ZP)^2
285+ fp2mul_mont (P -> X , P -> Z , P -> X ); // XP = (XP+ZP)^2*(XP-ZP)^2
286+ fp2mul_mont (A24 , t2 , Q -> X ); // XQ = A24*[(XP+ZP)^2-(XP-ZP)^2]
287+ mp2_sub_p2 (t0 , t1 , Q -> Z ); // ZQ = (XP+ZP)*(XQ-ZQ)-(XP-ZP)*(XQ+ZQ)
288+ mp2_add (Q -> X , P -> Z , P -> Z ); // ZP = A24*[(XP+ZP)^2-(XP-ZP)^2]+(XP-ZP)^2
289+ mp2_add (t0 , t1 , Q -> X ); // XQ = (XP+ZP)*(XQ-ZQ)+(XP-ZP)*(XQ+ZQ)
290+ fp2mul_mont (P -> Z , t2 , P -> Z ); // ZP = [A24*[(XP+ZP)^2-(XP-ZP)^2]+(XP-ZP)^2]*[(XP+ZP)^2-(XP-ZP)^2]
291+ fp2sqr_mont (Q -> Z , Q -> Z ); // ZQ = [(XP+ZP)*(XQ-ZQ)-(XP-ZP)*(XQ+ZQ)]^2
292+ fp2sqr_mont (Q -> X , Q -> X ); // XQ = [(XP+ZP)*(XQ-ZQ)+(XP-ZP)*(XQ+ZQ)]^2
293+ fp2mul_mont (Q -> Z , XPQ , Q -> Z ); // ZQ = xPQ*[(XP+ZP)*(XQ-ZQ)-(XP-ZP)*(XQ+ZQ)]^2
294+ fp2mul_mont (Q -> X , ZPQ , Q -> X ); // XQ = ZPQ*[(XP+ZP)*(XQ-ZQ)+(XP-ZP)*(XQ+ZQ)]^2
296295}
297296
298297
0 commit comments