summaryrefslogtreecommitdiff
path: root/sci-mathematics
diff options
context:
space:
mode:
Diffstat (limited to 'sci-mathematics')
-rw-r--r--sci-mathematics/Manifest.gzbin19329 -> 19333 bytes
-rw-r--r--sci-mathematics/flint/Manifest6
-rw-r--r--sci-mathematics/flint/files/flint-2.9.0-remove-hardcoded-CFLAGS.patch69
-rw-r--r--sci-mathematics/flint/files/flint-3.1.3_p1-c99-I.patch320
-rw-r--r--sci-mathematics/flint/flint-2.9.0.ebuild81
-rw-r--r--sci-mathematics/flint/flint-3.1.3_p1.ebuild89
6 files changed, 412 insertions, 153 deletions
diff --git a/sci-mathematics/Manifest.gz b/sci-mathematics/Manifest.gz
index b9481e3cbea6..6027661c0d03 100644
--- a/sci-mathematics/Manifest.gz
+++ b/sci-mathematics/Manifest.gz
Binary files differ
diff --git a/sci-mathematics/flint/Manifest b/sci-mathematics/flint/Manifest
index c2a578e829ee..b9cd649810e6 100644
--- a/sci-mathematics/flint/Manifest
+++ b/sci-mathematics/flint/Manifest
@@ -1,10 +1,10 @@
-AUX flint-2.9.0-remove-hardcoded-CFLAGS.patch 2131 BLAKE2B f52fbcf321fd0f0beb302480c220b1f83e382ffe893e9b22a5eed839d02c2436ba101575c272cea0fbcbdd42110d5b9dde7cf6516403cb6dde1b0fa081dae63f SHA512 fa5c057cf664cd3ba83d3ec6b31a96c8a8e4a971a8f07b11a40150e22c1e55c7ad2d8b480f119213f867e502417c48741bb438b1724393b42da27d3577116fb5
AUX flint-3.0.1-find-cblas.patch 1755 BLAKE2B bdf73d282a98f11126271d1afb5dd27daa2242fbd4923558a720753db85fcc71474ab559822a3549d60c555ab72c8273350c9df3fea2ba4d134bd7a45ec4c089 SHA512 1dc9342031472e59a5ba68540f070dc410134be5d52d7545a780c5b2867fad3c84410c5719ada517a0f2780f384c02487d128e0264bdaa54e8cdf34d2a5b71df
AUX flint-3.1.0-fix-pc-install.patch 1035 BLAKE2B 30f80d5a75353344c1dd2216395263adf13ca00545b019e1fe4f00f4cb2f92adab970092c2f237c8b9b15e60e0943b5b46d36f719c9a87f0039e50bd9db65e58 SHA512 859aaf547599fa7103de12020f569d13e7545cdcff09a3dcbbe05bd239daaa4d4f58780a4247910e115478117af8a7e266671104dec36d87feddce93255d9650
-DIST flint-2.9.0.tar.gz 5283894 BLAKE2B a790437ee142d8acb5cec1e6c7d21812f8d83f5d30d1e8c07e799713e96791d87792f25fbd4ce2d0d68f6a8ee2f0cde2b8d9f8db8ab26922a48485e0e90394aa SHA512 4494cba6a4e215e817d7c74ef6834c4e05a832488f4808bbd7bea8b02a4a35d47ef3c63a4f213230c712b32842f5588c503fc1cf23e5e2ddc4a4a5a1627a02ba
+AUX flint-3.1.3_p1-c99-I.patch 14288 BLAKE2B b0c030835fa6f239367fd169e428c09551893f4b7a7d525344d33ee8c9756f6652b570543af5bd0ffccc292753bde9dad4cbe933aa71187660fe96852f65fea5 SHA512 7698f3003cab0909a7a42d8c6701a3a4837325aa595ab171781faef482850b1c013dcf9f11e089fe860de7fa7aad0b9f62830b3f41a73343fb0663135f5067e3
DIST flint-3.0.1.tar.gz 7624944 BLAKE2B 0d94252075945f39af3dd2e49803cbe16aa65b108964dfc0c12bdfd9188748944c1e839401e17b974f8f6f8832e4da84d62a63f20b63cfff0ff5c2736bfd2d47 SHA512 4b5b432b962135cd708a0ce4242343f3226f0fdf73c3f541728ed4540e7ef6cb7812a48b6b46e65a8fcc1f5cae93d8bb59838d24728024cd9aa0f7b8e5c6f98f
DIST flint-3.1.0.tar.gz 7585407 BLAKE2B 697be5bd88e7793eb160d5f0e2110a7b8371ef8d3ca82b576c4cc755983a660a884d35d3cbb442288caa074b7f41699f4c6bc3c244272d9e9f5755d8d209004d SHA512 1d33bb35853f4bdca047899ebb4ac9873748c6d57ad3b6aded32219261e95713fb26b394d8c86f6183b9f44db58697def07e6c565ac789461d5ccc4dca3e9ba7
-EBUILD flint-2.9.0.ebuild 1726 BLAKE2B dd2ef05aacb1642cc35807306af41237bb362662a8b7b50d5814f42212125d8a83aa716c7699d554e66e41a298bf5470b454d6e67ae9dd7fae6d8bb6cd503e82 SHA512 d40e144f5e2efeb72fe39b7c9948517ab6b59588a184e3b449932c914d8f85ba5db0cd2b1f4a56925288877705956b0ff2c175327dd24f385a12014e577e5506
+DIST flint-3.1.3_p1.tar.gz 7588734 BLAKE2B 87acf8778e21e37c01e12b198ff81e62ab113df3e0e9c6155ff7dd505828f79d5c49d85093e261ea96397e906350caa03477e3ecbdd1fc09d6ae5c984397a2be SHA512 1b16ff2fb9cb2ac4b75513278b8c14683e8d83db39985631df14d6ea74bee4d6ea818a200321d5f0de6f1af89898f7a99dc7088f712f4c6db1a2546199aefba7
EBUILD flint-3.0.1.ebuild 1983 BLAKE2B bba189fe6f49d2991abc592b99cf725add9abb69f1d683432aa1954e46293afe3fc0b5a8afa7e77acb09455598c91388e29cde07dc845bd2bd66fc98ef9734d8 SHA512 0e68cb71137a24a696f49b21f1523d694af56fda47b9d1343aca9d9a58f55196a304bbb236125e7313429311e7b4ba36a88d365d55f1ac7ff8840e4da4d9ac68
EBUILD flint-3.1.0.ebuild 2023 BLAKE2B ebddd22bcbdc40778d36947998c266f0baaf146b07e902c7174ddacf7b26a22b28c366a4d1710b031e84e06532479ee6d1c183aaad05fdd5ca7346fcf66ecac3 SHA512 230fc27efc3ea58352c759a5be3a1a81e7138c9bbc1c9cdc723ef752d0dd1e7199a72a003759f62f64f9d9d3cfe916d38376f9f3a8817c95e1cfec9bb05da55a
+EBUILD flint-3.1.3_p1.ebuild 2093 BLAKE2B a7e288546940bc407d07a2f3d0147b89d57aeb2c709b2cfee58a24447a834140f87f513fe69355e5dfc139087af8344f42ded31e39875072b0a966d2a3206edf SHA512 eaa36ee26b3feffcba4220ed76c618b1f309aef29757a022e29c69494a4a01081f072ac6baa2342181d93adbb15fe585525a08e180ec3b0c45890da3729f0b22
MISC metadata.xml 640 BLAKE2B b95d6f493564025e43604bffa340fffd88fcedf29c282fcc3c18e08ac089cdf1e10837787af664dd250a77a62237bf3665ff0a3045ca52680dd67aa0b39eeba7 SHA512 a9a64076e7f0df29e6a05a9d349c530a4ee4285b6a444425681eddf6ae1e8b41f610fda0bd7cc86b5177b36f34bc3072b67c7edac2cc8c0709a032b000576a14
diff --git a/sci-mathematics/flint/files/flint-2.9.0-remove-hardcoded-CFLAGS.patch b/sci-mathematics/flint/files/flint-2.9.0-remove-hardcoded-CFLAGS.patch
deleted file mode 100644
index b057ea207bbd..000000000000
--- a/sci-mathematics/flint/files/flint-2.9.0-remove-hardcoded-CFLAGS.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 9784633c4..641ab9ed4 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -1,6 +1,5 @@
- cmake_minimum_required(VERSION 3.9)
-
--include(CheckIPOSupported)
- include(CheckIncludeFiles)
- include(CheckFunctionExists)
- include(CheckPrototypeDefinition)
-@@ -126,13 +125,6 @@ with open(join('${CMAKE_SOURCE_DIR}','qadic', 'CPimport.txt')) as fin:
- )
- configure_file(${CMAKE_BINARY_DIR}/CPimport.h.in ${CMAKE_BINARY_DIR}/CPimport.h COPYONLY)
-
--# Setup for flint-config.h
--check_c_compiler_flag("-mpopcnt" HAS_FLAG_MPOPCNT)
--check_c_compiler_flag("-funroll-loops" HAS_FLAG_UNROLL_LOOPS)
--
--if(HAS_FLAG_MPOPCNT)
-- set(CMAKE_REQUIRED_FLAGS "-mpopcnt")
--endif()
- # Testing __builtin_popcountl...
- check_c_source_runs([[int main(int argc, char ** argv) {
- #if defined(_WIN64)
-@@ -141,7 +133,6 @@ check_c_source_runs([[int main(int argc, char ** argv) {
- return __builtin_popcountl(argc) == 100;
- #endif
- }]] FLINT_USES_POPCNT)
--unset(CMAKE_REQUIRED_FLAGS)
-
- # fenv configuration
- check_c_source_compiles([[#include <fenv.h>
-@@ -250,13 +241,6 @@ if(BUILD_SHARED_LIBS AND WIN32)
- target_compile_definitions(flint PUBLIC "MSC_USE_DLL")
- endif()
-
--if (HAS_FLAG_MPOPCNT)
-- target_compile_options(flint PUBLIC "-mpopcnt")
--endif()
--if (HAS_FLAG_UNROLL_LOOPS)
-- target_compile_options(flint PUBLIC "-funroll-loops")
--endif()
--
- # Versioning
-
- set_target_properties(flint PROPERTIES
-@@ -279,21 +263,6 @@ elseif (WIN32)
- set_target_properties(flint PROPERTIES RUNTIME_OUTPUT_NAME "flint-${FLINT_MAJOR}")
- endif()
-
--if(NOT DEFINED IPO_SUPPORTED)
-- message(STATUS "Checking for IPO")
-- check_ipo_supported(RESULT ipo_supported LANGUAGES C)
-- if(ipo_supported)
-- message(STATUS "Checking for IPO - found")
-- else()
-- message(STATUS "Checking for IPO - not found")
-- endif()
-- set(IPO_SUPPORTED ${ipo_supported} CACHE INTERNAL "Introprocedural Optimization" FORCE)
--endif()
--
--if(IPO_SUPPORTED)
-- set_target_properties(flint PROPERTIES INTERPROCEDURAL_OPTIMIZATION TRUE)
--endif()
--
- if(NOT MSVC)
- target_link_libraries(flint PUBLIC m)
- endif()
diff --git a/sci-mathematics/flint/files/flint-3.1.3_p1-c99-I.patch b/sci-mathematics/flint/files/flint-3.1.3_p1-c99-I.patch
new file mode 100644
index 000000000000..1ebe43d6243b
--- /dev/null
+++ b/sci-mathematics/flint/files/flint-3.1.3_p1-c99-I.patch
@@ -0,0 +1,320 @@
+From 1b93e73d00881be12e04b7f13e070214a3c9e1cc Mon Sep 17 00:00:00 2001
+From: Dima Pasechnik <dima@pasechnik.info>
+Date: Wed, 19 Jun 2024 22:16:34 +0100
+Subject: [PATCH] ensure C99 compliance in headers, as 'I' is reserved
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Note that the following code
+---- cut here: save as t.c
+---- cut here
+
+fails to compile with a suffciently new compiler, e.g. clang 16 or gcc 14.
+
+$ gcc -c t.c
+In file included from t.c:1:
+/usr/include/flint/mpoly.h:1319:43: error: expected ‘)’ before ‘__extension__’
+ 1319 | void mpoly_gcd_info_init(mpoly_gcd_info_t I, slong nvars);
+ | ^
+In file included from /usr/include/flint/fmpz_types.h:15,
+ from /usr/include/flint/fmpz_mod_types.h:15,
+ from /usr/include/flint/mpoly_types.h:15,
+ from /usr/include/flint/mpoly.h:23,
+ from t.c:2:
+/usr/include/flint/mpoly.h:1319:46: error: expected ‘;’, ‘,’ or ‘)’ before ‘mp_limb_signed_t’
+ 1319 | void mpoly_gcd_info_init(mpoly_gcd_info_t I, slong nvars);
+
+...
+---
+ src/fft_small.h | 6 +++---
+ src/fmpz_mod_mpoly_factor.h | 8 ++++----
+ src/fmpz_mpoly.h | 2 +-
+ src/fmpz_mpoly_factor.h | 18 +++++++++---------
+ src/fq_nmod_mpoly_factor.h | 6 +++---
+ src/fq_zech_mpoly_factor.h | 6 +++---
+ src/mpoly.h | 18 +++++++++---------
+ src/nmod_mpoly.h | 4 ++--
+ src/nmod_mpoly_factor.h | 6 +++---
+ 9 files changed, 37 insertions(+), 37 deletions(-)
+
+diff --git a/src/fft_small.h b/src/fft_small.h
+index 3f62f2e988..b7404f196d 100644
+--- a/src/fft_small.h
++++ b/src/fft_small.h
+@@ -242,10 +242,10 @@ FLINT_INLINE double sd_fft_ctx_get_fft_index(double* d, ulong i)
+ }
+
+ /* sd_fft.c */
+-void sd_fft_trunc(const sd_fft_lctx_t Q, ulong I, ulong S, ulong k, ulong j, ulong itrunc, ulong otrunc);
++void sd_fft_trunc(const sd_fft_lctx_t Q, ulong Iv, ulong S, ulong k, ulong j, ulong itrunc, ulong otrunc);
+
+ /* sd_ifft.c */
+-void sd_ifft_trunc(const sd_fft_lctx_t Q, ulong I, ulong S, ulong k, ulong j, ulong z, ulong n, int f);
++void sd_ifft_trunc(const sd_fft_lctx_t Q, ulong Iv, ulong S, ulong k, ulong j, ulong z, ulong n, int f);
+
+ /* sd_fft_ctx.c */
+ void sd_fft_ctx_clear(sd_fft_ctx_t Q);
+@@ -428,7 +428,7 @@ typedef struct {
+
+ typedef mpn_ctx_struct mpn_ctx_t[1];
+
+-void _convert_block(ulong* Xs, sd_fft_ctx_struct* Rffts, double* d, ulong dstride, ulong np, ulong I);
++void _convert_block(ulong* Xs, sd_fft_ctx_struct* Rffts, double* d, ulong dstride, ulong np, ulong Iv);
+ ulong flint_mpn_nbits(const ulong* a, ulong an);
+ int flint_mpn_cmp_ui_2exp(const ulong* a, ulong an, ulong b, ulong e);
+ unsigned char flint_mpn_add_inplace_c(ulong* z, ulong zn, ulong* a, ulong an, unsigned char cf);
+diff --git a/src/fmpz_mod_mpoly_factor.h b/src/fmpz_mod_mpoly_factor.h
+index 359fdd1e3d..460695dd23 100644
+--- a/src/fmpz_mod_mpoly_factor.h
++++ b/src/fmpz_mod_mpoly_factor.h
+@@ -1203,15 +1203,15 @@ typedef struct {
+ typedef fmpz_mod_mpoly_pfrac_struct fmpz_mod_mpoly_pfrac_t[1];
+
+
+-int fmpz_mod_mpoly_pfrac_init(fmpz_mod_mpoly_pfrac_t I,
++int fmpz_mod_mpoly_pfrac_init(fmpz_mod_mpoly_pfrac_t Iv,
+ flint_bitcnt_t bits, slong l, slong r, const fmpz_mod_mpoly_struct * betas,
+ const fmpz * alpha, const fmpz_mod_mpoly_ctx_t ctx);
+
+-void fmpz_mod_mpoly_pfrac_clear(fmpz_mod_mpoly_pfrac_t I,
++void fmpz_mod_mpoly_pfrac_clear(fmpz_mod_mpoly_pfrac_t Iv,
+ const fmpz_mod_mpoly_ctx_t ctx);
+
+ int fmpz_mod_mpoly_pfrac(slong r, fmpz_mod_mpoly_t t, const slong * deg,
+- fmpz_mod_mpoly_pfrac_t I, const fmpz_mod_mpoly_ctx_t ctx);
++ fmpz_mod_mpoly_pfrac_t Iv, const fmpz_mod_mpoly_ctx_t ctx);
+
+ int fmpz_mod_mpoly_hlift(slong m, fmpz_mod_mpoly_struct * f, slong r,
+ const fmpz * alpha, const fmpz_mod_mpoly_t A, const slong * degs,
+@@ -1290,7 +1290,7 @@ int fmpz_mod_mpolyn_gcd_brown_smprime(
+ fmpz_mod_mpolyn_t B,
+ slong var,
+ const fmpz_mod_mpoly_ctx_t ctx,
+- const mpoly_gcd_info_t I,
++ const mpoly_gcd_info_t Iv,
+ fmpz_mod_poly_polyun_mpolyn_stack_t St);
+
+ int fmpz_mod_mpolyl_gcdp_zippel(
+diff --git a/src/fmpz_mpoly.h b/src/fmpz_mpoly.h
+index b7c9677915..4be3d05c56 100644
+--- a/src/fmpz_mpoly.h
++++ b/src/fmpz_mpoly.h
+@@ -1084,7 +1084,7 @@ void fmpz_mpoly_vec_randtest_not_zero(fmpz_mpoly_vec_t vec, flint_rand_t state,
+
+ void fmpz_mpoly_spoly(fmpz_mpoly_t res, const fmpz_mpoly_t f, const fmpz_mpoly_t g, const fmpz_mpoly_ctx_t ctx);
+ void fmpz_mpoly_vec_set_primitive_unique(fmpz_mpoly_vec_t G, const fmpz_mpoly_vec_t F, const fmpz_mpoly_ctx_t ctx);
+-void fmpz_mpoly_reduction_primitive_part(fmpz_mpoly_t res, const fmpz_mpoly_t f, const fmpz_mpoly_vec_t I, const fmpz_mpoly_ctx_t ctx);
++void fmpz_mpoly_reduction_primitive_part(fmpz_mpoly_t res, const fmpz_mpoly_t f, const fmpz_mpoly_vec_t Iv, const fmpz_mpoly_ctx_t ctx);
+ int fmpz_mpoly_vec_is_groebner(const fmpz_mpoly_vec_t G, const fmpz_mpoly_vec_t F, const fmpz_mpoly_ctx_t ctx);
+ void fmpz_mpoly_buchberger_naive(fmpz_mpoly_vec_t G, const fmpz_mpoly_vec_t F, const fmpz_mpoly_ctx_t ctx);
+ int fmpz_mpoly_buchberger_naive_with_limits(fmpz_mpoly_vec_t G, const fmpz_mpoly_vec_t F,
+diff --git a/src/fmpz_mpoly_factor.h b/src/fmpz_mpoly_factor.h
+index 0da7c1052b..a04ef8021e 100644
+--- a/src/fmpz_mpoly_factor.h
++++ b/src/fmpz_mpoly_factor.h
+@@ -298,11 +298,11 @@ void fmpz_mpoly_from_mpolyl_perm_inflate(fmpz_mpoly_t A,
+
+ int fmpz_mpolyl_gcd_brown(fmpz_mpoly_t G,
+ fmpz_mpoly_t Abar, fmpz_mpoly_t Bbar, fmpz_mpoly_t A, fmpz_mpoly_t B,
+- const fmpz_mpoly_ctx_t ctx, const mpoly_gcd_info_t I);
++ const fmpz_mpoly_ctx_t ctx, const mpoly_gcd_info_t Iv);
+
+ int fmpz_mpolyl_gcd_brown_threaded_pool(fmpz_mpoly_t G,
+ fmpz_mpoly_t Abar, fmpz_mpoly_t Bbar, fmpz_mpoly_t A, fmpz_mpoly_t B,
+- const fmpz_mpoly_ctx_t ctx, const mpoly_gcd_info_t I,
++ const fmpz_mpoly_ctx_t ctx, const mpoly_gcd_info_t Iv,
+ const thread_pool_handle * handles, slong num_handles);
+
+ int fmpz_mpolyl_gcd_zippel(fmpz_mpoly_t G, fmpz_mpoly_t Abar,
+@@ -340,15 +340,15 @@ typedef struct {
+
+ typedef fmpz_poly_pfrac_struct fmpz_poly_pfrac_t[1];
+
+-void fmpz_poly_pfrac_init(fmpz_poly_pfrac_t I);
++void fmpz_poly_pfrac_init(fmpz_poly_pfrac_t Iv);
+
+-void fmpz_poly_pfrac_clear(fmpz_poly_pfrac_t I);
++void fmpz_poly_pfrac_clear(fmpz_poly_pfrac_t Iv);
+
+-int fmpz_poly_pfrac_precompute(fmpz_poly_pfrac_t I,
++int fmpz_poly_pfrac_precompute(fmpz_poly_pfrac_t Iv,
+ const fmpz_poly_struct * b, slong r);
+
+ int fmpz_poly_pfrac_precomp(fmpz_poly_struct * c,
+- const fmpz_poly_t A, fmpz_poly_pfrac_t I);
++ const fmpz_poly_t A, fmpz_poly_pfrac_t Iv);
+
+ typedef struct {
+ flint_bitcnt_t bits;
+@@ -372,15 +372,15 @@ typedef struct {
+
+ typedef fmpz_mpoly_pfrac_struct fmpz_mpoly_pfrac_t[1];
+
+-int fmpz_mpoly_pfrac_init(fmpz_mpoly_pfrac_t I, flint_bitcnt_t bits,
++int fmpz_mpoly_pfrac_init(fmpz_mpoly_pfrac_t Iv, flint_bitcnt_t bits,
+ slong r, slong w, const fmpz_mpoly_struct * betas,
+ const fmpz * alpha, const fmpz_mpoly_ctx_t ctx);
+
+-void fmpz_mpoly_pfrac_clear(fmpz_mpoly_pfrac_t I,
++void fmpz_mpoly_pfrac_clear(fmpz_mpoly_pfrac_t Iv,
+ const fmpz_mpoly_ctx_t ctx);
+
+ int fmpz_mpoly_pfrac(slong l, fmpz_mpoly_t t, const slong * degs,
+- fmpz_mpoly_pfrac_t I, const fmpz_mpoly_ctx_t ctx);
++ fmpz_mpoly_pfrac_t Iv, const fmpz_mpoly_ctx_t ctx);
+
+ int fmpz_mpoly_hlift(slong m, fmpz_mpoly_struct * f, slong r,
+ const fmpz * alpha, const fmpz_mpoly_t A, const slong * degs,
+diff --git a/src/fq_nmod_mpoly_factor.h b/src/fq_nmod_mpoly_factor.h
+index 6289d3f1c5..29caa99aa4 100644
+--- a/src/fq_nmod_mpoly_factor.h
++++ b/src/fq_nmod_mpoly_factor.h
+@@ -427,7 +427,7 @@ typedef fq_nmod_mpoly_pfrac_struct fq_nmod_mpoly_pfrac_t[1];
+
+
+ int fq_nmod_mpoly_pfrac_init(
+- fq_nmod_mpoly_pfrac_t I,
++ fq_nmod_mpoly_pfrac_t Iv,
+ flint_bitcnt_t bits,
+ slong l, slong r,
+ const fq_nmod_mpoly_struct * betas,
+@@ -435,14 +435,14 @@ int fq_nmod_mpoly_pfrac_init(
+ const fq_nmod_mpoly_ctx_t ctx);
+
+ void fq_nmod_mpoly_pfrac_clear(
+- fq_nmod_mpoly_pfrac_t I,
++ fq_nmod_mpoly_pfrac_t Iv,
+ const fq_nmod_mpoly_ctx_t ctx);
+
+ int fq_nmod_mpoly_pfrac(
+ slong r,
+ fq_nmod_mpoly_t t,
+ const slong * deg,
+- fq_nmod_mpoly_pfrac_t I,
++ fq_nmod_mpoly_pfrac_t Iv,
+ const fq_nmod_mpoly_ctx_t ctx);
+
+ int fq_nmod_mpoly_hlift(
+diff --git a/src/fq_zech_mpoly_factor.h b/src/fq_zech_mpoly_factor.h
+index 06f31369f9..3d3c51419f 100644
+--- a/src/fq_zech_mpoly_factor.h
++++ b/src/fq_zech_mpoly_factor.h
+@@ -652,7 +652,7 @@ typedef fq_zech_mpoly_pfrac_struct fq_zech_mpoly_pfrac_t[1];
+
+
+ int fq_zech_mpoly_pfrac_init(
+- fq_zech_mpoly_pfrac_t I,
++ fq_zech_mpoly_pfrac_t Iv,
+ flint_bitcnt_t bits,
+ slong l, slong r,
+ const fq_zech_mpoly_struct * betas,
+@@ -660,14 +660,14 @@ int fq_zech_mpoly_pfrac_init(
+ const fq_zech_mpoly_ctx_t ctx);
+
+ void fq_zech_mpoly_pfrac_clear(
+- fq_zech_mpoly_pfrac_t I,
++ fq_zech_mpoly_pfrac_t Iv,
+ const fq_zech_mpoly_ctx_t ctx);
+
+ int fq_zech_mpoly_pfrac(
+ slong r,
+ fq_zech_mpoly_t t,
+ const slong * deg,
+- fq_zech_mpoly_pfrac_t I,
++ fq_zech_mpoly_pfrac_t Iv,
+ const fq_zech_mpoly_ctx_t ctx);
+
+ int fq_zech_mpoly_hlift(
+diff --git a/src/mpoly.h b/src/mpoly.h
+index b0950e3a48..fe0ccbe7c4 100644
+--- a/src/mpoly.h
++++ b/src/mpoly.h
+@@ -1363,9 +1363,9 @@ typedef struct
+
+ typedef mpoly_gcd_info_struct mpoly_gcd_info_t[1];
+
+-void mpoly_gcd_info_init(mpoly_gcd_info_t I, slong nvars);
++void mpoly_gcd_info_init(mpoly_gcd_info_t Iv, slong nvars);
+
+-void mpoly_gcd_info_clear(mpoly_gcd_info_t I);
++void mpoly_gcd_info_clear(mpoly_gcd_info_t Iv);
+
+ void mpoly_gcd_info_limits(ulong * Amax_exp, ulong * Amin_exp,
+ slong * Amax_exp_count, slong * Amin_exp_count,
+@@ -1378,25 +1378,25 @@ void mpoly_gcd_info_stride(ulong * strides,
+ const ulong * Bmax_exp, const ulong * Bmin_exp,
+ const mpoly_ctx_t mctx);
+
+-void mpoly_gcd_info_set_perm(mpoly_gcd_info_t I,
++void mpoly_gcd_info_set_perm(mpoly_gcd_info_t Iv,
+ slong Alength, slong Blength, const mpoly_ctx_t mctx);
+
+-slong mpoly_gcd_info_get_brown_upper_limit(const mpoly_gcd_info_t I,
++slong mpoly_gcd_info_get_brown_upper_limit(const mpoly_gcd_info_t Iv,
+ slong var, slong bound);
+
+-void mpoly_gcd_info_measure_hensel(mpoly_gcd_info_t I,
++void mpoly_gcd_info_measure_hensel(mpoly_gcd_info_t Iv,
+ slong Alength, slong Blength, const mpoly_ctx_t mctx);
+
+-void mpoly_gcd_info_measure_brown(mpoly_gcd_info_t I,
++void mpoly_gcd_info_measure_brown(mpoly_gcd_info_t Iv,
+ slong Alength, slong Blength, const mpoly_ctx_t mctx);
+
+-void mpoly_gcd_info_measure_bma(mpoly_gcd_info_t I,
++void mpoly_gcd_info_measure_bma(mpoly_gcd_info_t Iv,
+ slong Alength, slong Blength, const mpoly_ctx_t mctx);
+
+-void mpoly_gcd_info_measure_zippel(mpoly_gcd_info_t I,
++void mpoly_gcd_info_measure_zippel(mpoly_gcd_info_t Iv,
+ slong Alength, slong Blength, const mpoly_ctx_t mctx);
+
+-void mpoly_gcd_info_measure_zippel2(mpoly_gcd_info_t I,
++void mpoly_gcd_info_measure_zippel2(mpoly_gcd_info_t Iv,
+ slong Alength, slong Blength, const mpoly_ctx_t mctx);
+
+ int mpoly_monomial_cofactors(fmpz * Abarexps, fmpz * Bbarexps,
+diff --git a/src/nmod_mpoly.h b/src/nmod_mpoly.h
+index 2a8136e6eb..716ac9669a 100644
+--- a/src/nmod_mpoly.h
++++ b/src/nmod_mpoly.h
+@@ -1619,13 +1619,13 @@ int nmod_mpolyn_gcd_brown_smprime_bivar(
+ int nmod_mpolyn_gcd_brown_smprime(nmod_mpolyn_t G,
+ nmod_mpolyn_t Abar, nmod_mpolyn_t Bbar,
+ nmod_mpolyn_t A, nmod_mpolyn_t B, slong var,
+- const nmod_mpoly_ctx_t ctx, const mpoly_gcd_info_t I,
++ const nmod_mpoly_ctx_t ctx, const mpoly_gcd_info_t Iv,
+ nmod_poly_stack_t Sp);
+
+ int nmod_mpolyn_gcd_brown_smprime_threaded_pool(nmod_mpolyn_t G,
+ nmod_mpolyn_t Abar, nmod_mpolyn_t Bbar,
+ nmod_mpolyn_t A, nmod_mpolyn_t B, slong var,
+- const nmod_mpoly_ctx_t ctx, const mpoly_gcd_info_t I,
++ const nmod_mpoly_ctx_t ctx, const mpoly_gcd_info_t Iv,
+ const thread_pool_handle * handles, slong num_workers);
+
+ int nmod_mpolyn_gcd_brown_lgprime(nmod_mpolyn_t G,
+diff --git a/src/nmod_mpoly_factor.h b/src/nmod_mpoly_factor.h
+index a46afc860f..b16c802b9b 100644
+--- a/src/nmod_mpoly_factor.h
++++ b/src/nmod_mpoly_factor.h
+@@ -362,15 +362,15 @@ typedef struct {
+ typedef nmod_mpoly_pfrac_struct nmod_mpoly_pfrac_t[1];
+
+
+-int nmod_mpoly_pfrac_init(nmod_mpoly_pfrac_t I, flint_bitcnt_t bits,
++int nmod_mpoly_pfrac_init(nmod_mpoly_pfrac_t Iv, flint_bitcnt_t bits,
+ slong l, slong r, const nmod_mpoly_struct * betas,
+ const mp_limb_t * alpha, const nmod_mpoly_ctx_t ctx);
+
+-void nmod_mpoly_pfrac_clear(nmod_mpoly_pfrac_t I,
++void nmod_mpoly_pfrac_clear(nmod_mpoly_pfrac_t Iv,
+ const nmod_mpoly_ctx_t ctx);
+
+ int nmod_mpoly_pfrac(slong r, nmod_mpoly_t t, const slong * deg,
+- nmod_mpoly_pfrac_t I, const nmod_mpoly_ctx_t ctx);
++ nmod_mpoly_pfrac_t Iv, const nmod_mpoly_ctx_t ctx);
+
+ int nmod_mpoly_hlift(slong m, nmod_mpoly_struct * f, slong r,
+ const mp_limb_t * alpha, const nmod_mpoly_t A, const slong * degs,
diff --git a/sci-mathematics/flint/flint-2.9.0.ebuild b/sci-mathematics/flint/flint-2.9.0.ebuild
deleted file mode 100644
index 8294eb140a41..000000000000
--- a/sci-mathematics/flint/flint-2.9.0.ebuild
+++ /dev/null
@@ -1,81 +0,0 @@
-# Copyright 1999-2023 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-# ninja doesn't like "-lcblas" so using make.
-CMAKE_MAKEFILE_GENERATOR="emake"
-PYTHON_COMPAT=( python3_{9..11} )
-inherit cmake python-any-r1
-
-DESCRIPTION="Fast Library for Number Theory"
-HOMEPAGE="http://www.flintlib.org/"
-
-# flintlib.org tarballs have been broken in the past, Bill Hart suggests
-# we get them from Github (which he has control over).
-SRC_URI="https://github.com/wbhart/flint2/archive/refs/tags/v${PV}.tar.gz
- -> ${P}.tar.gz"
-
-LICENSE="LGPL-2.1+"
-
-# Based off the soname, e.g. /usr/lib64/libflint.so -> libflint.so.15
-SLOT="0/17"
-
-KEYWORDS="amd64 ~arm arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
-IUSE="doc ntl test"
-
-RESTRICT="!test? ( test )"
-
-BDEPEND="doc? (
- dev-python/sphinx
- app-text/texlive-core
- dev-texlive/texlive-latex
- dev-texlive/texlive-latexextra
- dev-tex/latexmk
- )
- ${PYTHON_DEPS}"
-DEPEND="dev-libs/gmp:=
- dev-libs/mpfr:=
- ntl? ( dev-libs/ntl:= )
- virtual/cblas"
-RDEPEND="${DEPEND}"
-
-S="${WORKDIR}/flint2-${PV}"
-PATCHES=( "${FILESDIR}/${PN}-2.9.0-remove-hardcoded-CFLAGS.patch" )
-
-src_prepare() {
- # https://github.com/wbhart/flint2/issues/1140
- rm test/t-sdiv_qrnnd.c || die
- cmake_src_prepare
-}
-
-src_configure() {
- local mycmakeargs=(
- -DWITH_NTL="$(usex ntl)"
- -DBUILD_TESTING="$(usex test)"
- -DBUILD_DOCS="$(usex doc)"
- -DCBLAS_INCLUDE_DIRS="${EPREFIX}/usr/include"
- -DCBLAS_LIBRARIES="-lcblas"
- )
-
- cmake_src_configure
-
- if use doc ; then
- HTML_DOCS="${BUILD_DIR}/html/*"
- DOCS=(
- "${S}"/README
- "${S}"/AUTHORS
- "${S}"/NEWS
- "${BUILD_DIR}"/latex/Flint.pdf
- )
- fi
-}
-
-src_compile() {
- cmake_src_compile
-
- if use doc ; then
- cmake_build html
- cmake_build pdf
- fi
-}
diff --git a/sci-mathematics/flint/flint-3.1.3_p1.ebuild b/sci-mathematics/flint/flint-3.1.3_p1.ebuild
new file mode 100644
index 000000000000..09d8ddd97e09
--- /dev/null
+++ b/sci-mathematics/flint/flint-3.1.3_p1.ebuild
@@ -0,0 +1,89 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..12} )
+inherit cmake flag-o-matic python-any-r1
+
+DESCRIPTION="Fast Library for Number Theory"
+HOMEPAGE="https://www.flintlib.org/"
+
+MY_PV="${PV/_/-}"
+SRC_URI="https://github.com/flintlib/flint/archive/refs/tags/v${MY_PV}.tar.gz
+ -> ${P}.tar.gz"
+S="${WORKDIR}/${PN}-${MY_PV}"
+LICENSE="LGPL-2.1+"
+
+# Based off the soname, e.g. /usr/lib64/libflint.so -> libflint.so.15
+SLOT="0/19"
+
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+IUSE="doc ntl test"
+
+RESTRICT="!test? ( test )"
+
+BDEPEND="${PYTHON_DEPS}
+ doc? (
+ app-text/texlive-core
+ dev-python/sphinx
+ dev-tex/latexmk
+ dev-texlive/texlive-latex
+ dev-texlive/texlive-latexextra
+ )
+"
+DEPEND="dev-libs/gmp:=
+ dev-libs/mpfr:=
+ ntl? ( dev-libs/ntl:= )
+ virtual/cblas"
+# flint 3 includes arb and arb cannot use flint 3.
+RDEPEND="${DEPEND}
+ !sci-mathematics/arb"
+
+# The rst files are API docs, but they're very low-effort compared to
+# the PDF and HTML docs, so we ship them unconditionally and hide only
+# the painful parts behind USE=doc.
+DOCS="AUTHORS README.md doc/source/*.rst"
+
+PATCHES=(
+ "${FILESDIR}/flint-3.0.1-find-cblas.patch"
+ "${FILESDIR}/flint-3.1.3_p1-c99-I.patch"
+)
+
+src_configure() {
+ # Test failures:
+ # * https://bugs.gentoo.org/934463
+ # * https://github.com/flintlib/flint/issues/2029
+ filter-flags -floop-nest-optimize \
+ -ftree-loop-linear \
+ -floop-strip-mine \
+ -floop-block \
+ -fgraphite-identity
+
+ local mycmakeargs=(
+ -DWITH_NTL="$(usex ntl)"
+ -DBUILD_TESTING="$(usex test)"
+ -DBUILD_DOCS="$(usex doc)"
+ )
+
+ cmake_src_configure
+
+ if use doc; then
+ # Avoid the "html/_source" directory that will contain a copy of
+ # the rst sources we've already installed, and also avoid
+ # installing html/objects.inv.
+ HTML_DOCS="${BUILD_DIR}/html/*.html
+ ${BUILD_DIR}/html/*.js
+ ${BUILD_DIR}/html/_static"
+ DOCS+=" ${BUILD_DIR}/latex/Flint.pdf"
+ fi
+}
+
+src_compile() {
+ cmake_src_compile
+
+ if use doc; then
+ cmake_build html
+ cmake_build pdf
+ fi
+}