Regina Calculation Engine
Classes | Namespaces | Macros | Typedefs | Functions
integer.h File Reference

Provides arbitrary-precision and fixed-precision integer types. More...

#include <climits>
#include <stdint.h>
#include <stddef.h>
#include <gmp.h>
#include <iostream>
#include <string>
#include "regina-core.h"
#include "utilities/intutils.h"

Classes

class  regina::IntegerBase< supportInfinity >
 Represents an arbitrary precision integer. More...
 
class  regina::NativeInteger< bytes >
 A wrapper class for a native, fixed-precision integer type of the given size. More...
 

Namespaces

 regina
 Contains the entire Regina calculation engine.
 

Macros

#define mpz_cmp_si_cpp(z, si)
 An internal copy of the GMP signed comparison optimisations. More...
 

Typedefs

typedef IntegerBase< true > regina::LargeInteger
 LargeInteger is a typedef for IntegerBase<true>, which offers arbitrary precision integers with support for infinity. More...
 
typedef IntegerBase< false > regina::Integer
 Integer is a typedef for IntegerBase<false>, which offers arbitrary precision integers without support for infinity. More...
 
typedef NativeInteger< sizeof(long)> regina::NNativeLong
 NNativeLong is a typedef for the NativeInteger template class whose underlying integer type is a native long. More...
 
typedef Integer regina::NInteger
 Deprecated typedef for backward compatibility. More...
 
typedef LargeInteger regina::NLargeInteger
 Deprecated typedef for backward compatibility. More...
 
template<int bytes>
using regina::NNativeInteger = NativeInteger< bytes >
 Deprecated typedef for backward compatibility. More...
 

Functions

template<bool supportInfinity>
std::ostream & regina::operator<< (std::ostream &out, const IntegerBase< supportInfinity > &i)
 Writes the given integer to the given output stream. More...
 
template<bool supportInfinity>
IntegerBase< supportInfinity > regina::operator+ (long lhs, const IntegerBase< supportInfinity > &rhs)
 Adds the given native integer to the given large integer. More...
 
template<bool supportInfinity>
IntegerBase< supportInfinity > regina::operator* (long lhs, const IntegerBase< supportInfinity > &rhs)
 Multiplies the given native integer with the given large integer. More...
 
template<int bytes>
std::ostream & regina::operator<< (std::ostream &out, const NativeInteger< bytes > &i)
 Writes the given integer to the given output stream. More...
 

Detailed Description

Provides arbitrary-precision and fixed-precision integer types.

Macro Definition Documentation

◆ mpz_cmp_si_cpp

#define mpz_cmp_si_cpp (   z,
  si 
)

An internal copy of the GMP signed comparison optimisations.

This macro should not be used outside this class.

By making our own copy of such optimisation macros we can use C++-style casts instead of C-style casts and avoid noisy compiler warnings. I'd love a better way of doing this.


Copyright © 1999-2020, The Regina development team
This software is released under the GNU General Public License, with some additional permissions; see the source code for details.
For further information, or to submit a bug or other problem, please contact Ben Burton (bab@maths.uq.edu.au).