Diff
Not logged in

Differences From Artifact [c74c13fd14]:

To Artifact [416a355f50]:


1
2
3

4
5
6
7
8
9
10
11
12

13
14
15
16
17
18
19
20

21
22

23
24
25
26
27
28
29


30
31
32
33

34
35
36

37
38
39
40
41
42
43
44
1
2

3









4

5
6
7
8
9
10

11
12

13
14
15
16
17
18


19
20
21
22
23

24
25
26

27
28
29
30
31






-
+
-
-
-
-
-
-
-
-
-
+
-






-
+

-
+





-
-
+
+



-
+


-
+




-
-
-
-
#include "tommath_private.h"
#ifdef BN_MP_2EXPT_C
/* LibTomMath, multiple-precision integer library -- Tom St Denis
/* 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.
 *
 * SPDX-License-Identifier: Unlicense
/* SPDX-License-Identifier: Unlicense */
 */

/* computes a = 2**b
 *
 * Simple algorithm which zeroes the int, grows it then just sets one bit
 * as required.
 */
int mp_2expt(mp_int *a, int b)
mp_err mp_2expt(mp_int *a, int b)
{
   int     res;
   mp_err    err;

   /* zero a as per default */
   mp_zero(a);

   /* grow a to accomodate the single bit */
   if ((res = mp_grow(a, (b / DIGIT_BIT) + 1)) != MP_OKAY) {
      return res;
   if ((err = mp_grow(a, (b / MP_DIGIT_BIT) + 1)) != MP_OKAY) {
      return err;
   }

   /* set the used count of where the bit will go */
   a->used = (b / DIGIT_BIT) + 1;
   a->used = (b / MP_DIGIT_BIT) + 1;

   /* put the single bit in its place */
   a->dp[b / DIGIT_BIT] = (mp_digit)1 << (mp_digit)(b % DIGIT_BIT);
   a->dp[b / MP_DIGIT_BIT] = (mp_digit)1 << (mp_digit)(b % MP_DIGIT_BIT);

   return MP_OKAY;
}
#endif

/* ref:         $Format:%D$ */
/* git commit:  $Format:%H$ */
/* commit time: $Format:%ai$ */