fmpzi.h – Gaussian integers

This module allows working with elements of the ring \(\mathbb{Z}[i]\). At present, only a minimal interface is provided.

Types, macros and constants

type fmpzi_struct
type fmpzi_t

Contains a pairs of integers representing the real and imaginary parts. An fmpzi_t is defined as an array of length one of type fmpzi_struct, permitting an fmpzi_t to be passed by reference.

fmpzi_realref(x)

Macro giving a pointer to the real part of x.

fmpzi_imagref(x)

Macro giving a pointer to the imaginary part of x.

Basic manipulation

void fmpzi_init(fmpzi_t x)
void fmpzi_clear(fmpzi_t x)
int fmpzi_equal(const fmpzi_t x, const fmpzi_t y)
void fmpzi_zero(fmpzi_t x)
void fmpzi_one(fmpzi_t x)
void fmpzi_set(fmpzi_t res, const fmpzi_t x)
void fmpzi_set_si_si(fmpzi_t res, slong a, slong b)
void fmpzi_swap(fmpzi_t x, fmpzi_t y)
void fmpzi_print(const fmpzi_t x)
void fmpzi_randtest(fmpzi_t res, flint_rand_t state, mp_bitcnt_t bits)

Arithmetic

void fmpzi_conj(fmpzi_t res, const fmpzi_t x)
void fmpzi_neg(fmpzi_t res, const fmpzi_t x)
void fmpzi_add(fmpzi_t res, const fmpzi_t x, const fmpzi_t y)
void fmpzi_sub(fmpzi_t res, const fmpzi_t x, const fmpzi_t y)
void fmpzi_sqr(fmpzi_t res, const fmpzi_t x)
void fmpzi_mul(fmpzi_t res, const fmpzi_t x, const fmpzi_t y)
void fmpzi_pow_ui(fmpzi_t res, const fmpzi_t x, ulong exp)