diff --git a/0001-Add-FLINT-3-support.patch b/0001-Add-FLINT-3-support.patch new file mode 100644 index 0000000..a15678e --- /dev/null +++ b/0001-Add-FLINT-3-support.patch @@ -0,0 +1,91 @@ +From e8d64832cbbd9c847452186f2da23fed6fb0a0d3 Mon Sep 17 00:00:00 2001 +From: Doug Torrance +Date: Tue, 19 Dec 2023 08:15:16 -0500 +Subject: [PATCH] Add FLINT 3 support + +The various coefficient getting/setting functions that use GMP +integers/rationals directly have been removed, and so we need to +convert from GMP <-> FLINT separately. + +Closes: #412 +--- + configure.ac | 2 +- + source/libnormaliz/HilbertSeries.cpp | 10 ++++++++-- + source/libnormaliz/vector_operations.h | 10 ++++++++-- + 3 files changed, 17 insertions(+), 5 deletions(-) + +diff --git a/configure.ac b/configure.ac +index e3779ca2..feb90500 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -226,7 +226,7 @@ AS_CASE([$with_flint], + AS_IF([test "x$with_flint" != xno], + [AC_MSG_CHECKING([whether flint headers and library are available]) + FLINT_LIBS="-lflint -lmpfr" +- AX_CHECK_LIBRARY([FLINT], [flint/flint.h], [flint], [fmpz_poly_set_coeff_mpz],[],[],[$GMP_LIBS]) ++ AX_CHECK_LIBRARY([FLINT], [flint/flint.h], [flint], [fmpz_poly_set_coeff_fmpz],[],[],[$GMP_LIBS]) + AS_IF([test x$ax_cv_have_FLINT = xyes], + [ + CPPFLAGS="$CPPFLAGS $FLINT_CPPFLAGS" +diff --git a/source/libnormaliz/HilbertSeries.cpp b/source/libnormaliz/HilbertSeries.cpp +index f536a590..1420f6d7 100644 +--- a/source/libnormaliz/HilbertSeries.cpp ++++ b/source/libnormaliz/HilbertSeries.cpp +@@ -72,7 +72,10 @@ void flint_poly(fmpz_poly_t flp, const vector& nmzp) { + slong n = (slong)nmzp.size(); + fmpz_poly_fit_length(flp, n); + for (size_t i = 0; i < nmzp.size(); ++i) { +- fmpz_poly_set_coeff_mpz(flp, (slong)i, nmzp[i].get_mpz_t()); ++ fmpz_t fc; ++ fmpz_init(fc); ++ fmpz_set_mpz(fc, nmzp[i].get_mpz_t()); ++ fmpz_poly_set_coeff_fmpz(flp, (slong)i, fc); + } + } + +@@ -80,9 +83,12 @@ void nmz_poly(vector& nmzp, const fmpz_poly_t flp) { + size_t n = (size_t)fmpz_poly_length(flp); + nmzp.resize(n); + mpz_t c; ++ fmpz_t fc; + mpz_init(c); ++ fmpz_init(fc); + for (size_t i = 0; i < nmzp.size(); ++i) { +- fmpz_poly_get_coeff_mpz(c, flp, i); ++ fmpz_poly_get_coeff_fmpz(fc, flp, i); ++ fmpz_get_mpz(c, fc); + nmzp[i] = mpz_class(c); + } + mpz_clear(c); +diff --git a/source/libnormaliz/vector_operations.h b/source/libnormaliz/vector_operations.h +index d7b15230..3996bcf7 100644 +--- a/source/libnormaliz/vector_operations.h ++++ b/source/libnormaliz/vector_operations.h +@@ -547,7 +547,10 @@ inline void vector2fmpq_poly(fmpq_poly_t flp, const std::vector& poly + + fmpq_poly_fit_length(flp, n); + for (size_t i = 0; i < poly_vector.size(); ++i) { +- fmpq_poly_set_coeff_mpq(flp, (slong)i, poly_vector[i].get_mpq_t()); ++ fmpq_t fcurrent_coeff; ++ fmpq_init(fcurrent_coeff); ++ fmpq_set_mpq(fcurrent_coeff, poly_vector[i].get_mpq_t()); ++ fmpq_poly_set_coeff_fmpq(flp, (slong)i, fcurrent_coeff); + } + } + +@@ -560,8 +563,11 @@ inline void fmpq_poly2vector(std::vector& poly_vector, const fmpq_pol + poly_vector.resize(length); + for (slong i = 0; i < length; i++) { + mpq_t current_coeff; ++ fmpq_t fcurrent_coeff; + mpq_init(current_coeff); +- fmpq_poly_get_coeff_mpq(current_coeff, flp, (slong)i); ++ fmpq_init(fcurrent_coeff); ++ fmpq_poly_get_coeff_fmpq(fcurrent_coeff, flp, (slong)i); ++ fmpq_get_mpq(current_coeff, fcurrent_coeff); + poly_vector[i] = mpq_class(current_coeff); + } + } +-- +2.43.0 + diff --git a/normaliz.changes b/normaliz.changes index 77faf6a..e215640 100644 --- a/normaliz.changes +++ b/normaliz.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Sat Dec 23 13:42:28 UTC 2023 - Jan Engelhardt + +- Add 0001-Add-FLINT-3-support.patch + ------------------------------------------------------------------- Wed Jun 28 11:59:11 UTC 2023 - Jan Engelhardt diff --git a/normaliz.spec b/normaliz.spec index 1159554..dda8361 100644 --- a/normaliz.spec +++ b/normaliz.spec @@ -26,6 +26,7 @@ Group: Productivity/Scientific/Math URL: https://www.normaliz.uni-osnabrueck.de/ Source: https://github.com/Normaliz/Normaliz/releases/download/v%version/%name-%version.tar.gz +Patch1: 0001-Add-FLINT-3-support.patch BuildRequires: e-antic-devel >= 1.0.1 BuildRequires: flint-devel BuildRequires: gcc-c++