OLD | NEW |
| (Empty) |
1 /* | |
2 * mplogic.h | |
3 * | |
4 * Bitwise logical operations on MPI values | |
5 * | |
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 | |
8 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | |
9 /* $Id: mplogic.h,v 1.8 2012/04/25 14:49:50 gerv%gerv.net Exp $ */ | |
10 | |
11 #ifndef _H_MPLOGIC_ | |
12 #define _H_MPLOGIC_ | |
13 | |
14 #include "mpi.h" | |
15 | |
16 /* | |
17 The logical operations treat an mp_int as if it were a bit vector, | |
18 without regard to its sign (an mp_int is represented in a signed | |
19 magnitude format). Values are treated as if they had an infinite | |
20 string of zeros left of the most-significant bit. | |
21 */ | |
22 | |
23 /* Parity results */ | |
24 | |
25 #define MP_EVEN MP_YES | |
26 #define MP_ODD MP_NO | |
27 | |
28 /* Bitwise functions */ | |
29 | |
30 mp_err mpl_not(mp_int *a, mp_int *b); /* one's complement */ | |
31 mp_err mpl_and(mp_int *a, mp_int *b, mp_int *c); /* bitwise AND */ | |
32 mp_err mpl_or(mp_int *a, mp_int *b, mp_int *c); /* bitwise OR */ | |
33 mp_err mpl_xor(mp_int *a, mp_int *b, mp_int *c); /* bitwise XOR */ | |
34 | |
35 /* Shift functions */ | |
36 | |
37 mp_err mpl_rsh(const mp_int *a, mp_int *b, mp_digit d); /* right shift */ | |
38 mp_err mpl_lsh(const mp_int *a, mp_int *b, mp_digit d); /* left shift */ | |
39 | |
40 /* Bit count and parity */ | |
41 | |
42 mp_err mpl_num_set(mp_int *a, int *num); /* count set bits */ | |
43 mp_err mpl_num_clear(mp_int *a, int *num); /* count clear bits */ | |
44 mp_err mpl_parity(mp_int *a); /* determine parity */ | |
45 | |
46 /* Get & Set the value of a bit */ | |
47 | |
48 mp_err mpl_set_bit(mp_int *a, mp_size bitNum, mp_size value); | |
49 mp_err mpl_get_bit(const mp_int *a, mp_size bitNum); | |
50 mp_err mpl_get_bits(const mp_int *a, mp_size lsbNum, mp_size numBits); | |
51 mp_err mpl_significant_bits(const mp_int *a); | |
52 | |
53 #endif /* end _H_MPLOGIC_ */ | |
OLD | NEW |