1 /*	$NetBSD: bn_mp_count_bits.c,v 1.1.1.2 2014/04/24 12:45:31 pettai Exp $	*/
2 
3 #include <tommath.h>
4 #ifdef BN_MP_COUNT_BITS_C
5 /* LibTomMath, multiple-precision integer library -- Tom St Denis
6  *
7  * LibTomMath is a library that provides multiple-precision
8  * integer arithmetic as well as number theoretic functionality.
9  *
10  * The library was designed directly after the MPI library by
11  * Michael Fromberger but has been written from scratch with
12  * additional optimizations in place.
13  *
14  * The library is free for all purposes without any express
15  * guarantee it works.
16  *
17  * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
18  */
19 
20 /* returns the number of bits in an int */
21 int
mp_count_bits(mp_int * a)22 mp_count_bits (mp_int * a)
23 {
24   int     r;
25   mp_digit q;
26 
27   /* shortcut */
28   if (a->used == 0) {
29     return 0;
30   }
31 
32   /* get number of digits and add that */
33   r = (a->used - 1) * DIGIT_BIT;
34 
35   /* take the last digit and count the bits in it */
36   q = a->dp[a->used - 1];
37   while (q > ((mp_digit) 0)) {
38     ++r;
39     q >>= ((mp_digit) 1);
40   }
41   return r;
42 }
43 #endif
44 
45 /* Source: /cvs/libtom/libtommath/bn_mp_count_bits.c,v  */
46 /* Revision: 1.4  */
47 /* Date: 2006/12/28 01:25:13  */
48