- 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(`

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