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 &);
31 
33  const mp_integer &, const mp_integer &, std::size_t true_size);
34 
36  const mp_integer &, const mp_integer &, std::size_t true_size);
37 
39  const mp_integer &, const mp_integer &, std::size_t true_size);
40 
42  const mp_integer &, const mp_integer &, std::size_t true_size);
43 
45  const mp_integer &, const mp_integer &, std::size_t true_size);
46 
48  const mp_integer &, const mp_integer &, std::size_t true_size);
49 
50 const std::string integer2string(const mp_integer &, unsigned base=10);
51 const mp_integer string2integer(const std::string &, unsigned base=10);
52 const std::string integer2binary(const mp_integer &, std::size_t width);
53 const mp_integer binary2integer(const std::string &, bool is_signed);
54 
56 DEPRECATED("Use numeric_cast_v<unsigned long long> instead")
58 
60 DEPRECATED("Use numeric_cast_v<std::size_t> instead")
61 std::size_t integer2size_t(const mp_integer &);
62 
64 DEPRECATED("Use numeric_cast_v<unsigned> instead")
65 unsigned integer2unsigned(const mp_integer &);
66 
67 #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 with fail with message "Bad conversion" if...
Definition: arith_tools.h:134
mp_integer bitwise_and(const mp_integer &, const mp_integer &)
bitwise and bitwise operations only make sense on native objects, hence the largest object size shoul...
Definition: mp_arith.cpp:224
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
STL namespace.
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 bitwise operations only make sense on native objects, hence the largest object size should...
Definition: mp_arith.cpp:214
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:358
const std::string integer2binary(const mp_integer &, std::size_t width)
Definition: mp_arith.cpp:67
mp_integer bitwise_neg(const mp_integer &)
bitwise negation bitwise operations only make sense on native objects, hence the largest object size ...
Definition: mp_arith.cpp:244
#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:275
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:295
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:254
unsigned integer2unsigned(const mp_integer &)
Definition: mp_arith.cpp:203
mp_integer bitwise_xor(const mp_integer &, const mp_integer &)
bitwise xor bitwise operations only make sense on native objects, hence the largest object size shoul...
Definition: mp_arith.cpp:234
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, hence the largest object size should be the largest available c++ integer size (currently long long)
Definition: mp_arith.cpp:321
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:338