Next: C++ Interface Rationals, Previous: C++ Interface General, Up: C++ Class Interface [Index]
Construct an mpz_class. All the standard C++ types may be used, except
long long and long double, and all the GMP C++ classes can be
used, although conversions from mpq_class and mpf_class are
explicit. Any necessary conversion follows the corresponding C
function, for example double follows mpz_set_d
(see Assignment Functions).
Construct an mpz_class from an mpz_t. The value in z is
copied into the new mpz_class, there won’t be any permanent association
between it and z.
Construct an mpz_class converted from a string using mpz_set_str
(see Assignment Functions).
If the string is not a valid integer, an std::invalid_argument
exception is thrown. The same applies to operator=.
With C++11 compilers, integers can be constructed with the syntax
123_mpz which is equivalent to mpz_class("123").
Divisions involving mpz_class round towards zero, as per the
mpz_tdiv_q and mpz_tdiv_r functions (see Division Functions).
This is the same as the C99 / and % operators.
The mpz_fdiv… or mpz_cdiv… functions can always be called
directly if desired. For example,
mpz_class q, a, d; ... mpz_fdiv_q (q.get_mpz_t(), a.get_mpz_t(), d.get_mpz_t());
These functions provide a C++ class interface to the corresponding GMP C
routines. Calling factorial or primorial on a negative number
is undefined.
cmp can be used with any of the classes or the standard C++ types,
except long long and long double.
Overloaded operators for combinations of mpz_class and double
are provided for completeness, but it should be noted that if the given
double is not an integer then the way any rounding is done is currently
unspecified. The rounding might take place at the start, in the middle, or at
the end of the operation, and it might change in the future.
Conversions between mpz_class and double, however, are defined
to follow the corresponding C functions mpz_get_d and mpz_set_d.
And comparisons are always made exactly, as per mpz_cmp_d.
Next: C++ Interface Rationals, Previous: C++ Interface General, Up: C++ Class Interface [Index]