Simultaneous Integer Init & Assign (GNU MP 6.3.0)
Description: How to install and use the GNU multiple precision arithmetic library, version 6.3.0.

### 5.3 Combined Initialization and Assignment Functions ¶

For convenience, GMP 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, const mpz_t op)` ¶
Function: `void` mpz_init_set_ui `(mpz_t rop, unsigned long int op)` ¶
Function: `void` mpz_init_set_si `(mpz_t rop, signed long int 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.

Function: `int` mpz_init_set_str `(mpz_t rop, const 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.)