cprover
mp_arith.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module:
4 
5 Author: Daniel Kroening, kroening@kroening.com
6 
7 \*******************************************************************/
8 
9 
10 #ifndef CPROVER_UTIL_MP_ARITH_H
11 #define CPROVER_UTIL_MP_ARITH_H
12 
13 #include <string>
14 #include <iosfwd>
15 #include <limits>
16 
17 #include "big-int/bigint.hh"
18 #include "optional.h"
19 #include "deprecate.h"
20 
21 // NOLINTNEXTLINE(readability/identifiers)
22 typedef BigInt mp_integer;
23 
24 std::ostream &operator<<(std::ostream &, const mp_integer &);
25 mp_integer operator>>(const mp_integer &, const mp_integer &);
26 mp_integer operator<<(const mp_integer &, const mp_integer &);
27 mp_integer bitwise_or(const mp_integer &, const mp_integer &);
30 
32  const mp_integer &, const mp_integer &, std::size_t true_size);
33 
35  const mp_integer &, const mp_integer &, std::size_t true_size);
36 
38  const mp_integer &, const mp_integer &, std::size_t true_size);
39 
41  const mp_integer &, const mp_integer &, std::size_t true_size);
42 
44  const mp_integer &, const mp_integer &, std::size_t true_size);
45 
47  const mp_integer &, const mp_integer &, std::size_t true_size);
48 
49 const std::string integer2string(const mp_integer &, unsigned base=10);
50 const mp_integer string2integer(const std::string &, unsigned base=10);
51 const std::string integer2binary(const mp_integer &, std::size_t width);
52 const mp_integer binary2integer(const std::string &, bool is_signed);
53 
55 DEPRECATED("Use numeric_cast_v<unsigned long long> instead")
57 
59 DEPRECATED("Use numeric_cast_v<std::size_t> instead")
60 std::size_t integer2size_t(const mp_integer &);
61 
63 DEPRECATED("Use numeric_cast_v<unsigned> instead")
64 unsigned integer2unsigned(const mp_integer &);
65 
66 #endif // CPROVER_UTIL_MP_ARITH_H
bool is_signed(const typet &t)
Convenience function – is the type signed?
Definition: util.cpp:45
BigInt mp_integer
Definition: mp_arith.h:22
Target numeric_cast_v(const mp_integer &arg)
Convert an mp_integer to integral type Target An invariant will fail if the conversion is not possibl...
Definition: arith_tools.h:134
mp_integer bitwise_and(const mp_integer &, const mp_integer &)
bitwise 'and' of two nonnegative integers
Definition: mp_arith.cpp:252
const std::string integer2string(const mp_integer &, unsigned base=10)
Definition: mp_arith.cpp:106
const mp_integer binary2integer(const std::string &, bool is_signed)
convert binary string representation to mp_integer
Definition: mp_arith.cpp:120
std::size_t integer2size_t(const mp_integer &)
Definition: mp_arith.cpp:195
std::ostream & operator<<(std::ostream &, const mp_integer &)
Definition: mp_arith.cpp:48
mp_integer::ullong_t integer2ulong(const mp_integer &)
Definition: mp_arith.cpp:189
const mp_integer string2integer(const std::string &, unsigned base=10)
Definition: mp_arith.cpp:57
mp_integer operator>>(const mp_integer &, const mp_integer &)
Definition: mp_arith.cpp:25
mp_integer bitwise_or(const mp_integer &, const mp_integer &)
bitwise 'or' of two nonnegative integers
Definition: mp_arith.cpp:240
mp_integer rotate_left(const mp_integer &, const mp_integer &, std::size_t true_size)
rotate left (LSB=MSB) bitwise operations only make sense on native objects, hence the largest object ...
Definition: mp_arith.cpp:380
const std::string integer2binary(const mp_integer &, std::size_t width)
Definition: mp_arith.cpp:67
#define DEPRECATED(msg)
Definition: deprecate.h:23
mp_integer arith_right_shift(const mp_integer &, const mp_integer &, std::size_t true_size)
arithmetic right shift (loads sign on MSB) bitwise operations only make sense on native objects,...
Definition: mp_arith.cpp:299
mp_integer logic_left_shift(const mp_integer &, const mp_integer &, std::size_t true_size)
logic left shift bitwise operations only make sense on native objects, hence the largest object size ...
Definition: mp_arith.cpp:318
BigInt::ullong_t ullong_t
Definition: mp_arith.cpp:22
mp_integer arith_left_shift(const mp_integer &, const mp_integer &, std::size_t true_size)
arithmetic left shift bitwise operations only make sense on native objects, hence the largest object ...
Definition: mp_arith.cpp:278
unsigned integer2unsigned(const mp_integer &)
Definition: mp_arith.cpp:203
mp_integer bitwise_xor(const mp_integer &, const mp_integer &)
bitwise 'xor' of two nonnegative integers
Definition: mp_arith.cpp:264
mp_integer logic_right_shift(const mp_integer &, const mp_integer &, std::size_t true_size)
logic right shift (loads 0 on MSB) bitwise operations only make sense on native objects,...
Definition: mp_arith.cpp:344
mp_integer rotate_right(const mp_integer &, const mp_integer &, std::size_t true_size)
rotates right (MSB=LSB) bitwise operations only make sense on native objects, hence the largest objec...
Definition: mp_arith.cpp:360