FLINT 3.3
FLINT 3.3.1 (2025-06-16)#
Bug fixes
- Set permutation vector in
gr_mat_lu_classicaleven if there are zero columns (Fredrik Johansson).
- Set permutation vector in
FLINT 3.3.0 (2025-06-11)#
Main contributors: Albin Ahlbäck (AA), Ricardo Buring (RB), Lars Göttgens (LG), Max Horn (MH), Fredrik Johansson (FJ), Jean Kieffer (JK), Marc Mezzarobba (MM), Vincent Neiger (VN).
Features
- Add generic fraction fields (
gr_ctx_init_gr_fraction) (FJ). - Allow rings to overload
_gr_mat_charpolyand provide such overloads forfmpz,fmpq,mpn_modandfmpz_mod. Furthermore, removefq_*_mat_charpoly_danilevskyandfmpz_mod_mat_charpoly_berkowitz, and wrapfq_*_mat_minpolyandfq_*_mat_charpolyaround GR functions (FJ). - Remove
fq_zech_mat_reduce_rows(FJ). - Add various
mulmod,div_preinvandcompose_modmethods forgr_poly(FJ). - Add
fmpz_mod_mat_pow_ui(LG). - Add
gr_poly_scalar_mul(FJ). - Implement
GR_METHOD_OTHER_MULforgr_poly(FJ). - Add
gr_mat_pow_(si|fmpz|fmpq|scalar)(LG, FJ). - Add
gr_mat_func_jordan(FJ). - Add
nmod_poly_mat_transposeandfq_default_mat_transpose(LG). - Add different
powmod-methods forgr_poly, based on methods fromfq_poly(FJ). - Add
gr_poly_(add|sub)_scalar(RB). - Support GR objects in
flint_printf(FJ). - Add support for parsing builtin functions like
sqrt(x)ingr_set_str(FJ). - Recognize when generic polynomial rings are UFDs (MM).
- Add
flint_set_throw(AA). - Add
gr_generic_poly_factor_rootsfor factoring generic polynomials over algebraically closed fields providinggr_poly_roots(MM). - Add
gr_factorforgr_poly(MM). - Add
arf_nint(FJ). - Add
gr_poly_gcd_subresultant(FJ). - Add generic
gr_gcdfor fields (FJ). - Add
gr_mpoly_inv(FJ). - Implement
gr_poly_gcdover any UFD, not only fields (FJ). - Add
gr_canonical_associateand corresponding implementations for several types (FJ). - Add
gr_mat_companionandgr_mat_companion_fractionto construct companion matrices (RB). - Add
gr_randtest_invertible(RB). - Add
gr_mat_randsimilar(RB). - Add
flint_merge_sortandflint_sort(MM). - Add
gr_vec_sortfor sorting generic vectors (MM). - Add
_gr_vec_shuffle,gr_vec_permute,gr_vec_contains(MM). - Add
gr_in_domainandgr_check(MM). - Add
gr_poly_leading_taylor_shift(MM). - Add shift equivalence, dispersion, and shiftless decomposition of generic polynomials (
gr_poly_shift_equivalent,gr_poly_dispersion,gr_poly_shiftless_decomposition) (MM). - Add
gr_mat_mul_rosowski(FJ). - Add
acb_theta_oneto compute a single theta function (JK). - Add parameter
abinacb_theta_jet(JK).
- Add generic fraction fields (
Examples
- Add example script to check
n_is_primeagainst list of Fermat pseudoprimes (FJ). - Replace generated code with strings in
huge_expr.c(FJ).
- Add example script to check
Performance
- Use stride instead of row pointers in all matrix types (FJ).
- Refactor characteristic polynomial and retune it (FJ).
- Use delayed canonicalization in
mpn_mod_mat_reduce_rowandfmpz_mod_mat_reduce_row(FJ). - Improve method choice in
gr_mat_rank(FJ). - Inline operations in
_gr_fmpz_set(FJ). - Use
udiv_qrnndinn_preinvert_limbwhenever CPU has fast division (AA, FJ, VN). - Have
gr_divexactover agr_polyring dispatch togr_poly_divexact(FJ). - Rewrite the
acb_thetamodule for substantially improved performance (JK). - Overload
_gr_vec_mulfor nmod types (FJ). - Optimize
_fmpz_vec_addand_fmpz_vec_subfor small coefficients by inlining (FJ).
Bug fixes
- Fix bug in
fmpz_mat_charpoly_modularwhere wrong results were given if output polynomial was not initially set to zero by caller (FJ). - Fix memory leak in
gr_mat_minpoly_field(FJ). - Fix aliasing for
gr_poly_div_newton_n_preinv(FJ). - Fix memory leak in
gr_mat_fflu(FJ). - Fix invalid write in
_gr_nmod_vec_reciprocalswhen length is zero (FJ). - Fix various memory leaks found by the address sanitizer (RB).
- Fix cases where
gr_polywere not correctly normalized over a degenerate ring (FJ). - Fix
gr_set_strwith duplicate generator names (MM). - Fix
fmpz_mat_minpolyandfmpq_mat_minpolyto return the correct result for the zero matrix (MH). - Fix bug in
arb_nint(FJ). - Fix
fmpz_mat_minpoly_modularwith large coefficients (FJ). - Fix context bug in
_gr_gr_series_mod_gen(RB). - Propagate failure in
acb_poly_find_rootsif numerical stage returns NaN (FJ). - Fix bug in
arb_divgiving NaN when the numerator contained zero at high precision (FJ). - Fix NaN output for
[+/-inf +/- inf]inarb_get_interval_arfandarb_get_interval_mpfr(FJ). - Correct signature of
gr_ctx_clearto havevoidreturn type (FJ). - Fix function signatures in internal callbacks for
flint_parallel_binary_splitting(Oscar Benjamin, FJ).
- Fix bug in
Build system
- Push pragmas into macros, allowing them to be set during configuration (AA).
- Fix an overwriting of CFLAGS in
configure.ac(AA). - Re-enable
-Wmaybe-uninitialized(FJ). - Enable
-Werror=newline-eof(AA). - Accommodate for Meteor Lake, Raptor Lake and Tiger Lake (VN).
- Make sure Comet Lake enables
fft_small(VN). - Error when trying to build FLINT on a non-Windows system (AA).
- Do not use
find_library()inflint_ctypes(MM).
Tests
- Add more test code for preinv division for
gr_poly(FJ). - Add tests for
gr_mat_expandgr_mat_log(FJ). - Add test for
fmpz_mod_mat_transpose(LG). - Test
gr_polyover random rings (MM). - Have
gr_ctx_init_randomgenerate polynomial contexts (FJ).
- Add more test code for preinv division for
- Profiling
Maintenance
- Replace some
fq_polyandfmpz_mod_polymethods with GR wrappers (FJ). - Include standard headers instead of using builtins (AA).
- Refactor
gr_mat_exp_jordanandgr_mat_log_jordan(FJ). - Delegate
(fmpz|fmpz_poly|fmpq)_mat_transposetogr_mat(LG). - Add issue templates to Github (AA, Lars Kastner).
- Optimize for code size in some less performance-critical functions (FJ).
- Fix various undefined behaviors reported by GCC's address sanitizer (FJ).
- Add
FLINT_UABSmacro (FJ). - Refactor nullspace and rref in GR, and make
fq_*_matuse these instead (FJ). - Use
gr_poly-methods forpowmodinfmpz_mod_polyandfq_*_poly(FJ). - Use
gr_mat_rank_luinfmpz_mod_mat_rankandfq_*_mat_rank(FJ). - Remove underscore in front of
nfloat_ctx_(set|get)_real_precto match documentation (Joel Dahne). - Add missing newlines at end of file (FJ).
- Fix
ENABLE_AVX2=OFFforCMake(AA). - Add
gr_poly_coeff_ptrand deprecategr_poly_entry_ptr(RB).
- Replace some
Continuous integration
- Use temporary Nemo branch for CI due to the change of using stride instead of row pointers in matrices (AA).
Documentation
- Fix
fmpzdocstrings to clarify that GCD of integers and rationals is non-negative (MH). - Unify some docstrings (LG).
- Fix docstrings for various LU functions (LG).
- Fix typos (AA, MM, user202729).
- Touch up formula in
hypgeom.rst(FJ). - Fix docstring for
fmpz_mat_snf_kannan_bachem(Dima Pasechnik). - Fix docstring for
fmpz_get_nmod(David Lowry-Duda). - Minor fix in documentation of
ulong_extras(VN). - Document
n_factor_tstructure (Matthew House). - Document
gr_vec_entry_srcptr(MM). - Document
truth_tfunctions (MM).
- Fix
Cite this page
The FLINT team, “FLINT 3.3,” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/history/flint3/v3-3.html (generated 2026-10-20).
@misc{flint-doc-history-flint3-v3-3,
author = {{The FLINT team}},
title = {{FLINT 3.3}},
howpublished = {FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev},
year = {2026},
url = {https://flintlib.org/doc/history/flint3/v3-3.html},
note = {Generated 2026-10-20}
}