~ubuntu-branches/ubuntu/raring/tcl8.5/raring

« back to all changes in this revision

Viewing changes to libtommath/bn_mp_count_bits.c

  • Committer: Bazaar Package Importer
  • Author(s): Sergei Golovan
  • Date: 2007-10-26 22:04:32 UTC
  • Revision ID: james.westby@ubuntu.com-20071026220432-57je4z35i4ll6uit
Tags: upstream-0.b2
ImportĀ upstreamĀ versionĀ 0.b2

Show diffs side-by-side

added added

removed removed

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