### 12.4 Calculations ¶

Basic arithmetic operations:

Function: `void` gcry_mpi_add `(gcry_mpi_t w, gcry_mpi_t u, gcry_mpi_t v)` ¶

  w = u + v.

Function: `void` gcry_mpi_add_ui `(gcry_mpi_t w, gcry_mpi_t u, unsigned long v)` ¶

  w = u + v. Note that v is an unsigned integer.

Function: `void` gcry_mpi_addm `(gcry_mpi_t w, gcry_mpi_t u, gcry_mpi_t v, gcry_mpi_t m)` ¶

  w = u + v \bmod m.

Function: `void` gcry_mpi_sub `(gcry_mpi_t w, gcry_mpi_t u, gcry_mpi_t v)` ¶

  w = u - v.

Function: `void` gcry_mpi_sub_ui `(gcry_mpi_t w, gcry_mpi_t u, unsigned long v)` ¶

  w = u - v. v is an unsigned integer.

Function: `void` gcry_mpi_subm `(gcry_mpi_t w, gcry_mpi_t u, gcry_mpi_t v, gcry_mpi_t m)` ¶

  w = u - v \bmod m.

Function: `void` gcry_mpi_mul `(gcry_mpi_t w, gcry_mpi_t u, gcry_mpi_t v)` ¶

  w = u * v.

Function: `void` gcry_mpi_mul_ui `(gcry_mpi_t w, gcry_mpi_t u, unsigned long v)` ¶

  w = u * v. v is an unsigned integer.

Function: `void` gcry_mpi_mulm `(gcry_mpi_t w, gcry_mpi_t u, gcry_mpi_t v, gcry_mpi_t m)` ¶

  w = u * v \bmod m.

Function: `void` gcry_mpi_mul_2exp `(gcry_mpi_t w, gcry_mpi_t u, unsigned long e)` ¶

  w = u * 2^e.

Function: `void` gcry_mpi_div `(gcry_mpi_t q, gcry_mpi_t r, gcry_mpi_t dividend, gcry_mpi_t divisor, int round)` ¶

  q = dividend / divisor, r = dividend \bmod divisor. q and r may be passed as `NULL`. round is either negative for floored division (rounds towards the next lower integer) or zero for truncated division (rounds towards zero).

Function: `void` gcry_mpi_mod `(gcry_mpi_t r, gcry_mpi_t dividend, gcry_mpi_t divisor)` ¶

  r = dividend \bmod divisor.

Function: `void` gcry_mpi_powm `(gcry_mpi_t w, const gcry_mpi_t b, const gcry_mpi_t e, const gcry_mpi_t m)` ¶

  w = b^e \bmod m.

Function: `int` gcry_mpi_gcd `(gcry_mpi_t g, gcry_mpi_t a, gcry_mpi_t b)` ¶

  Set g to the greatest common divisor of a and b. Return true if g is 1.

Function: `int` gcry_mpi_invm `(gcry_mpi_t x, gcry_mpi_t a, gcry_mpi_t m)` ¶

  Set x to the multiplicative inverse of a \bmod m. Return true if the inverse exists.