### 5.10 Comparison Functions

Function: int mpz_cmp (const mpz_t op1, const mpz_t op2)
Function: int mpz_cmp_d (const mpz_t op1, double op2)
Macro: int mpz_cmp_si (const mpz_t op1, signed long int op2)
Macro: int mpz_cmp_ui (const mpz_t op1, unsigned long int op2)

  Compare op1 and op2. Return a positive value if op1 > op2, zero if op1 = op2, or a negative value if op1 < op2.

  `mpz_cmp_ui` and `mpz_cmp_si` are macros and will evaluate their arguments more than once. `mpz_cmp_d` can be called with an infinity, but results are undefined for a NaN.

Function: int mpz_cmpabs (const mpz_t op1, const mpz_t op2)
Function: int mpz_cmpabs_d (const mpz_t op1, double op2)
Function: int mpz_cmpabs_ui (const mpz_t op1, unsigned long int op2)

  Compare the absolute values of op1 and op2. Return a positive value if abs(op1) > abs(op2), zero if abs(op1) = abs(op2), or a negative value if abs(op1) < abs(op2).

  `mpz_cmpabs_d` can be called with an infinity, but results are undefined for a NaN.

Macro: int mpz_sgn (const mpz_t op)

  Return +1 if op > 0, 0 if op = 0, and -1 if op < 0.

  This function is actually implemented as a macro. It evaluates its argument multiple times.