Regina 7.4 Calculation Engine
|
Provides arbitrary-precision and fixed-precision integer types. More...
#include <climits>
#include <cstdint>
#include <cstddef>
#include <tuple>
#include <gmp.h>
#include "regina-core.h"
#include "maths/ring.h"
#include "utilities/exception.h"
#include "utilities/tightencoding.h"
Classes | |
class | regina::IntegerBase< bool > |
Represents an arbitrary precision integer. More... | |
class | regina::NativeInteger< int > |
A wrapper class for a native, fixed-precision integer type of the given size. More... | |
Namespaces | |
namespace | regina |
Contains the entire Regina calculation engine. | |
namespace | regina::detail |
Contains implementation details and common functionality for Regina's dimension-agnostic classes. | |
Macros | |
#define | mpz_cmp_si_cpp(z, si) |
An internal copy of the GMP signed comparison optimisations. | |
Typedefs | |
using | regina::LargeInteger = IntegerBase<true> |
LargeInteger is a type alias for IntegerBase<true>, which offers arbitrary precision integers with support for infinity. | |
using | regina::Integer = IntegerBase<false> |
Integer is a type alias for IntegerBase<false>, which offers arbitrary precision integers without support for infinity. | |
using | regina::NativeLong = NativeInteger<sizeof(long)> |
NativeLong is a type alias for the NativeInteger template class whose underlying integer type is a native long. | |
Functions | |
mpz_ptr | regina::detail::mpz_from_ll (long long value) |
Returns a raw GMP integer holding the given value. | |
mpz_ptr | regina::detail::mpz_from_ull (unsigned long long value) |
Returns a raw GMP integer holding the given value. | |
template<bool withInfinity> | |
void | regina::swap (IntegerBase< withInfinity > &a, IntegerBase< withInfinity > &b) noexcept |
Swaps the contents of the given integers. | |
template<bool withInfinity> | |
std::ostream & | regina::operator<< (std::ostream &out, const IntegerBase< withInfinity > &i) |
Writes the given integer to the given output stream. | |
template<bool withInfinity> | |
IntegerBase< withInfinity > | regina::operator+ (long lhs, const IntegerBase< withInfinity > &rhs) |
Adds the given native integer to the given large integer. | |
template<bool withInfinity> | |
IntegerBase< withInfinity > | regina::operator* (long lhs, const IntegerBase< withInfinity > &rhs) |
Multiplies the given native integer with the given large integer. | |
template<bool withInfinity> | |
void | regina::tightEncode (std::ostream &out, IntegerBase< withInfinity > value) |
Writes the tight encoding of the given arbitrary precision integer to the given output stream. | |
template<bool withInfinity> | |
std::string | regina::tightEncoding (IntegerBase< withInfinity > value) |
Returns the tight encoding of the given arbitrary precision integer. | |
template<int bytes> | |
void | regina::swap (NativeInteger< bytes > &a, NativeInteger< bytes > &b) noexcept |
Swaps the contents of the given integers. | |
template<int bytes> | |
std::ostream & | regina::operator<< (std::ostream &out, const NativeInteger< bytes > &i) |
Writes the given integer to the given output stream. | |
Provides arbitrary-precision and fixed-precision integer types.