The tommath_int back-end
is used via the typedef boost::multiprecision::tom_int.
It acts as a thin wrapper around the libtommathtom_int to provide an integer
type that is a drop-in replacement for the native C++ integer types, but
with unlimited precision.

Although tom_int is
mostly a drop in replacement for the builtin integer types, it should
be noted that it is a rather strange beast as it's a signed type that
is not a 2's complement type. As a result the bitwise operations |&^ will throw a std::runtime_error
exception if either of the arguments is negative. Similarly the complement
operator~ is deliberately
not implemented for this type.

Formatted IO for this type does not support octal or hexadecimal notation
for negative values, as a result performing formatted output on this
type when the argument is negative and either of the flags std::ios_base::oct or std::ios_base::hex
are set, will result in a std::runtime_error
will be thrown.

Conversion from a string results in a std::runtime_error
being thrown if the string can not be interpreted as a valid integer.