Node:Initializing Rationals, Next:, Previous:Rational Number Functions, Up:Rational Number Functions



Initialization and Assignment Functions

void mpq_init (mpq_t dest_rational) Function
Initialize dest_rational 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_clear (mpq_t rational_number) Function
Free the space occupied by rational_number. Make sure to call this function for all mpq_t variables when you are done with them.

void mpq_set (mpq_t rop, mpq_t op) Function
void mpq_set_z (mpq_t rop, mpz_t op) Function
Assign rop from op.

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) Function
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, char *str, int base) Function
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 Assigning Integers). White space is allowed in the string, and is simply ignored. The base can vary from 2 to 36, or if base is 0 then the leading characters are used: 0x for hex, 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) Function
Swap the values rop1 and rop2 efficiently.