@@ -39,13 +39,13 @@ static const secp256k1_modinv64_signed62 SECP256K1_SIGNED62_ONE = {{1}};
3939
4040/* Compute a*factor and put it in r. All but the top limb in r will be in range [0,2^62). */ 
4141static  void  secp256k1_modinv64_mul_62 (secp256k1_modinv64_signed62  * r , const  secp256k1_modinv64_signed62  * a , int  alen , int64_t  factor ) {
42-     const  int64_t  M62  =  ( int64_t )( UINT64_MAX  >> 2 ) ;
42+     const  uint64_t  M62  =  UINT64_MAX  >> 2 ;
4343    secp256k1_int128  c , d ;
4444    int  i ;
4545    secp256k1_i128_from_i64 (& c , 0 );
4646    for  (i  =  0 ; i  <  4 ; ++ i ) {
4747        if  (i  <  alen ) secp256k1_i128_accum_mul (& c , a -> v [i ], factor );
48-         r -> v [i ] =  secp256k1_i128_to_i64 (& c ) &  M62 ; secp256k1_i128_rshift (& c , 62 );
48+         r -> v [i ] =  secp256k1_i128_to_u64 (& c ) &  M62 ; secp256k1_i128_rshift (& c , 62 );
4949    }
5050    if  (4  <  alen ) secp256k1_i128_accum_mul (& c , a -> v [4 ], factor );
5151    secp256k1_i128_from_i64 (& d , secp256k1_i128_to_i64 (& c ));
@@ -314,7 +314,7 @@ static int64_t secp256k1_modinv64_divsteps_62_var(int64_t eta, uint64_t f0, uint
314314 * This implements the update_de function from the explanation. 
315315 */ 
316316static  void  secp256k1_modinv64_update_de_62 (secp256k1_modinv64_signed62  * d , secp256k1_modinv64_signed62  * e , const  secp256k1_modinv64_trans2x2  * t , const  secp256k1_modinv64_modinfo *  modinfo ) {
317-     const  int64_t  M62  =  ( int64_t )( UINT64_MAX  >> 2 ) ;
317+     const  uint64_t  M62  =  UINT64_MAX  >> 2 ;
318318    const  int64_t  d0  =  d -> v [0 ], d1  =  d -> v [1 ], d2  =  d -> v [2 ], d3  =  d -> v [3 ], d4  =  d -> v [4 ];
319319    const  int64_t  e0  =  e -> v [0 ], e1  =  e -> v [1 ], e2  =  e -> v [2 ], e3  =  e -> v [3 ], e4  =  e -> v [4 ];
320320    const  int64_t  u  =  t -> u , v  =  t -> v , q  =  t -> q , r  =  t -> r ;
@@ -327,8 +327,8 @@ static void secp256k1_modinv64_update_de_62(secp256k1_modinv64_signed62 *d, secp
327327    VERIFY_CHECK (secp256k1_modinv64_mul_cmp_62 (e , 5 , & modinfo -> modulus , 1 ) <  0 );  /* e <    modulus */ 
328328    VERIFY_CHECK ((secp256k1_modinv64_abs (u ) +  secp256k1_modinv64_abs (v )) >= 0 ); /* |u|+|v| doesn't overflow */ 
329329    VERIFY_CHECK ((secp256k1_modinv64_abs (q ) +  secp256k1_modinv64_abs (r )) >= 0 ); /* |q|+|r| doesn't overflow */ 
330-     VERIFY_CHECK ((secp256k1_modinv64_abs (u ) +  secp256k1_modinv64_abs (v )) <= M62   +   1 ); /* |u|+|v| <= 2^62 */ 
331-     VERIFY_CHECK ((secp256k1_modinv64_abs (q ) +  secp256k1_modinv64_abs (r )) <= M62   +   1 ); /* |q|+|r| <= 2^62 */ 
330+     VERIFY_CHECK ((secp256k1_modinv64_abs (u ) +  secp256k1_modinv64_abs (v )) <= ( int64_t ) 1  <<  62 ); /* |u|+|v| <= 2^62 */ 
331+     VERIFY_CHECK ((secp256k1_modinv64_abs (q ) +  secp256k1_modinv64_abs (r )) <= ( int64_t ) 1  <<  62 ); /* |q|+|r| <= 2^62 */ 
332332#endif 
333333    /* [md,me] start as zero; plus [u,q] if d is negative; plus [v,r] if e is negative. */ 
334334    sd  =  d4  >> 63 ;
@@ -341,14 +341,14 @@ static void secp256k1_modinv64_update_de_62(secp256k1_modinv64_signed62 *d, secp
341341    secp256k1_i128_mul (& ce , q , d0 );
342342    secp256k1_i128_accum_mul (& ce , r , e0 );
343343    /* Correct md,me so that t*[d,e]+modulus*[md,me] has 62 zero bottom bits. */ 
344-     md  -=  (modinfo -> modulus_inv62  *  ( uint64_t ) secp256k1_i128_to_i64 (& cd ) +  md ) &  M62 ;
345-     me  -=  (modinfo -> modulus_inv62  *  ( uint64_t ) secp256k1_i128_to_i64 (& ce ) +  me ) &  M62 ;
344+     md  -=  (modinfo -> modulus_inv62  *  secp256k1_i128_to_u64 (& cd ) +  md ) &  M62 ;
345+     me  -=  (modinfo -> modulus_inv62  *  secp256k1_i128_to_u64 (& ce ) +  me ) &  M62 ;
346346    /* Update the beginning of computation for t*[d,e]+modulus*[md,me] now md,me are known. */ 
347347    secp256k1_i128_accum_mul (& cd , modinfo -> modulus .v [0 ], md );
348348    secp256k1_i128_accum_mul (& ce , modinfo -> modulus .v [0 ], me );
349349    /* Verify that the low 62 bits of the computation are indeed zero, and then throw them away. */ 
350-     VERIFY_CHECK ((secp256k1_i128_to_i64 (& cd ) &  M62 ) ==  0 ); secp256k1_i128_rshift (& cd , 62 );
351-     VERIFY_CHECK ((secp256k1_i128_to_i64 (& ce ) &  M62 ) ==  0 ); secp256k1_i128_rshift (& ce , 62 );
350+     VERIFY_CHECK ((secp256k1_i128_to_u64 (& cd ) &  M62 ) ==  0 ); secp256k1_i128_rshift (& cd , 62 );
351+     VERIFY_CHECK ((secp256k1_i128_to_u64 (& ce ) &  M62 ) ==  0 ); secp256k1_i128_rshift (& ce , 62 );
352352    /* Compute limb 1 of t*[d,e]+modulus*[md,me], and store it as output limb 0 (= down shift). */ 
353353    secp256k1_i128_accum_mul (& cd , u , d1 );
354354    secp256k1_i128_accum_mul (& cd , v , e1 );
@@ -358,8 +358,8 @@ static void secp256k1_modinv64_update_de_62(secp256k1_modinv64_signed62 *d, secp
358358        secp256k1_i128_accum_mul (& cd , modinfo -> modulus .v [1 ], md );
359359        secp256k1_i128_accum_mul (& ce , modinfo -> modulus .v [1 ], me );
360360    }
361-     d -> v [0 ] =  secp256k1_i128_to_i64 (& cd ) &  M62 ; secp256k1_i128_rshift (& cd , 62 );
362-     e -> v [0 ] =  secp256k1_i128_to_i64 (& ce ) &  M62 ; secp256k1_i128_rshift (& ce , 62 );
361+     d -> v [0 ] =  secp256k1_i128_to_u64 (& cd ) &  M62 ; secp256k1_i128_rshift (& cd , 62 );
362+     e -> v [0 ] =  secp256k1_i128_to_u64 (& ce ) &  M62 ; secp256k1_i128_rshift (& ce , 62 );
363363    /* Compute limb 2 of t*[d,e]+modulus*[md,me], and store it as output limb 1. */ 
364364    secp256k1_i128_accum_mul (& cd , u , d2 );
365365    secp256k1_i128_accum_mul (& cd , v , e2 );
@@ -369,8 +369,8 @@ static void secp256k1_modinv64_update_de_62(secp256k1_modinv64_signed62 *d, secp
369369        secp256k1_i128_accum_mul (& cd , modinfo -> modulus .v [2 ], md );
370370        secp256k1_i128_accum_mul (& ce , modinfo -> modulus .v [2 ], me );
371371    }
372-     d -> v [1 ] =  secp256k1_i128_to_i64 (& cd ) &  M62 ; secp256k1_i128_rshift (& cd , 62 );
373-     e -> v [1 ] =  secp256k1_i128_to_i64 (& ce ) &  M62 ; secp256k1_i128_rshift (& ce , 62 );
372+     d -> v [1 ] =  secp256k1_i128_to_u64 (& cd ) &  M62 ; secp256k1_i128_rshift (& cd , 62 );
373+     e -> v [1 ] =  secp256k1_i128_to_u64 (& ce ) &  M62 ; secp256k1_i128_rshift (& ce , 62 );
374374    /* Compute limb 3 of t*[d,e]+modulus*[md,me], and store it as output limb 2. */ 
375375    secp256k1_i128_accum_mul (& cd , u , d3 );
376376    secp256k1_i128_accum_mul (& cd , v , e3 );
@@ -380,17 +380,17 @@ static void secp256k1_modinv64_update_de_62(secp256k1_modinv64_signed62 *d, secp
380380        secp256k1_i128_accum_mul (& cd , modinfo -> modulus .v [3 ], md );
381381        secp256k1_i128_accum_mul (& ce , modinfo -> modulus .v [3 ], me );
382382    }
383-     d -> v [2 ] =  secp256k1_i128_to_i64 (& cd ) &  M62 ; secp256k1_i128_rshift (& cd , 62 );
384-     e -> v [2 ] =  secp256k1_i128_to_i64 (& ce ) &  M62 ; secp256k1_i128_rshift (& ce , 62 );
383+     d -> v [2 ] =  secp256k1_i128_to_u64 (& cd ) &  M62 ; secp256k1_i128_rshift (& cd , 62 );
384+     e -> v [2 ] =  secp256k1_i128_to_u64 (& ce ) &  M62 ; secp256k1_i128_rshift (& ce , 62 );
385385    /* Compute limb 4 of t*[d,e]+modulus*[md,me], and store it as output limb 3. */ 
386386    secp256k1_i128_accum_mul (& cd , u , d4 );
387387    secp256k1_i128_accum_mul (& cd , v , e4 );
388388    secp256k1_i128_accum_mul (& ce , q , d4 );
389389    secp256k1_i128_accum_mul (& ce , r , e4 );
390390    secp256k1_i128_accum_mul (& cd , modinfo -> modulus .v [4 ], md );
391391    secp256k1_i128_accum_mul (& ce , modinfo -> modulus .v [4 ], me );
392-     d -> v [3 ] =  secp256k1_i128_to_i64 (& cd ) &  M62 ; secp256k1_i128_rshift (& cd , 62 );
393-     e -> v [3 ] =  secp256k1_i128_to_i64 (& ce ) &  M62 ; secp256k1_i128_rshift (& ce , 62 );
392+     d -> v [3 ] =  secp256k1_i128_to_u64 (& cd ) &  M62 ; secp256k1_i128_rshift (& cd , 62 );
393+     e -> v [3 ] =  secp256k1_i128_to_u64 (& ce ) &  M62 ; secp256k1_i128_rshift (& ce , 62 );
394394    /* What remains is limb 5 of t*[d,e]+modulus*[md,me]; store it as output limb 4. */ 
395395    d -> v [4 ] =  secp256k1_i128_to_i64 (& cd );
396396    e -> v [4 ] =  secp256k1_i128_to_i64 (& ce );
@@ -407,7 +407,7 @@ static void secp256k1_modinv64_update_de_62(secp256k1_modinv64_signed62 *d, secp
407407 * This implements the update_fg function from the explanation. 
408408 */ 
409409static  void  secp256k1_modinv64_update_fg_62 (secp256k1_modinv64_signed62  * f , secp256k1_modinv64_signed62  * g , const  secp256k1_modinv64_trans2x2  * t ) {
410-     const  int64_t  M62  =  ( int64_t )( UINT64_MAX  >> 2 ) ;
410+     const  uint64_t  M62  =  UINT64_MAX  >> 2 ;
411411    const  int64_t  f0  =  f -> v [0 ], f1  =  f -> v [1 ], f2  =  f -> v [2 ], f3  =  f -> v [3 ], f4  =  f -> v [4 ];
412412    const  int64_t  g0  =  g -> v [0 ], g1  =  g -> v [1 ], g2  =  g -> v [2 ], g3  =  g -> v [3 ], g4  =  g -> v [4 ];
413413    const  int64_t  u  =  t -> u , v  =  t -> v , q  =  t -> q , r  =  t -> r ;
@@ -418,36 +418,36 @@ static void secp256k1_modinv64_update_fg_62(secp256k1_modinv64_signed62 *f, secp
418418    secp256k1_i128_mul (& cg , q , f0 );
419419    secp256k1_i128_accum_mul (& cg , r , g0 );
420420    /* Verify that the bottom 62 bits of the result are zero, and then throw them away. */ 
421-     VERIFY_CHECK ((secp256k1_i128_to_i64 (& cf ) &  M62 ) ==  0 ); secp256k1_i128_rshift (& cf , 62 );
422-     VERIFY_CHECK ((secp256k1_i128_to_i64 (& cg ) &  M62 ) ==  0 ); secp256k1_i128_rshift (& cg , 62 );
421+     VERIFY_CHECK ((secp256k1_i128_to_u64 (& cf ) &  M62 ) ==  0 ); secp256k1_i128_rshift (& cf , 62 );
422+     VERIFY_CHECK ((secp256k1_i128_to_u64 (& cg ) &  M62 ) ==  0 ); secp256k1_i128_rshift (& cg , 62 );
423423    /* Compute limb 1 of t*[f,g], and store it as output limb 0 (= down shift). */ 
424424    secp256k1_i128_accum_mul (& cf , u , f1 );
425425    secp256k1_i128_accum_mul (& cf , v , g1 );
426426    secp256k1_i128_accum_mul (& cg , q , f1 );
427427    secp256k1_i128_accum_mul (& cg , r , g1 );
428-     f -> v [0 ] =  secp256k1_i128_to_i64 (& cf ) &  M62 ; secp256k1_i128_rshift (& cf , 62 );
429-     g -> v [0 ] =  secp256k1_i128_to_i64 (& cg ) &  M62 ; secp256k1_i128_rshift (& cg , 62 );
428+     f -> v [0 ] =  secp256k1_i128_to_u64 (& cf ) &  M62 ; secp256k1_i128_rshift (& cf , 62 );
429+     g -> v [0 ] =  secp256k1_i128_to_u64 (& cg ) &  M62 ; secp256k1_i128_rshift (& cg , 62 );
430430    /* Compute limb 2 of t*[f,g], and store it as output limb 1. */ 
431431    secp256k1_i128_accum_mul (& cf , u , f2 );
432432    secp256k1_i128_accum_mul (& cf , v , g2 );
433433    secp256k1_i128_accum_mul (& cg , q , f2 );
434434    secp256k1_i128_accum_mul (& cg , r , g2 );
435-     f -> v [1 ] =  secp256k1_i128_to_i64 (& cf ) &  M62 ; secp256k1_i128_rshift (& cf , 62 );
436-     g -> v [1 ] =  secp256k1_i128_to_i64 (& cg ) &  M62 ; secp256k1_i128_rshift (& cg , 62 );
435+     f -> v [1 ] =  secp256k1_i128_to_u64 (& cf ) &  M62 ; secp256k1_i128_rshift (& cf , 62 );
436+     g -> v [1 ] =  secp256k1_i128_to_u64 (& cg ) &  M62 ; secp256k1_i128_rshift (& cg , 62 );
437437    /* Compute limb 3 of t*[f,g], and store it as output limb 2. */ 
438438    secp256k1_i128_accum_mul (& cf , u , f3 );
439439    secp256k1_i128_accum_mul (& cf , v , g3 );
440440    secp256k1_i128_accum_mul (& cg , q , f3 );
441441    secp256k1_i128_accum_mul (& cg , r , g3 );
442-     f -> v [2 ] =  secp256k1_i128_to_i64 (& cf ) &  M62 ; secp256k1_i128_rshift (& cf , 62 );
443-     g -> v [2 ] =  secp256k1_i128_to_i64 (& cg ) &  M62 ; secp256k1_i128_rshift (& cg , 62 );
442+     f -> v [2 ] =  secp256k1_i128_to_u64 (& cf ) &  M62 ; secp256k1_i128_rshift (& cf , 62 );
443+     g -> v [2 ] =  secp256k1_i128_to_u64 (& cg ) &  M62 ; secp256k1_i128_rshift (& cg , 62 );
444444    /* Compute limb 4 of t*[f,g], and store it as output limb 3. */ 
445445    secp256k1_i128_accum_mul (& cf , u , f4 );
446446    secp256k1_i128_accum_mul (& cf , v , g4 );
447447    secp256k1_i128_accum_mul (& cg , q , f4 );
448448    secp256k1_i128_accum_mul (& cg , r , g4 );
449-     f -> v [3 ] =  secp256k1_i128_to_i64 (& cf ) &  M62 ; secp256k1_i128_rshift (& cf , 62 );
450-     g -> v [3 ] =  secp256k1_i128_to_i64 (& cg ) &  M62 ; secp256k1_i128_rshift (& cg , 62 );
449+     f -> v [3 ] =  secp256k1_i128_to_u64 (& cf ) &  M62 ; secp256k1_i128_rshift (& cf , 62 );
450+     g -> v [3 ] =  secp256k1_i128_to_u64 (& cg ) &  M62 ; secp256k1_i128_rshift (& cg , 62 );
451451    /* What remains is limb 5 of t*[f,g]; store it as output limb 4. */ 
452452    f -> v [4 ] =  secp256k1_i128_to_i64 (& cf );
453453    g -> v [4 ] =  secp256k1_i128_to_i64 (& cg );
@@ -460,7 +460,7 @@ static void secp256k1_modinv64_update_fg_62(secp256k1_modinv64_signed62 *f, secp
460460 * This implements the update_fg function from the explanation. 
461461 */ 
462462static  void  secp256k1_modinv64_update_fg_62_var (int  len , secp256k1_modinv64_signed62  * f , secp256k1_modinv64_signed62  * g , const  secp256k1_modinv64_trans2x2  * t ) {
463-     const  int64_t  M62  =  ( int64_t )( UINT64_MAX  >> 2 ) ;
463+     const  uint64_t  M62  =  UINT64_MAX  >> 2 ;
464464    const  int64_t  u  =  t -> u , v  =  t -> v , q  =  t -> q , r  =  t -> r ;
465465    int64_t  fi , gi ;
466466    secp256k1_int128  cf , cg ;
@@ -474,8 +474,8 @@ static void secp256k1_modinv64_update_fg_62_var(int len, secp256k1_modinv64_sign
474474    secp256k1_i128_mul (& cg , q , fi );
475475    secp256k1_i128_accum_mul (& cg , r , gi );
476476    /* Verify that the bottom 62 bits of the result are zero, and then throw them away. */ 
477-     VERIFY_CHECK ((secp256k1_i128_to_i64 (& cf ) &  M62 ) ==  0 ); secp256k1_i128_rshift (& cf , 62 );
478-     VERIFY_CHECK ((secp256k1_i128_to_i64 (& cg ) &  M62 ) ==  0 ); secp256k1_i128_rshift (& cg , 62 );
477+     VERIFY_CHECK ((secp256k1_i128_to_u64 (& cf ) &  M62 ) ==  0 ); secp256k1_i128_rshift (& cf , 62 );
478+     VERIFY_CHECK ((secp256k1_i128_to_u64 (& cg ) &  M62 ) ==  0 ); secp256k1_i128_rshift (& cg , 62 );
479479    /* Now iteratively compute limb i=1..len of t*[f,g], and store them in output limb i-1 (shifting 
480480     * down by 62 bits). */ 
481481    for  (i  =  1 ; i  <  len ; ++ i ) {
@@ -485,8 +485,8 @@ static void secp256k1_modinv64_update_fg_62_var(int len, secp256k1_modinv64_sign
485485        secp256k1_i128_accum_mul (& cf , v , gi );
486486        secp256k1_i128_accum_mul (& cg , q , fi );
487487        secp256k1_i128_accum_mul (& cg , r , gi );
488-         f -> v [i  -  1 ] =  secp256k1_i128_to_i64 (& cf ) &  M62 ; secp256k1_i128_rshift (& cf , 62 );
489-         g -> v [i  -  1 ] =  secp256k1_i128_to_i64 (& cg ) &  M62 ; secp256k1_i128_rshift (& cg , 62 );
488+         f -> v [i  -  1 ] =  secp256k1_i128_to_u64 (& cf ) &  M62 ; secp256k1_i128_rshift (& cf , 62 );
489+         g -> v [i  -  1 ] =  secp256k1_i128_to_u64 (& cg ) &  M62 ; secp256k1_i128_rshift (& cg , 62 );
490490    }
491491    /* What remains is limb (len) of t*[f,g]; store it as output limb (len-1). */ 
492492    f -> v [len  -  1 ] =  secp256k1_i128_to_i64 (& cf );
0 commit comments