FLINT3.7.0-dev

User guide

The user guide explains how to install FLINT, how to compile programs against it, and conventions that all modules share: word types, naming of functions, aliasing, memory management, multithreading, portability, error handling, and generic programming.

The guide then explains what FLINT guarantees and what it does not: which algorithms are proved correct, how FLINT is tested, which inputs are checked, and limitations. It helps choose among FLINT's many types for a task and explains rigorous ball arithmetic. It also describes interfaces to other languages and explains how to report bugs and contribute.

New users should start with Introduction and Building, testing and installing, and then follow the first tutorial, A first program. The release notes of all versions are in History.

Getting started

What FLINT is, how to build and install it, and how to compile programs against it.

Conventions

Types, naming, aliasing, memory management, threading and portability rules shared by all modules.

Correctness

What FLINT guarantees about its results, how it is tested, which inputs are valid, size limits, and why FLINT must not be used for cryptography or on untrusted data.

Types and mathematical domains

Which FLINT type to use for integers, residues, finite fields, polynomials, matrices, p-adic, algebraic, real and complex numbers; ball arithmetic and exact real and complex numbers.

Generic programming

The techniques FLINT uses to implement one algorithm for many types (parallel modules, preprocessor templates, generated code, run-time dispatch and the generic rings of gr), and what the generic interface costs compared with the type-specific modules.

Interfaces

Using FLINT from other languages.

Development

Contributing code, reporting bugs, and the contributors to FLINT.

Cite this page

The FLINT team, “User guide,” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/guide/index.html (generated 2026-10-20).