Next: , Previous: , Up: Integer Functions   [Index]


5.3 Combined Initialization and Assignment Functions

For convenience, MPIR provides a parallel series of initialize-and-set functions which initialize the output and then store the value there. These functions’ names have the form mpz_init_set…

Here is an example of using one:

{
  mpz_t pie;
  mpz_init_set_str (pie, "3141592653589793238462643383279502884", 10);
  …
  mpz_sub (pie, …);
  …
  mpz_clear (pie);
}

Once the integer has been initialized by any of the mpz_init_set… functions, it can be used as the source or destination operand for the ordinary integer functions. Don’t use an initialize-and-set function on a variable already initialized!

Function: void mpz_init_set (mpz_t rop, mpz_t op)
Function: void mpz_init_set_ui (mpz_t rop, mpir_ui op)
Function: void mpz_init_set_si (mpz_t rop, mpir_si op)
Function: void mpz_init_set_ux (mpz_t rop, uintmax_t op)
Function: void mpz_init_set_sx (mpz_t rop, intmax_t op)
Function: void mpz_init_set_d (mpz_t rop, double op)

Initialize rop with limb space and set the initial numeric value from op. Note the intmax versions are only available if you include the stdint.h header before including mpir.h.

Function: int mpz_init_set_str (mpz_t rop, char *str, int base)

Initialize rop and set its value like mpz_set_str (see its documentation above for details).

If the string is a correct base base number, the function returns 0; if an error occurs it returns -1. rop is initialized even if an error occurs. (I.e., you have to call mpz_clear for it.)