- Function:
`void`

**mpq_init**`(mpq_t`

¶`x`) Initialize

`x`and set it to 0/1. Each variable should normally only be initialized once, or at least cleared out (using the function`mpq_clear`

) between each initialization.

- Function:
`void`

**mpq_inits**`(mpq_t`

¶`x`, ...) Initialize a NULL-terminated list of

`mpq_t`

variables, and set their values to 0/1.

- Function:
`void`

**mpq_clear**`(mpq_t`

¶`x`) Free the space occupied by

`x`. Make sure to call this function for all`mpq_t`

variables when you are done with them.

- Function:
`void`

**mpq_clears**`(mpq_t`

¶`x`, ...) Free the space occupied by a NULL-terminated list of

`mpq_t`

variables.

- Function:
`void`

**mpq_set**`(mpq_t`

¶`rop`, const mpq_t`op`) - Function:
`void`

**mpq_set_z**`(mpq_t`

¶`rop`, const mpz_t`op`) Assign

`rop`from`op`.

- Function:
`void`

**mpq_set_ui**`(mpq_t`

¶`rop`, unsigned long int`op1`, unsigned long int`op2`) - Function:
`void`

**mpq_set_si**`(mpq_t`

¶`rop`, signed long int`op1`, unsigned long int`op2`) Set the value of

`rop`to`op1`/`op2`. Note that if`op1`and`op2`have common factors,`rop`has to be passed to`mpq_canonicalize`

before any operations are performed on`rop`.

- Function:
`int`

**mpq_set_str**`(mpq_t`

¶`rop`, const char *`str`, int`base`) Set

`rop`from a null-terminated string`str`in the given`base`.The string can be an integer like “41” or a fraction like “41/152”. The fraction must be in canonical form (see Rational Number Functions), or if not then

`mpq_canonicalize`

must be called.The numerator and optional denominator are parsed the same as in

`mpz_set_str`

(see Assignment Functions). White space is allowed in the string, and is simply ignored. The`base`can vary from 2 to 62, or if`base`is 0 then the leading characters are used:`0x`

or`0X`

for hex,`0b`

or`0B`

for binary,`0`

for octal, or decimal otherwise. Note that this is done separately for the numerator and denominator, so for instance`0xEF/100`

is 239/100, whereas`0xEF/0x100`

is 239/256.The return value is 0 if the entire string is a valid number, or −1 if not.

- Function:
`void`

**mpq_swap**`(mpq_t`

¶`rop1`, mpq_t`rop2`) Swap the values

`rop1`and`rop2`efficiently.