| OLD | NEW |
| 1 /* | 1 /* |
| 2 * mplogic.c | 2 * mplogic.c |
| 3 * | 3 * |
| 4 * Bitwise logical operations on MPI values | 4 * Bitwise logical operations on MPI values |
| 5 * | 5 * |
| 6 * This Source Code Form is subject to the terms of the Mozilla Public | 6 * This Source Code Form is subject to the terms of the Mozilla Public |
| 7 * License, v. 2.0. If a copy of the MPL was not distributed with this | 7 * License, v. 2.0. If a copy of the MPL was not distributed with this |
| 8 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | 8 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
| 9 | 9 |
| 10 #include "mpi-priv.h" | 10 #include "mpi-priv.h" |
| (...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 396 mask &= ((digit[0] >> rshift) | (digit[1] << (MP_DIGIT_BIT - rshift))); | 396 mask &= ((digit[0] >> rshift) | (digit[1] << (MP_DIGIT_BIT - rshift))); |
| 397 } | 397 } |
| 398 return (mp_err)mask; | 398 return (mp_err)mask; |
| 399 } | 399 } |
| 400 | 400 |
| 401 /* | 401 /* |
| 402 mpl_significant_bits | 402 mpl_significant_bits |
| 403 returns number of significnant bits in abs(a). | 403 returns number of significnant bits in abs(a). |
| 404 returns 1 if value is zero. | 404 returns 1 if value is zero. |
| 405 */ | 405 */ |
| 406 mp_err mpl_significant_bits(const mp_int *a) | 406 mp_size mpl_significant_bits(const mp_int *a) |
| 407 { | 407 { |
| 408 mp_err bits » = 0; | 408 mp_size bits = 0; |
| 409 int ix; | 409 int ix; |
| 410 | 410 |
| 411 ARGCHK(a != NULL, MP_BADARG); | 411 ARGCHK(a != NULL, MP_BADARG); |
| 412 | 412 |
| 413 ix = MP_USED(a); | 413 ix = MP_USED(a); |
| 414 for (ix = MP_USED(a); ix > 0; ) { | 414 for (ix = MP_USED(a); ix > 0; ) { |
| 415 mp_digit d; | 415 mp_digit d; |
| 416 d = MP_DIGIT(a, --ix); | 416 d = MP_DIGIT(a, --ix); |
| 417 if (d) { | 417 if (d) { |
| 418 while (d) { | 418 while (d) { |
| 419 ++bits; | 419 ++bits; |
| 420 d >>= 1; | 420 d >>= 1; |
| 421 } | 421 } |
| 422 break; | 422 break; |
| 423 } | 423 } |
| 424 } | 424 } |
| 425 bits += ix * MP_DIGIT_BIT; | 425 bits += ix * MP_DIGIT_BIT; |
| 426 if (!bits) | 426 if (!bits) |
| 427 bits = 1; | 427 bits = 1; |
| 428 return bits; | 428 return bits; |
| 429 } | 429 } |
| 430 | 430 |
| 431 /*------------------------------------------------------------------------*/ | 431 /*------------------------------------------------------------------------*/ |
| 432 /* HERE THERE BE DRAGONS */ | 432 /* HERE THERE BE DRAGONS */ |
| OLD | NEW |