### 5.15 Miscellaneous Functions

Function: `int` mpz_fits_ulong_p `(const mpz_t op)`
Function: `int` mpz_fits_slong_p `(const mpz_t op)`
Function: `int` mpz_fits_uint_p `(const mpz_t op)`
Function: `int` mpz_fits_sint_p `(const mpz_t op)`
Function: `int` mpz_fits_ushort_p `(const mpz_t op)`
Function: `int` mpz_fits_sshort_p `(const mpz_t op)`

Return non-zero iff the value of op fits in an `unsigned long int`, `signed long int`, `unsigned int`, `signed int`, ```unsigned short int```, or `signed short int`, respectively. Otherwise, return zero.

Macro: `int` mpz_odd_p `(const mpz_t op)`
Macro: `int` mpz_even_p `(const mpz_t op)`

Determine whether op is odd or even, respectively. Return non-zero if yes, zero if no. These macros evaluate their argument more than once.

Function: `size_t` mpz_sizeinbase `(const mpz_t op, int base)`

Return the size of op measured in number of digits in the given base. base can vary from 2 to 62. The sign of op is ignored, just the absolute value is used. The result will be either exact or 1 too big. If base is a power of 2, the result is always exact. If op is zero the return value is always 1.

This function can be used to determine the space required when converting op to a string. The right amount of allocation is normally two more than the value returned by `mpz_sizeinbase`, one extra for a minus sign and one for the null-terminator.

It will be noted that `mpz_sizeinbase(op,2)` can be used to locate the most significant 1 bit in op, counting from 1. (Unlike the bitwise functions which start from 0, See Logical and Bit Manipulation Functions.)