Moved mp_mul_si() into bn_mp_prime_strong_lucas_selfridge.c as a local function
This commit is contained in:
		
							parent
							
								
									934dd31738
								
							
						
					
					
						commit
						08cee4325d
					
				@ -1,50 +0,0 @@
 | 
				
			|||||||
#include "tommath_private.h"
 | 
					 | 
				
			||||||
#ifdef BN_MP_MUL_SI_C
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * LibTomMath is a library that provides multiple-precision
 | 
					 | 
				
			||||||
 * integer arithmetic as well as number theoretic functionality.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * The library was designed directly after the MPI library by
 | 
					 | 
				
			||||||
 * Michael Fromberger but has been written from scratch with
 | 
					 | 
				
			||||||
 * additional optimizations in place.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * The library is free for all purposes without any express
 | 
					 | 
				
			||||||
 * guarantee it works.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// multiply bigint a with int d and put the result in c
 | 
					 | 
				
			||||||
// Like mp_mul_d() but with a signed long as the small input
 | 
					 | 
				
			||||||
int mp_mul_si(const mp_int *a, long d, mp_int *c)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
   mp_int t;
 | 
					 | 
				
			||||||
   int err, neg = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   if ((err = mp_init(&t)) != MP_OKAY) {
 | 
					 | 
				
			||||||
      return err;
 | 
					 | 
				
			||||||
   }
 | 
					 | 
				
			||||||
   if (d < 0) {
 | 
					 | 
				
			||||||
      neg = 1;
 | 
					 | 
				
			||||||
      d = -d;
 | 
					 | 
				
			||||||
   }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   // mp_digit might be smaller than a long, which excludes
 | 
					 | 
				
			||||||
   // the use of mp_mul_d() here.
 | 
					 | 
				
			||||||
   if ((err = mp_set_long(&t, (unsigned long) d)) != MP_OKAY) {
 | 
					 | 
				
			||||||
      goto LBL_MPMULSI_ERR;
 | 
					 | 
				
			||||||
   }
 | 
					 | 
				
			||||||
   if ((err = mp_mul(a, &t, c)) != MP_OKAY) {
 | 
					 | 
				
			||||||
      goto LBL_MPMULSI_ERR;
 | 
					 | 
				
			||||||
   }
 | 
					 | 
				
			||||||
   if (neg ==  1) {
 | 
					 | 
				
			||||||
      c->sign = (a->sign == MP_NEG) ? MP_ZPOS: MP_NEG;
 | 
					 | 
				
			||||||
   }
 | 
					 | 
				
			||||||
LBL_MPMULSI_ERR:
 | 
					 | 
				
			||||||
   mp_clear(&t);
 | 
					 | 
				
			||||||
   return err;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
@ -14,7 +14,6 @@
 | 
				
			|||||||
 * guarantee it works.
 | 
					 * guarantee it works.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef MP_8BIT
 | 
					#ifdef MP_8BIT
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * floor of positive solution of
 | 
					 * floor of positive solution of
 | 
				
			||||||
 | 
				
			|||||||
@ -14,8 +14,49 @@
 | 
				
			|||||||
 * guarantee it works.
 | 
					 * guarantee it works.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 *  8-bit is just too small. You can try the Frobenius test
 | 
				
			||||||
 | 
					 *  but that frobenius test can fail, too, for the same reason.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
#ifndef MP_8BIT
 | 
					#ifndef MP_8BIT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * multiply bigint a with int d and put the result in c
 | 
				
			||||||
 | 
					 * Like mp_mul_d() but with a signed long as the small input
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					static int mp_mul_si(const mp_int *a, long d, mp_int *c)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					   mp_int t;
 | 
				
			||||||
 | 
					   int err, neg = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   if ((err = mp_init(&t)) != MP_OKAY) {
 | 
				
			||||||
 | 
					      return err;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					   if (d < 0) {
 | 
				
			||||||
 | 
					      neg = 1;
 | 
				
			||||||
 | 
					      d = -d;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   /*
 | 
				
			||||||
 | 
					    * mp_digit might be smaller than a long, which excludes
 | 
				
			||||||
 | 
					    * the use of mp_mul_d() here.
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
 | 
					   if ((err = mp_set_long(&t, (unsigned long) d)) != MP_OKAY) {
 | 
				
			||||||
 | 
					      goto LBL_MPMULSI_ERR;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					   if ((err = mp_mul(a, &t, c)) != MP_OKAY) {
 | 
				
			||||||
 | 
					      goto LBL_MPMULSI_ERR;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					   if (neg ==  1) {
 | 
				
			||||||
 | 
					      c->sign = (a->sign == MP_NEG) ? MP_ZPOS: MP_NEG;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					LBL_MPMULSI_ERR:
 | 
				
			||||||
 | 
					   mp_clear(&t);
 | 
				
			||||||
 | 
					   return err;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
    Strong Lucas-Selfridge test.
 | 
					    Strong Lucas-Selfridge test.
 | 
				
			||||||
    returns MP_YES if it is a strong L-S prime, MP_NO if it is composite
 | 
					    returns MP_YES if it is a strong L-S prime, MP_NO if it is composite
 | 
				
			||||||
 | 
				
			|||||||
@ -364,10 +364,6 @@ int mp_sub_d(const mp_int *a, mp_digit b, mp_int *c);
 | 
				
			|||||||
/* c = a * b */
 | 
					/* c = a * b */
 | 
				
			||||||
int mp_mul_d(const mp_int *a, mp_digit b, mp_int *c);
 | 
					int mp_mul_d(const mp_int *a, mp_digit b, mp_int *c);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* multiply bigint a with int d and put the result in c
 | 
					 | 
				
			||||||
   Like mp_mul_d() but with a signed long as the small input */
 | 
					 | 
				
			||||||
int mp_mul_si(const mp_int *a, long d, mp_int *c);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* a/b => cb + d == a */
 | 
					/* a/b => cb + d == a */
 | 
				
			||||||
int mp_div_d(const mp_int *a, mp_digit b, mp_int *c, mp_digit *d);
 | 
					int mp_div_d(const mp_int *a, mp_digit b, mp_int *c, mp_digit *d);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user