-
Notifications
You must be signed in to change notification settings - Fork 7
/
index.txt
107 lines (88 loc) · 4.43 KB
/
index.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<h2>What is FLINT ?</h2>
<p>FLINT is a C library for doing number theory, freely available
under the <a href="https://www.gnu.org/licenses/lgpl-3.0.en.html">GNU LGPL</a>.
<div style="float:right; width:250px; margin-left:1em; margin-right:0; margin-bottom:2em; text-align:center; padding: 0.5em; background-color: #fffadd; border: 1px solid #fff0d4; border-radius:4px;">
<img src="domains.svg"/>
<br/><br/>
<span style="font-style: italic">Some domains handled by FLINT.</span>
</div>
<p>At its core, FLINT provides arithmetic in standard rings such as
the integers, rationals, algebraic, real, complex and <i>p</i>-adic numbers,
finite fields, and number fields.
It also provides polynomials (univariate and multivariate), power series, and matrices.
</p>
<p>
FLINT covers a wide range of functionality: primality testing, integer factorisation,
multivariate polynomial GCD and factorisation, FFTs, multimodular reconstruction,
special functions, exact and approximate linear algebra,
LLL, finite field embeddings, and more.</p>
<h3>Mature & widely used</h3>
<p>FLINT is the work of dozens of contributors, spanning 15+ years of development.
The FLINT 3.0 release comprises 8,000 documented functions,
3,500 test programs, and 900,000 lines of code.
</p>
<p>
FLINT runs on most common platforms, including Linux, macOS and Windows
on typical hardware configurations.
</p>
<p>
Although FLINT itself is written in C, bindings are available for various general-purpose programming languages, including <a href="https://pypi.org/project/python-flint/">Python</a>, <a href="https://nemocas.github.io/Nemo.jl/latest/">Julia</a>,
<a href="https://hackage.haskell.org/package/Flint2">Haskell</a> and <a href="https://github.com/flintlib/flintxx">C++</a>.
Several computer algebra systems also rely on FLINT as a back-end library,
including
<a href="https://www.sagemath.org">SageMath</a>,
<a href="https://www.oscar-system.org/">OSCAR</a>,
<a href="https://www.singular.uni-kl.de/">Singular</a>,
<a href="http://www2.macaulay2.com/Macaulay2/">Macaulay2</a>,
<a href="https://www.maplesoft.com/products/Maple/">Maple</a>
and <a href="https://www.wolfram.com/mathematica/">Mathematica</a>.
</p>
<h3>At the research frontier</h3>
<p>
FLINT has been used for many large scale research computations
(for example: <a href="https://www.aimath.org/news/congruentnumbers/">A Trillion Triangles</a>)
and has been cited in hundreds of publications.
FLINT's authors themselves have published more than 20 papers describing
new algorithms first implemented within or on top of FLINT.
</p>
<h3>Efficient</h3>
<p>
FLINT is designed
for all operand sizes, from single-word to multi-gigabyte.
It implements many low-level optimisations and chooses automatically
between basecase, intermediate,
asymptotically fast and special-purpose algorithms
depending on the size and structure of the problem.
Many algorithms are fully parallel (multithreaded)
and some key functions use SIMD acceleration.
</p>
<h3>Handles real numbers</h3>
<div style="text-align:center"><img src="arb-banner.jpg" style="width:75%; margin-bottom:1em" /> <br/>
<span style="font-style: italic">Some transcendental functions of a complex variable plotted using FLINT's ball arithmetic. Left to right:
the elliptic <i>j</i>-invariant in two different projections; the gamma function; the Riemann zeta function.</span>
</div>
<p>
FLINT has advanced support for real and complex numbers, implemented using ball arithmetic.
It covers a variety of numerical functionality
(polynomial arithmetic, transcendental functions, numerical integration, linear algebra, etc.)
with arbitrary precision and with rigorous error bounds.
FLINT also provides an exact (symbolic) model of real and complex numbers
with the ability to decide equalities.
</p>
<i>Note: this functionality is new in FLINT 3.0 and
is due to merging the
spin-off projects Arb, Antic and Calcium which were previously maintained as standalone libraries.</i>
<h3>Developer-friendly</h3>
<p>
FLINT has a developer-friendly GMP-like C API
which makes it easy to write performant and type-safe code
with fine-grained control over in-place mutations,
memory allocation, precision, conversions between
representations, and algorithm parameters.
FLINT also provides well-documented access
to most of its internals.
Finally, the FLINT project is developed openly in
collaboration with the community, and
welcomes contributions (feature requests, bug reports, patches, testing, documentation, general feedback)
from anyone.
</p>