Next: Integer Arithmetic, Previous: Simultaneous Integer Init & Assign, Up: Integer Functions [Index]

This section describes functions for converting GMP integers to standard C
types. Functions for converting *to* GMP integers are described in
Assigning Integers and I/O of Integers.

- Function:
*unsigned long int***mpz_get_ui***(const mpz_t*`op`) Return the value of

`op`as an`unsigned long`

.If

`op`is too big to fit an`unsigned long`

then just the least significant bits that do fit are returned. The sign of`op`is ignored, only the absolute value is used.

- Function:
*signed long int***mpz_get_si***(const mpz_t*`op`) If

`op`fits into a`signed long int`

return the value of`op`. Otherwise return the least significant part of`op`, with the same sign as`op`.If

`op`is too big to fit in a`signed long int`

, the returned result is probably not very useful. To find out if the value will fit, use the function`mpz_fits_slong_p`

.

- Function:
*double***mpz_get_d***(const mpz_t*`op`) Convert

`op`to a`double`

, truncating if necessary (i.e. rounding towards zero).If the exponent from the conversion is too big, the result is system dependent. An infinity is returned where available. A hardware overflow trap may or may not occur.

- Function:
*double***mpz_get_d_2exp***(signed long int **`exp`, const mpz_t`op`) Convert

`op`to a`double`

, truncating if necessary (i.e. rounding towards zero), and returning the exponent separately.The return value is in the range

*0.5<=abs(*and the exponent is stored to`d`)<1`*`

.`exp`is the (truncated)`d`* 2^`exp``op`value. If`op`is zero, the return is*0.0*and 0 is stored to`*`

.`exp`This is similar to the standard C

`frexp`

function (see Normalization Functions in The GNU C Library Reference Manual).

- Function:
*char ****mpz_get_str***(char **`str`, int`base`, const mpz_t`op`) Convert

`op`to a string of digits in base`base`. The base argument may vary from 2 to 62 or from -2 to -36.For

`base`in the range 2..36, digits and lower-case letters are used; for -2..-36, digits and upper-case letters are used; for 37..62, digits, upper-case letters, and lower-case letters (in that significance order) are used.If

`str`is`NULL`

, the result string is allocated using the current allocation function (see Custom Allocation). The block will be`strlen(str)+1`

bytes, that being exactly enough for the string and null-terminator.If

`str`is not`NULL`

, it should point to a block of storage large enough for the result, that being`mpz_sizeinbase (`

. The two extra bytes are for a possible minus sign, and the null-terminator.`op`,`base`) + 2A pointer to the result string is returned, being either the allocated block, or the given

`str`.