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.
void
mpq_inits (mpq_t x, ...)
¶Initialize a NULL-terminated list of mpq_t
variables, and set their
values to 0/1.
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.
void
mpq_clears (mpq_t x, ...)
¶Free the space occupied by a NULL-terminated list of mpq_t
variables.
void
mpq_set (mpq_t rop, const mpq_t op)
¶void
mpq_set_z (mpq_t rop, const mpz_t op)
¶Assign rop from op.
void
mpq_set_ui (mpq_t rop, unsigned long int op1, unsigned long int op2)
¶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.
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.
void
mpq_swap (mpq_t rop1, mpq_t rop2)
¶Swap the values rop1 and rop2 efficiently.