Mercurial > dropbear
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$ */ |