X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=libs%2Flibtommath%2Fbn_mp_count_bits.c;fp=libs%2Flibtommath%2Fbn_mp_count_bits.c;h=ff4db22a0190ebbabf668d8524a14e81b2373a23;hb=109c20e6f822c6efa465af31249e5608469253b6;hp=0000000000000000000000000000000000000000;hpb=9ae3b1434e51788e6feb72e1415ec800d05c535a;p=fms.git diff --git a/libs/libtommath/bn_mp_count_bits.c b/libs/libtommath/bn_mp_count_bits.c new file mode 100644 index 0000000..ff4db22 --- /dev/null +++ b/libs/libtommath/bn_mp_count_bits.c @@ -0,0 +1,45 @@ +#include +#ifdef BN_MP_COUNT_BITS_C +/* 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. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com + */ + +/* returns the number of bits in an int */ +int +mp_count_bits (mp_int * a) +{ + int r; + mp_digit q; + + /* shortcut */ + if (a->used == 0) { + return 0; + } + + /* get number of digits and add that */ + r = (a->used - 1) * DIGIT_BIT; + + /* take the last digit and count the bits in it */ + q = a->dp[a->used - 1]; + while (q > ((mp_digit) 0)) { + ++r; + q >>= ((mp_digit) 1); + } + return r; +} +#endif + +/* $Source: /cvs/libtom/libtommath/bn_mp_count_bits.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2006/03/31 14:18:44 $ */