Clingo
|
An arbitrary precision integer. More...
#include <number.hh>
Public Member Functions | |
Number (int32_t value) noexcept | |
Construct a number from an integer. | |
Number (char const *str, Base base=Base::dec) | |
Construct a number from a string. | |
Number (std::string_view str, Base base=Base::dec) | |
Construct a number from a string. | |
Number (Number const &other) | |
Copy construct a number. | |
Number (Number &&other) noexcept | |
Move construct a number. | |
auto | operator= (Number const &other) -> Number & |
Copy assign a number. | |
auto | operator= (Number &&other) noexcept -> Number & |
Move assign a number. | |
~Number () noexcept | |
Destroy the number freeing associated memory. | |
auto | as_int () const -> std::optional< int32_t > |
Convert the number to an integer if possible. | |
auto | as_string () const -> std::string |
Convert the number into a string. | |
void | swap (Number &other) noexcept |
Swap two numbers. | |
auto | hash () const noexcept -> size_t |
Get a hash code of the number suitable for unordered containers. | |
Static Public Member Functions | |
static auto | from_repr (uint64_t repr) -> Number |
Construct a number from the given representation. | |
static auto | to_repr (Number const &num) -> uint64_t |
Get the internal representation of the number. | |
static auto | release (Number &num) -> uint64_t |
Get the internal representation of the number and set it to zero. | |
Friends | |
class | Impl |
auto | compare (Number const &a, Number const &b) -> int |
Compare to numbers returning a comparator. | |
auto | compare (Number const &a, int32_t b) -> int |
Compare to numbers returning a comparator. | |
auto | compare (int32_t a, Number const &b) -> int |
Compare to numbers returning a comparator. | |
auto | operator== (Number const &a, Number const &b) |
Equality compare two numbers. | |
auto | operator== (int32_t a, Number const &b) -> bool |
Equality compare two numbers. | |
auto | operator== (Number const &a, int32_t b) -> bool |
Equality compare two numbers. | |
auto | operator<=> (Number const &a, Number const &b) |
Compare two numbers. | |
auto | operator<=> (int32_t a, Number const &b) |
Compare two numbers. | |
auto | operator<=> (Number const &a, int32_t b) |
Compare two numbers. | |
auto | operator+ (Number const &a, Number const &b) -> Number |
Sum up two numbers. | |
auto | operator+ (Number &&a, Number const &b) -> Number |
Sum up two numbers. | |
auto | operator+ (Number const &a, Number &&b) -> Number |
Sum up two numbers. | |
auto | operator+ (Number &&a, Number &&b) -> Number |
Sum up two numbers. | |
auto | operator+= (Number &a, Number const &b) -> Number & |
In place add the given number. | |
auto | operator+= (Number &a, Number &&b) -> Number & |
In place add the given number. | |
auto | operator- (Number const &a, Number const &b) -> Number |
Subtract two numbers. | |
auto | operator- (Number &&a, Number const &b) -> Number |
Subtract two numbers. | |
auto | operator- (Number const &a, Number &&b) -> Number |
Subtract two numbers. | |
auto | operator- (Number &&a, Number &&b) -> Number |
Subtract two numbers. | |
auto | operator-= (Number &a, Number const &b) -> Number & |
In place subtract the given number. | |
auto | operator-= (Number &a, Number &&b) -> Number & |
In place subtract the given number. | |
auto | operator* (Number const &a, Number const &b) -> Number |
Multiply two numbers. | |
auto | operator* (Number &&a, Number const &b) -> Number |
Multiply two numbers. | |
auto | operator* (Number const &a, Number &&b) -> Number |
Multiply two numbers. | |
auto | operator* (Number &&a, Number &&b) -> Number |
Multiply two numbers. | |
auto | operator*= (Number &a, Number const &b) -> Number & |
In place multiply the given number. | |
auto | operator*= (Number &a, Number &&b) -> Number & |
In place multiply the given number. | |
auto | operator/ (Number const &a, Number const &b) -> Number |
Divide two numbers. | |
auto | operator/ (Number &&a, Number const &b) -> Number |
Divide two numbers. | |
auto | operator/ (Number const &a, Number &&b) -> Number |
Divide two numbers. | |
auto | operator/ (Number &&a, Number &&b) -> Number |
Divide two numbers. | |
auto | operator/= (Number &a, Number const &b) -> Number & |
In place divide the given number. | |
auto | operator/= (Number &a, Number &&b) -> Number & |
In place divide the given number. | |
auto | operator% (Number const &a, Number const &b) -> Number |
Modulo of two numbers. | |
auto | operator% (Number &&a, Number const &b) -> Number |
Modulo of two numbers. | |
auto | operator% (Number const &a, Number &&b) -> Number |
Modulo of two numbers. | |
auto | operator% (Number &&a, Number &&b) -> Number |
Modulo of two numbers. | |
auto | operator%= (Number &a, Number const &b) -> Number & |
In place modulo the given number. | |
auto | operator%= (Number &a, Number &&b) -> Number & |
In place modulo the given number. | |
auto | operator- (Number const &a) -> Number |
Negate the number. | |
auto | operator- (Number &&a) -> Number |
Negate the number. | |
auto | operator~ (Number const &a) -> Number |
Binary complement of the number. | |
auto | operator~ (Number &&a) -> Number |
Binary complement of the number. | |
auto | operator& (Number const &a, Number const &b) -> Number |
Binary and of the two numbers. | |
auto | operator& (Number &&a, Number const &b) -> Number |
Binary and of the two numbers. | |
auto | operator& (Number const &a, Number &&b) -> Number |
Binary and of the two numbers. | |
auto | operator& (Number &&a, Number &&b) -> Number |
Binary and of the two numbers. | |
auto | operator&= (Number &a, Number const &b) -> Number & |
In place binary and the given number. | |
auto | operator&= (Number &a, Number &&b) -> Number & |
In place binary and the given number. | |
auto | operator| (Number const &a, Number const &b) -> Number |
Binary or of two numbers. | |
auto | operator| (Number &&a, Number const &b) -> Number |
Binary or of two numbers. | |
auto | operator| (Number const &a, Number &&b) -> Number |
Binary or of two numbers. | |
auto | operator| (Number &&a, Number &&b) -> Number |
Binary or of two numbers. | |
auto | operator|= (Number &a, Number const &b) -> Number & |
In place binary or the given number. | |
auto | operator|= (Number &a, Number &&b) -> Number & |
In place binary or the given number. | |
auto | operator^ (Number const &a, Number const &b) -> Number |
Binary xor of two numbers. | |
auto | operator^ (Number &&a, Number const &b) -> Number |
Binary xor of two numbers. | |
auto | operator^ (Number const &a, Number &&b) -> Number |
Binary xor of two numbers. | |
auto | operator^ (Number &&a, Number &&b) -> Number |
Binary xor of two numbers. | |
auto | operator^= (Number &a, Number const &b) -> Number & |
In place binary xor the given number. | |
auto | operator^= (Number &a, Number &&b) -> Number & |
In place binary xor the given number. | |
auto | pow (Number const &a, Number const &b) -> Number |
Exponentiation of two numbers. | |
auto | pow (Number &&a, Number const &b) -> Number |
Exponentiation of two numbers. | |
auto | pow (Number const &a, Number &&b) -> Number |
Exponentiation of two numbers. | |
auto | pow (Number &&a, Number &&b) -> Number |
Exponentiation of two numbers. | |
auto | abs (Number const &a) -> Number |
Get absolute of the given number. | |
auto | abs (Number &&a) -> Number |
Get absolute of the given number. | |
auto | get_sign (Number const &a) -> int |
Get the sign of the given number. | |
auto | operator<< (std::ostream &out, Number const &num) -> std::ostream & |
Output the given number. | |
auto | operator<< (Util::OutputBuffer &out, Number const &num) -> Util::OutputBuffer & |
Output the given number. | |
An arbitrary precision integer.
Directly stores a 32bit integer if possible and otherwise a pointer to an arbitrary size integer.
|
inlinestatic |
Get the internal representation of the number and set it to zero.
A new number can be constructed from the given representation.
|
inlinestatic |
Get the internal representation of the number.
Can be used with release() below.