1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #include "mpi-internal.h"
- #include "longlong.h"
- #define A_LIMB_1 ((mpi_limb_t) 1)
- void mpi_normalize(MPI a)
- {
- for (; a->nlimbs && !a->d[a->nlimbs - 1]; a->nlimbs--)
- ;
- }
- unsigned mpi_get_nbits(MPI a)
- {
- unsigned n;
- mpi_normalize(a);
- if (a->nlimbs) {
- mpi_limb_t alimb = a->d[a->nlimbs - 1];
- if (alimb)
- n = count_leading_zeros(alimb);
- else
- n = BITS_PER_MPI_LIMB;
- n = BITS_PER_MPI_LIMB - n + (a->nlimbs - 1) * BITS_PER_MPI_LIMB;
- } else
- n = 0;
- return n;
- }
- EXPORT_SYMBOL_GPL(mpi_get_nbits);
|