comparison libtommath/bn_mp_mul.c @ 1436:60fc6476e044

Update to libtommath v1.0
author Matt Johnston <matt@ucc.asn.au>
date Sat, 24 Jun 2017 22:37:14 +0800
parents 5ff8218bcee9
children 8bba51a55704
comparison
equal deleted inserted replaced
1435:f849a5ca2efc 1436:60fc6476e044
1 #include <tommath.h> 1 #include <tommath_private.h>
2 #ifdef BN_MP_MUL_C 2 #ifdef BN_MP_MUL_C
3 /* LibTomMath, multiple-precision integer library -- Tom St Denis 3 /* LibTomMath, multiple-precision integer library -- Tom St Denis
4 * 4 *
5 * LibTomMath is a library that provides multiple-precision 5 * LibTomMath is a library that provides multiple-precision
6 * integer arithmetic as well as number theoretic functionality. 6 * integer arithmetic as well as number theoretic functionality.
10 * additional optimizations in place. 10 * additional optimizations in place.
11 * 11 *
12 * The library is free for all purposes without any express 12 * The library is free for all purposes without any express
13 * guarantee it works. 13 * guarantee it works.
14 * 14 *
15 * Tom St Denis, [email protected], http://math.libtomcrypt.com 15 * Tom St Denis, [email protected], http://libtom.org
16 */ 16 */
17 17
18 /* high level multiplication (handles sign) */ 18 /* high level multiplication (handles sign) */
19 int mp_mul (mp_int * a, mp_int * b, mp_int * c) 19 int mp_mul (mp_int * a, mp_int * b, mp_int * c)
20 { 20 {
42 */ 42 */
43 int digs = a->used + b->used + 1; 43 int digs = a->used + b->used + 1;
44 44
45 #ifdef BN_FAST_S_MP_MUL_DIGS_C 45 #ifdef BN_FAST_S_MP_MUL_DIGS_C
46 if ((digs < MP_WARRAY) && 46 if ((digs < MP_WARRAY) &&
47 MIN(a->used, b->used) <= 47 (MIN(a->used, b->used) <=
48 (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) { 48 (1 << ((CHAR_BIT * sizeof(mp_word)) - (2 * DIGIT_BIT))))) {
49 res = fast_s_mp_mul_digs (a, b, c, digs); 49 res = fast_s_mp_mul_digs (a, b, c, digs);
50 } else 50 } else
51 #endif 51 #endif
52 {
52 #ifdef BN_S_MP_MUL_DIGS_C 53 #ifdef BN_S_MP_MUL_DIGS_C
53 res = s_mp_mul (a, b, c); /* uses s_mp_mul_digs */ 54 res = s_mp_mul (a, b, c); /* uses s_mp_mul_digs */
54 #else 55 #else
55 res = MP_VAL; 56 res = MP_VAL;
56 #endif 57 #endif
57 58 }
58 } 59 }
59 c->sign = (c->used > 0) ? neg : MP_ZPOS; 60 c->sign = (c->used > 0) ? neg : MP_ZPOS;
60 return res; 61 return res;
61 } 62 }
62 #endif 63 #endif
63 64
64 /* $Source: /cvs/libtom/libtommath/bn_mp_mul.c,v $ */ 65 /* $Source$ */
65 /* $Revision: 1.3 $ */ 66 /* $Revision$ */
66 /* $Date: 2006/03/31 14:18:44 $ */ 67 /* $Date$ */