Next: , Previous: Integer Functions, Up: Integer Functions


5.1 Initialization Functions

The functions for integer arithmetic assume that all integer objects are initialized. You do that by calling the function mpz_init. For example,

     {
       mpz_t integ;
       mpz_init (integ);
       ...
       mpz_add (integ, ...);
       ...
       mpz_sub (integ, ...);
     
       /* Unless the program is about to exit, do ... */
       mpz_clear (integ);
     }

As you can see, you can store new values any number of times, once an object is initialized.

— Function: void mpz_init (mpz_t integer)

Initialize integer, and set its value to 0.

— Function: void mpz_init2 (mpz_t integer, unsigned long n)

Initialize integer, with space for n bits, and set its value to 0.

n is only the initial space, integer will grow automatically in the normal way, if necessary, for subsequent values stored. mpz_init2 makes it possible to avoid such reallocations if a maximum size is known in advance.

— Function: void mpz_clear (mpz_t integer)

Free the space occupied by integer. Call this function for all mpz_t variables when you are done with them.

— Function: void mpz_realloc2 (mpz_t integer, unsigned long n)

Change the space allocated for integer to n bits. The value in integer is preserved if it fits, or is set to 0 if not.

This function can be used to increase the space for a variable in order to avoid repeated automatic reallocations, or to decrease it to give memory back to the heap.