comparison libtommath/bn_mp_add_d.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_ADD_D_C 2 #ifdef BN_MP_ADD_D_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 /* single digit addition */ 18 /* single digit addition */
19 int 19 int
20 mp_add_d (mp_int * a, mp_digit b, mp_int * c) 20 mp_add_d (mp_int * a, mp_digit b, mp_int * c)
21 { 21 {
22 int res, ix, oldused; 22 int res, ix, oldused;
23 mp_digit *tmpa, *tmpc, mu; 23 mp_digit *tmpa, *tmpc, mu;
24 24
25 /* grow c as required */ 25 /* grow c as required */
26 if (c->alloc < a->used + 1) { 26 if (c->alloc < (a->used + 1)) {
27 if ((res = mp_grow(c, a->used + 1)) != MP_OKAY) { 27 if ((res = mp_grow(c, a->used + 1)) != MP_OKAY) {
28 return res; 28 return res;
29 } 29 }
30 } 30 }
31 31
32 /* if a is negative and |a| >= b, call c = |a| - b */ 32 /* if a is negative and |a| >= b, call c = |a| - b */
33 if (a->sign == MP_NEG && (a->used > 1 || a->dp[0] >= b)) { 33 if ((a->sign == MP_NEG) && ((a->used > 1) || (a->dp[0] >= b))) {
34 /* temporarily fix sign of a */ 34 /* temporarily fix sign of a */
35 a->sign = MP_ZPOS; 35 a->sign = MP_ZPOS;
36 36
37 /* c = |a| - b */ 37 /* c = |a| - b */
38 res = mp_sub_d(a, b, c); 38 res = mp_sub_d(a, b, c);
105 return MP_OKAY; 105 return MP_OKAY;
106 } 106 }
107 107
108 #endif 108 #endif
109 109
110 /* $Source: /cvs/libtom/libtommath/bn_mp_add_d.c,v $ */ 110 /* $Source$ */
111 /* $Revision: 1.4 $ */ 111 /* $Revision$ */
112 /* $Date: 2006/03/31 14:18:44 $ */ 112 /* $Date$ */