From e87cf958a8ab1816a0a29340f0dcd74c1e78ee34 Mon Sep 17 00:00:00 2001 From: Riccardo Invernizzi Date: Mon, 5 Feb 2024 16:26:49 +0100 Subject: [PATCH 1/9] Added Velu-sqrt bound object --- .../schemes/elliptic_curves/hom_composite.py | 50 ++++++++++++++++--- .../schemes/elliptic_curves/hom_velusqrt.py | 28 +++++++++++ 2 files changed, 70 insertions(+), 8 deletions(-) diff --git a/src/sage/schemes/elliptic_curves/hom_composite.py b/src/sage/schemes/elliptic_curves/hom_composite.py index ed87349bdcd..a1b8b3c6562 100644 --- a/src/sage/schemes/elliptic_curves/hom_composite.py +++ b/src/sage/schemes/elliptic_curves/hom_composite.py @@ -121,7 +121,7 @@ def _eval_factored_isogeny(phis, P): return P -def _compute_factored_isogeny_prime_power(P, l, n, split=.8): +def _compute_factored_isogeny_prime_power(P, l, n, split=.8, velu_sqrt_bound=None): r""" This method takes a point `P` of order `\ell^n` and returns a sequence of degree-`\ell` isogenies whose composition has @@ -147,6 +147,10 @@ def _compute_factored_isogeny_prime_power(P, l, n, split=.8): multiplications according to the parameter. The asymptotic complexity is `O(n \log(n) \ell)`. + The optional parameter``velu_sqrt_bound`` prescribes the + point in which the computation of a single isogeny should be + performed using square root Velu instead of simple Velu. + .. NOTE:: As of July 2022, good values for ``split`` range somewhere @@ -201,7 +205,8 @@ def rec(Q, k): if k == 1: # base case: Q has order l - return [EllipticCurveIsogeny(Q.curve(), Q)] + Q._order = l # This was not cached before + return [Q.curve().isogeny(kernel=Q, velu_sqrt_bound=velu_sqrt_bound)] # recursive case: k > 1 and Q has order l^k @@ -219,12 +224,16 @@ def rec(Q, k): return rec(P, n) -def _compute_factored_isogeny_single_generator(P): +def _compute_factored_isogeny_single_generator(P, velu_sqrt_bound=None): """ This method takes a point `P` and returns a sequence of prime-degree isogenies whose composition has the subgroup generated by `P` as its kernel. + The optional parameter``velu_sqrt_bound`` prescribes the + point in which the computation of a single isogeny should be + performed using square root Velu instead of simple Velu. + EXAMPLES:: sage: # needs sage.rings.finite_rings @@ -236,23 +245,41 @@ def _compute_factored_isogeny_single_generator(P): [2, 2, 3, 5, 7] sage: hom_composite._eval_factored_isogeny(phis, P) (0 : 1 : 0) + + :: + + sage: from sage.schemes.elliptic_curves import hom_composite + sage: p = 3217 + sage: E = EllipticCurve_from_j(GF(p)(42)) + sage: P = E.gens()[0] + sage: phis = hom_composite._compute_factored_isogeny_single_generator(P, velu_sqrt_bound=50) + sage: for phi in phis: + ....: print(phi) + Isogeny of degree 31 from Elliptic Curve defined by y^2 = x^3 + 114*x + 544 over Finite Field of size 3217 to Elliptic Curve defined by y^2 = x^3 + 277*x + 1710 over Finite Field of size 3217 + Elliptic-curve isogeny (using square-root Vélu) of degree 103: + From: Elliptic Curve defined by y^2 = x^3 + 277*x + 1710 over Finite Field of size 3217 + To: Elliptic Curve defined by y^2 = x^3 + 2979*x + 1951 over Finite Field of size 3217 """ phis = [] h = P.order() for l,e in P.order().factor(): h //= l**e - psis = _compute_factored_isogeny_prime_power(h*P, l, e) + psis = _compute_factored_isogeny_prime_power(h*P, l, e, velu_sqrt_bound=velu_sqrt_bound) P = _eval_factored_isogeny(psis, P) phis += psis return phis -def _compute_factored_isogeny(kernel): +def _compute_factored_isogeny(kernel, velu_sqrt_bound=None): """ This method takes a set of points on an elliptic curve and returns a sequence of isogenies whose composition has the subgroup generated by that subset as its kernel. + The optional parameter``velu_sqrt_bound`` prescribes the + point in which the computation of a single isogeny should be + performed using square root Velu instead of simple Velu. + EXAMPLES:: sage: # needs sage.rings.finite_rings @@ -269,7 +296,7 @@ def _compute_factored_isogeny(kernel): ker = list(kernel) while ker: K = ker.pop(0) - psis = _compute_factored_isogeny_single_generator(K) + psis = _compute_factored_isogeny_single_generator(K, velu_sqrt_bound=velu_sqrt_bound) ker = [_eval_factored_isogeny(psis, P) for P in ker] phis += psis return phis @@ -280,7 +307,7 @@ class EllipticCurveHom_composite(EllipticCurveHom): _degree = None _phis = None - def __init__(self, E, kernel, codomain=None, model=None): + def __init__(self, E, kernel, codomain=None, model=None, velu_sqrt_bound=None): """ Construct a composite isogeny with given kernel (and optionally, prescribed codomain curve). The isogeny is decomposed into steps @@ -289,6 +316,13 @@ def __init__(self, E, kernel, codomain=None, model=None): The ``codomain`` and ``model`` parameters have the same meaning as for :class:`EllipticCurveIsogeny`. + The optional parameter``velu_sqrt_bound`` prescribes the point + in which the computation of a single isogeny should be performed + using square root Velu instead of simple Velu. If not provided, + the system default is used (see + :class:`EllipticCurve_field.isogeny` for a more detailed + discussion. + EXAMPLES:: sage: from sage.schemes.elliptic_curves.hom_composite import EllipticCurveHom_composite @@ -354,7 +388,7 @@ def __init__(self, E, kernel, codomain=None, model=None): if P not in E: raise ValueError(f'given point {P} does not lie on {E}') - self._phis = _compute_factored_isogeny(kernel) + self._phis = _compute_factored_isogeny(kernel, velu_sqrt_bound=velu_sqrt_bound) if not self._phis: self._phis = [identity_morphism(E)] diff --git a/src/sage/schemes/elliptic_curves/hom_velusqrt.py b/src/sage/schemes/elliptic_curves/hom_velusqrt.py index fbe4887dbae..d333920bdb0 100644 --- a/src/sage/schemes/elliptic_curves/hom_velusqrt.py +++ b/src/sage/schemes/elliptic_curves/hom_velusqrt.py @@ -135,6 +135,34 @@ from .ell_finite_field import EllipticCurve_finite_field from .hom import EllipticCurveHom, compare_via_evaluation +class _VeluBoundObj: + """ + Helper object to define the point in which isogeny + computation should start using square-roor Velu formulae + instead of Velu. + + EXAMPLES :: + + sage: from sage.schemes.elliptic_curves.hom_velusqrt import _velu_sqrt_bound + sage: _velu_sqrt_bound.get() + 1000 + sage: _velu_sqrt_bound.set(50) + sage: _velu_sqrt_bound.get() + 50 + """ + def __init__(self): + self.bound = Integer(1000) + + def set(self, b): + self.bound = b + + def get(self): + return self.bound + + def __str__(self): + return f"VeluSqrtBound Object with bound = {self.bound}" + +_velu_sqrt_bound = _VeluBoundObj() def _choose_IJK(n): r""" From dd9a43fb888fd8fbb25e71de287bbc5d018716c4 Mon Sep 17 00:00:00 2001 From: Riccardo Invernizzi Date: Mon, 5 Feb 2024 17:18:22 +0100 Subject: [PATCH 2/9] Improved logic for isogeny algorithm choice --- src/sage/schemes/elliptic_curves/ell_field.py | 173 ++++++++++++++++-- 1 file changed, 155 insertions(+), 18 deletions(-) diff --git a/src/sage/schemes/elliptic_curves/ell_field.py b/src/sage/schemes/elliptic_curves/ell_field.py index 81d4a8ea359..a1b0d190ec7 100644 --- a/src/sage/schemes/elliptic_curves/ell_field.py +++ b/src/sage/schemes/elliptic_curves/ell_field.py @@ -1156,17 +1156,28 @@ def _Hom_(self, other, category=None): from sage.schemes.generic.homset import SchemeHomset_generic return SchemeHomset_generic(self, other, category=category) - def isogeny(self, kernel, codomain=None, degree=None, model=None, check=True, algorithm=None): + def isogeny(self, kernel, codomain=None, degree=None, model=None, check=True, algorithm=None, velu_sqrt_bound=None): r""" Return an elliptic-curve isogeny from this elliptic curve. The isogeny can be specified in two ways, by passing either a polynomial or a set of torsion points. The methods used are: + - Factored Isogenies (see + :mod:`~sage.schemes.elliptic_curves.hom_composite`): + Given a point, or a list of points which generate a + composite-order subgroup, decomposes the isogeny into + prime-degree steps. This can be used to construct isogenies + of extremely large, smooth degree. When applicable, this + algorithm is selected as default (see below). After factoring + the degree single isogenies are computed using the other + methods. + This algorithm is selected using ``algorithm="factored"``. + - Vélu's Formulas: Vélu's original formulas for computing isogenies. This algorithm is selected by giving as the - ``kernel`` parameter a single point, or a list of points, - generating a finite subgroup. + ``kernel`` parameter a single point generating a finite + subgroup. - Kohel's Formulas: Kohel's original formulas for computing isogenies. This algorithm is selected by giving as the @@ -1183,14 +1194,6 @@ def isogeny(self, kernel, codomain=None, degree=None, model=None, check=True, al kernel point of odd order `\geq 5`. This algorithm is selected using ``algorithm="velusqrt"``. - - Factored Isogenies (see - :mod:`~sage.schemes.elliptic_curves.hom_composite`): - Given a list of points which generate a composite-order - subgroup, decomposes the isogeny into prime-degree steps. - This can be used to construct isogenies of extremely large, - smooth degree. - This algorithm is selected using ``algorithm="factored"``. - INPUT: - ``kernel`` -- a kernel: either a point on this curve, a list of @@ -1233,10 +1236,7 @@ def isogeny(self, kernel, codomain=None, degree=None, model=None, check=True, al - ``check`` (default: ``True``) -- check whether the input is valid. Setting this to ``False`` can lead to significant speedups. - - ``algorithm`` -- string (optional). By default (when ``algorithm`` - is omitted), the "traditional" implementation - :class:`~sage.schemes.elliptic_curves.ell_curve_isogeny.EllipticCurveIsogeny` - is used. The other choices are: + - ``algorithm`` -- string (optional). The possible choices are: - ``"velusqrt"``: Use :class:`~sage.schemes.elliptic_curves.hom_velusqrt.EllipticCurveHom_velusqrt`. @@ -1245,8 +1245,36 @@ def isogeny(self, kernel, codomain=None, degree=None, model=None, check=True, al :class:`~sage.schemes.elliptic_curves.hom_composite.EllipticCurveHom_composite` to decompose the isogeny into prime-degree steps. - The ``degree`` parameter is not supported when an ``algorithm`` - is specified. + - ``"traditional"``: Use + :class:`~sage.schemes.elliptic_curves.ell_curve_isogeny.EllipticCurveIsogeny`. + + When ``algorithm`` is not specified, and ``kernel`` is not ``None``, an + algorithm is selected using the following criteria: + + - if ``kernel`` is a list of multiple points, ``"factored"`` is selected. + + - If ``kernel`` is a single point, or a list containing a single point: + + - if the order of the point is unknown, ``"traditional"`` is selected. + + - If the order is known and composite, ``"factored"`` is selected. + + - If the order is known and prime, a choice between ``"velusqrt"`` and + ``"traditional"`` is done according to the ``velu_sqrt_bound`` + parameter (see below). + + If none of the previous apply, ``"traditional"`` is selected. + + - ``velu_sqrt_bound``: -- an integer (default: ``None``). Establish the highest + (prime) degree for which the ``"traditional"`` algorithm should be selected + instead of ``"velusqrt"``. If ``None``, the default value from + :class:`~sage.schemes.elliptic_curves.hom_velusqrt._VeluBoundObj` is used. + This value is initially set to 1000, but can be modified by the user. + If an integer is supplied and the isogeny computation goes through the + ``"factored"`` algorithm, the same integer is supplied to each factor. + + The ``degree`` parameter is not supported when an ``algorithm`` is + specified. OUTPUT: @@ -1309,6 +1337,60 @@ def isogeny(self, kernel, codomain=None, degree=None, model=None, check=True, al subgroup of Elliptic Curve defined by y^2 + x*y = x^3 + x + 2 over Finite Field of size 31 + Order of the point known and composite:: + + sage: E = EllipticCurve(GF(31), [1,0,0,1,2]) + sage: P = E.gens()[0] + sage: assert P.order() == 12 + sage: print(P._order) + 12 + sage: E.isogeny(P) + Composite morphism of degree 12 = 2^2*3: + From: Elliptic Curve defined by y^2 + x*y = x^3 + x + 2 over Finite Field of size 31 + To: Elliptic Curve defined by y^2 + x*y = x^3 + 26*x + 8 over Finite Field of size 31 + + ``kernel`` is a list of points:: + + sage: E = EllipticCurve(GF(31), [1,0,0,1,2]) + sage: P = E.gens()[0]*2 + sage: Q = E.gens()[1]*3 + sage: print(P.order()) + 6 + sage: print(Q.order()) + 2 + sage: E.isogeny([P, Q]) + Composite morphism of degree 12 = 2*3*2: + From: Elliptic Curve defined by y^2 + x*y = x^3 + x + 2 over Finite Field of size 31 + To: Elliptic Curve defined by y^2 + x*y = x^3 + 2*x + 26 over Finite Field of size 31 + + Multiple ways to set the `velu_sqrt_bound`:: + + sage: E = EllipticCurve_from_j(GF(97)(42)) + sage: P = E.gens()[0]*4 + sage: print(P.order()) + 23 + sage: E.isogeny(P) + Isogeny of degree 23 from Elliptic Curve defined by y^2 = x^3 + 6*x + 46 over Finite Field of size 97 to Elliptic Curve defined by y^2 = x^3 + 72*x + 29 over Finite Field of size 97 + sage: E.isogeny(P, velu_sqrt_bound=10) + Elliptic-curve isogeny (using square-root Vélu) of degree 23: + From: Elliptic Curve defined by y^2 = x^3 + 6*x + 46 over Finite Field of size 97 + To: Elliptic Curve defined by y^2 = x^3 + 95*x + 68 over Finite Field of size 97 + sage: from sage.schemes.elliptic_curves.hom_velusqrt import _velu_sqrt_bound + sage: _velu_sqrt_bound.set(10) + sage: E.isogeny(P) + Elliptic-curve isogeny (using square-root Vélu) of degree 23: + From: Elliptic Curve defined by y^2 = x^3 + 6*x + 46 over Finite Field of size 97 + To: Elliptic Curve defined by y^2 = x^3 + 95*x + 68 over Finite Field of size 97 + + If the order of the point is unknown, fall back to ``"traditional"``:: + + sage: E = EllipticCurve_from_j(GF(97)(42)) + sage: P = E([2, 39]) + sage: from sage.schemes.elliptic_curves.hom_velusqrt import _velu_sqrt_bound + sage: _velu_sqrt_bound.set(1) + sage: E.isogeny(P) + Isogeny of degree 46 from Elliptic Curve defined by y^2 = x^3 + 6*x + 46 over Finite Field of size 97 to Elliptic Curve defined by y^2 = x^3 + 87*x + 47 over Finite Field of size 97 + .. SEEALSO:: - :class:`~sage.schemes.elliptic_curves.hom.EllipticCurveHom` @@ -1341,6 +1423,27 @@ def isogeny(self, kernel, codomain=None, degree=None, model=None, check=True, al sage: phi = E.isogeny(E.lift_x(77347718128277853096420969229987528666)) sage: phi.codomain()._order 170141183460469231746191640949390434666 + + Check that ``"factored"`` recursively apply `velu_sqrt_bound`:: + + sage: from sage.schemes.elliptic_curves.hom_velusqrt import _velu_sqrt_bound + sage: _velu_sqrt_bound.get() + 1000 + sage: _velu_sqrt_bound.set(50) + sage: _velu_sqrt_bound.get() + 50 + sage: from sage.schemes.elliptic_curves import hom_composite + sage: p = 3217 + sage: E = EllipticCurve_from_j(GF(p)(42)) + sage: P = E.gens()[0] + sage: phis = hom_composite._compute_factored_isogeny_single_generator(P, velu_sqrt_bound=50) + sage: for phi in phis: + ....: print(phi) + ....: + Isogeny of degree 31 from Elliptic Curve defined by y^2 = x^3 + 114*x + 544 over Finite Field of size 3217 to Elliptic Curve defined by y^2 = x^3 + 277*x + 1710 over Finite Field of size 3217 + Elliptic-curve isogeny (using square-root Vélu) of degree 103: + From: Elliptic Curve defined by y^2 = x^3 + 277*x + 1710 over Finite Field of size 3217 + To: Elliptic Curve defined by y^2 = x^3 + 2979*x + 1951 over Finite Field of size 3217 """ if algorithm is not None and degree is not None: raise TypeError('cannot pass "degree" and "algorithm" parameters simultaneously') @@ -1349,7 +1452,41 @@ def isogeny(self, kernel, codomain=None, degree=None, model=None, check=True, al return EllipticCurveHom_velusqrt(self, kernel, codomain=codomain, model=model) if algorithm == "factored": from sage.schemes.elliptic_curves.hom_composite import EllipticCurveHom_composite - return EllipticCurveHom_composite(self, kernel, codomain=codomain, model=model) + return EllipticCurveHom_composite(self, kernel, codomain=codomain, model=model, velu_sqrt_bound=velu_sqrt_bound) + if algorithm == "traditional": + return EllipticCurveIsogeny(self, kernel, codomain, degree, model, check=check) + + if kernel is not None: + # Check for multiple points or point of known order + kernel_is_list = isinstance(kernel, list) or isinstance(kernel, tuple) + if kernel_is_list and kernel[0] in self and len(kernel) > 1: + from sage.schemes.elliptic_curves.hom_composite import EllipticCurveHom_composite + return EllipticCurveHom_composite(self, kernel, codomain=codomain, model=model, velu_sqrt_bound=velu_sqrt_bound) + + if not kernel_is_list or (len(kernel) == 1 and kernel[0] in self): + # Single point on the curve; unpack the list for compatibility with velusqrt + if kernel_is_list: + kernel = kernel[0] + + known_order = False + try: + single_point_order = kernel._order + known_order = True + except AttributeError: + pass + + if known_order and single_point_order.is_pseudoprime(): + if not velu_sqrt_bound: + from sage.schemes.elliptic_curves.hom_velusqrt import _velu_sqrt_bound + velu_sqrt_bound = _velu_sqrt_bound.get() + + if single_point_order > velu_sqrt_bound: + from sage.schemes.elliptic_curves.hom_velusqrt import EllipticCurveHom_velusqrt + return EllipticCurveHom_velusqrt(self, kernel, codomain=codomain, model=model) + # Otherwise fall back to the standard case + elif known_order: + from sage.schemes.elliptic_curves.hom_composite import EllipticCurveHom_composite + return EllipticCurveHom_composite(self, kernel, codomain=codomain, model=model, velu_sqrt_bound=velu_sqrt_bound) try: return EllipticCurveIsogeny(self, kernel, codomain, degree, model, check=check) except AttributeError as e: From ece82fbeb9dde1bb8b23527e25e131210d29f3bf Mon Sep 17 00:00:00 2001 From: Riccardo Invernizzi Date: Mon, 5 Feb 2024 17:48:36 +0100 Subject: [PATCH 3/9] Doctest --- .../schemes/elliptic_curves/ell_curve_isogeny.py | 6 +++--- src/sage/schemes/elliptic_curves/ell_field.py | 12 +++++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/sage/schemes/elliptic_curves/ell_curve_isogeny.py b/src/sage/schemes/elliptic_curves/ell_curve_isogeny.py index 68e9c3fc79d..616b10f54f8 100644 --- a/src/sage/schemes/elliptic_curves/ell_curve_isogeny.py +++ b/src/sage/schemes/elliptic_curves/ell_curve_isogeny.py @@ -867,9 +867,9 @@ class EllipticCurveIsogeny(EllipticCurveHom): sage: E = EllipticCurve(j=GF(7)(0)) sage: phi = E.isogeny([E(0), E((0,1)), E((0,-1))]); phi - Isogeny of degree 3 - from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 7 - to Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 7 + Composite morphism of degree 3 = 3: + From: Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 7 + To: Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 7 sage: phi2 = phi * phi; phi2 Composite morphism of degree 9 = 3^2: From: Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 7 diff --git a/src/sage/schemes/elliptic_curves/ell_field.py b/src/sage/schemes/elliptic_curves/ell_field.py index a1b0d190ec7..689d05cf97a 100644 --- a/src/sage/schemes/elliptic_curves/ell_field.py +++ b/src/sage/schemes/elliptic_curves/ell_field.py @@ -1310,9 +1310,9 @@ def isogeny(self, kernel, codomain=None, degree=None, model=None, check=True, al sage: (P.order(), Q.order()) (7, 3) sage: phi = E.isogeny([P,Q]); phi - Isogeny of degree 21 - from Elliptic Curve defined by y^2 = x^3 + x + 1 over Finite Field of size 19 - to Elliptic Curve defined by y^2 = x^3 + x + 1 over Finite Field of size 19 + Composite morphism of degree 21 = 7*3: + From: Elliptic Curve defined by y^2 = x^3 + x + 1 over Finite Field of size 19 + To: Elliptic Curve defined by y^2 = x^3 + x + 1 over Finite Field of size 19 sage: phi(E.random_point()) # all points defined over GF(19) are in the kernel (0 : 1 : 0) @@ -1352,8 +1352,8 @@ def isogeny(self, kernel, codomain=None, degree=None, model=None, check=True, al ``kernel`` is a list of points:: sage: E = EllipticCurve(GF(31), [1,0,0,1,2]) - sage: P = E.gens()[0]*2 - sage: Q = E.gens()[1]*3 + sage: P = E([21,2]) + sage: Q = E([7, 12]) sage: print(P.order()) 6 sage: print(Q.order()) @@ -1381,6 +1381,7 @@ def isogeny(self, kernel, codomain=None, degree=None, model=None, check=True, al Elliptic-curve isogeny (using square-root Vélu) of degree 23: From: Elliptic Curve defined by y^2 = x^3 + 6*x + 46 over Finite Field of size 97 To: Elliptic Curve defined by y^2 = x^3 + 95*x + 68 over Finite Field of size 97 + sage: _velu_sqrt_bound.set(1000) # Reset bound If the order of the point is unknown, fall back to ``"traditional"``:: @@ -1390,6 +1391,7 @@ def isogeny(self, kernel, codomain=None, degree=None, model=None, check=True, al sage: _velu_sqrt_bound.set(1) sage: E.isogeny(P) Isogeny of degree 46 from Elliptic Curve defined by y^2 = x^3 + 6*x + 46 over Finite Field of size 97 to Elliptic Curve defined by y^2 = x^3 + 87*x + 47 over Finite Field of size 97 + sage: _velu_sqrt_bound.set(1000) # Reset bound .. SEEALSO:: From a8fe9953fce33637c3123ca217c348a89de45cae Mon Sep 17 00:00:00 2001 From: Riccardo Invernizzi Date: Tue, 6 Feb 2024 18:59:17 +0100 Subject: [PATCH 4/9] Applied suggestions --- config.cache | 451 ++++++++++++++++++ .../elliptic_curves/ell_curve_isogeny.py | 2 +- src/sage/schemes/elliptic_curves/ell_field.py | 19 +- src/sage/schemes/elliptic_curves/ell_point.py | 4 +- .../schemes/elliptic_curves/hom_composite.py | 12 +- 5 files changed, 468 insertions(+), 20 deletions(-) create mode 100644 config.cache diff --git a/config.cache b/config.cache new file mode 100644 index 00000000000..192a6d1e928 --- /dev/null +++ b/config.cache @@ -0,0 +1,451 @@ +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +ac_cv_ECM=${ac_cv_ECM=7.0.4} +ac_cv_ECMBIN=${ac_cv_ECMBIN=7.0.4} +ac_cv_build=${ac_cv_build=x86_64-pc-linux-gnu} +ac_cv_c_compiler_gnu=${ac_cv_c_compiler_gnu=yes} +ac_cv_cxx_compiler_gnu=${ac_cv_cxx_compiler_gnu=yes} +ac_cv_env_CBC_CFLAGS_set= +ac_cv_env_CBC_CFLAGS_value= +ac_cv_env_CBC_LIBS_set= +ac_cv_env_CBC_LIBS_value= +ac_cv_env_CBLAS_CFLAGS_set= +ac_cv_env_CBLAS_CFLAGS_value= +ac_cv_env_CBLAS_LIBS_set= +ac_cv_env_CBLAS_LIBS_value= +ac_cv_env_CCC_set= +ac_cv_env_CCC_value= +ac_cv_env_CC_set= +ac_cv_env_CC_value= +ac_cv_env_CFLAGS_set= +ac_cv_env_CFLAGS_value= +ac_cv_env_CPPFLAGS_set= +ac_cv_env_CPPFLAGS_value= +ac_cv_env_CPP_set= +ac_cv_env_CPP_value= +ac_cv_env_CXXCPP_set= +ac_cv_env_CXXCPP_value= +ac_cv_env_CXXFLAGS_set= +ac_cv_env_CXXFLAGS_value= +ac_cv_env_CXX_set= +ac_cv_env_CXX_value= +ac_cv_env_ECLIB_CFLAGS_set= +ac_cv_env_ECLIB_CFLAGS_value= +ac_cv_env_ECLIB_LIBS_set= +ac_cv_env_ECLIB_LIBS_value= +ac_cv_env_F77CFLAGS_set= +ac_cv_env_F77CFLAGS_value= +ac_cv_env_FCFLAGS_set= +ac_cv_env_FCFLAGS_value= +ac_cv_env_FC_set= +ac_cv_env_FC_value= +ac_cv_env_FFLAS_FFPACK_CFLAGS_set= +ac_cv_env_FFLAS_FFPACK_CFLAGS_value= +ac_cv_env_FFLAS_FFPACK_LIBS_set= +ac_cv_env_FFLAS_FFPACK_LIBS_value= +ac_cv_env_FPLLL_CFLAGS_set= +ac_cv_env_FPLLL_CFLAGS_value= +ac_cv_env_FPLLL_LIBS_set= +ac_cv_env_FPLLL_LIBS_value= +ac_cv_env_FREETYPE_CFLAGS_set= +ac_cv_env_FREETYPE_CFLAGS_value= +ac_cv_env_FREETYPE_LIBS_set= +ac_cv_env_FREETYPE_LIBS_value= +ac_cv_env_GC_CFLAGS_set= +ac_cv_env_GC_CFLAGS_value= +ac_cv_env_GC_LIBS_set= +ac_cv_env_GC_LIBS_value= +ac_cv_env_GF2X_CFLAGS_set= +ac_cv_env_GF2X_CFLAGS_value= +ac_cv_env_GF2X_LIBS_set= +ac_cv_env_GF2X_LIBS_value= +ac_cv_env_GSLPCDIR_set= +ac_cv_env_GSLPCDIR_value= +ac_cv_env_GSL_CFLAGS_set= +ac_cv_env_GSL_CFLAGS_value= +ac_cv_env_GSL_LIBS_set= +ac_cv_env_GSL_LIBS_value= +ac_cv_env_IGRAPH_CFLAGS_set= +ac_cv_env_IGRAPH_CFLAGS_value= +ac_cv_env_IGRAPH_LIBS_set= +ac_cv_env_IGRAPH_LIBS_value= +ac_cv_env_ISL_CFLAGS_set= +ac_cv_env_ISL_CFLAGS_value= +ac_cv_env_ISL_LIBS_set= +ac_cv_env_ISL_LIBS_value= +ac_cv_env_LAPACK_CFLAGS_set= +ac_cv_env_LAPACK_CFLAGS_value= +ac_cv_env_LAPACK_LIBS_set= +ac_cv_env_LAPACK_LIBS_value= +ac_cv_env_LDFLAGS_set= +ac_cv_env_LDFLAGS_value= +ac_cv_env_LIBATOMIC_OPS_CFLAGS_set= +ac_cv_env_LIBATOMIC_OPS_CFLAGS_value= +ac_cv_env_LIBATOMIC_OPS_LIBS_set= +ac_cv_env_LIBATOMIC_OPS_LIBS_value= +ac_cv_env_LIBFFI_CFLAGS_set= +ac_cv_env_LIBFFI_CFLAGS_value= +ac_cv_env_LIBFFI_LIBS_set= +ac_cv_env_LIBFFI_LIBS_value= +ac_cv_env_LIBGD_CFLAGS_set= +ac_cv_env_LIBGD_CFLAGS_value= +ac_cv_env_LIBGD_LIBS_set= +ac_cv_env_LIBGD_LIBS_value= +ac_cv_env_LIBPNG_CFLAGS_set= +ac_cv_env_LIBPNG_CFLAGS_value= +ac_cv_env_LIBPNG_LIBS_set= +ac_cv_env_LIBPNG_LIBS_value= +ac_cv_env_LIBSEMIGROUPS_CFLAGS_set= +ac_cv_env_LIBSEMIGROUPS_CFLAGS_value= +ac_cv_env_LIBSEMIGROUPS_LIBS_set= +ac_cv_env_LIBSEMIGROUPS_LIBS_value= +ac_cv_env_LIBS_set= +ac_cv_env_LIBS_value= +ac_cv_env_LINBOX_CFLAGS_set= +ac_cv_env_LINBOX_CFLAGS_value= +ac_cv_env_LINBOX_LIBS_set= +ac_cv_env_LINBOX_LIBS_value= +ac_cv_env_M4RI_CFLAGS_set= +ac_cv_env_M4RI_CFLAGS_value= +ac_cv_env_M4RI_LIBS_set= +ac_cv_env_M4RI_LIBS_value= +ac_cv_env_NCURSES_CFLAGS_set= +ac_cv_env_NCURSES_CFLAGS_value= +ac_cv_env_NCURSES_LIBS_set= +ac_cv_env_NCURSES_LIBS_value= +ac_cv_env_OBJCFLAGS_set= +ac_cv_env_OBJCFLAGS_value= +ac_cv_env_OBJCXXFLAGS_set= +ac_cv_env_OBJCXXFLAGS_value= +ac_cv_env_OBJCXX_set= +ac_cv_env_OBJCXX_value= +ac_cv_env_OBJC_set= +ac_cv_env_OBJC_value= +ac_cv_env_OPENBLASPCDIR_set= +ac_cv_env_OPENBLASPCDIR_value= +ac_cv_env_OPENBLAS_CFLAGS_set= +ac_cv_env_OPENBLAS_CFLAGS_value= +ac_cv_env_OPENBLAS_LIBS_set= +ac_cv_env_OPENBLAS_LIBS_value= +ac_cv_env_PKG_CONFIG_LIBDIR_set= +ac_cv_env_PKG_CONFIG_LIBDIR_value= +ac_cv_env_PKG_CONFIG_PATH_set= +ac_cv_env_PKG_CONFIG_PATH_value= +ac_cv_env_PKG_CONFIG_set= +ac_cv_env_PKG_CONFIG_value= +ac_cv_env_PRIMECOUNT_CFLAGS_set= +ac_cv_env_PRIMECOUNT_CFLAGS_value= +ac_cv_env_PRIMECOUNT_LIBS_set= +ac_cv_env_PRIMECOUNT_LIBS_value= +ac_cv_env_PRIMESIEVE_CFLAGS_set= +ac_cv_env_PRIMESIEVE_CFLAGS_value= +ac_cv_env_PRIMESIEVE_LIBS_set= +ac_cv_env_PRIMESIEVE_LIBS_value= +ac_cv_env_READLINE_CFLAGS_set= +ac_cv_env_READLINE_CFLAGS_value= +ac_cv_env_READLINE_LIBS_set= +ac_cv_env_READLINE_LIBS_value= +ac_cv_env_R_CFLAGS_set= +ac_cv_env_R_CFLAGS_value= +ac_cv_env_R_LIBS_set= +ac_cv_env_R_LIBS_value= +ac_cv_env_SAGE_DEBUG_set= +ac_cv_env_SAGE_DEBUG_value= +ac_cv_env_SAGE_FAT_BINARY_set= +ac_cv_env_SAGE_FAT_BINARY_value= +ac_cv_env_SINGULAR_CFLAGS_set= +ac_cv_env_SINGULAR_CFLAGS_value= +ac_cv_env_SINGULAR_LIBS_set= +ac_cv_env_SINGULAR_LIBS_value= +ac_cv_env_build_alias_set= +ac_cv_env_build_alias_value= +ac_cv_env_host_alias_set= +ac_cv_env_host_alias_value= +ac_cv_env_libjpeg_CFLAGS_set= +ac_cv_env_libjpeg_CFLAGS_value= +ac_cv_env_libjpeg_LIBS_set= +ac_cv_env_libjpeg_LIBS_value= +ac_cv_env_ntl_includedir_set= +ac_cv_env_ntl_includedir_value= +ac_cv_env_ntl_libdir_set= +ac_cv_env_ntl_libdir_value= +ac_cv_env_target_alias_set= +ac_cv_env_target_alias_value= +ac_cv_fc_compiler_gnu=${ac_cv_fc_compiler_gnu=yes} +ac_cv_fc_freeform=${ac_cv_fc_freeform=-ffree-form} +ac_cv_func_DGEQRF=${ac_cv_func_DGEQRF=no} +ac_cv_func_DGEQRF_=${ac_cv_func_DGEQRF_=no} +ac_cv_func_cblas_dgemm=${ac_cv_func_cblas_dgemm=yes} +ac_cv_func_curl_free=${ac_cv_func_curl_free=yes} +ac_cv_func_dgeqrf=${ac_cv_func_dgeqrf=no} +ac_cv_func_dgeqrf_=${ac_cv_func_dgeqrf_=yes} +ac_cv_header_NTL_ZZ_h=${ac_cv_header_NTL_ZZ_h=yes} +ac_cv_header_bliss_bliss_C_h=${ac_cv_header_bliss_bliss_C_h=no} +ac_cv_header_bzlib_h=${ac_cv_header_bzlib_h=yes} +ac_cv_header_cddlib_cdd_h=${ac_cv_header_cddlib_cdd_h=yes} +ac_cv_header_cliquer_cliquer_h=${ac_cv_header_cliquer_cliquer_h=yes} +ac_cv_header_complex_h=${ac_cv_header_complex_h=yes} +ac_cv_header_ecm_h=${ac_cv_header_ecm_h=yes} +ac_cv_header_flint_flint_h=${ac_cv_header_flint_flint_h=yes} +ac_cv_header_glpk_h=${ac_cv_header_glpk_h=yes} +ac_cv_header_gmp_h=${ac_cv_header_gmp_h=yes} +ac_cv_header_gmpxx_h=${ac_cv_header_gmpxx_h=yes} +ac_cv_header_graphviz_cgraph_h=${ac_cv_header_graphviz_cgraph_h=no} +ac_cv_header_homfly_h=${ac_cv_header_homfly_h=yes} +ac_cv_header_iml_h=${ac_cv_header_iml_h=yes} +ac_cv_header_inttypes_h=${ac_cv_header_inttypes_h=yes} +ac_cv_header_lrcalc_lrcoef_h=${ac_cv_header_lrcalc_lrcoef_h=no} +ac_cv_header_lrcalc_schublib_h=${ac_cv_header_lrcalc_schublib_h=no} +ac_cv_header_lzma_h=${ac_cv_header_lzma_h=yes} +ac_cv_header_m4rie_m4rie_h=${ac_cv_header_m4rie_m4rie_h=yes} +ac_cv_header_mpc_h=${ac_cv_header_mpc_h=yes} +ac_cv_header_mpfi_h=${ac_cv_header_mpfi_h=yes} +ac_cv_header_mpfr_h=${ac_cv_header_mpfr_h=yes} +ac_cv_header_pari_pari_h=${ac_cv_header_pari_pari_h=yes} +ac_cv_header_planarity_planarity_h=${ac_cv_header_planarity_planarity_h=yes} +ac_cv_header_rw_h=${ac_cv_header_rw_h=yes} +ac_cv_header_stdint_h=${ac_cv_header_stdint_h=yes} +ac_cv_header_stdio_h=${ac_cv_header_stdio_h=yes} +ac_cv_header_stdlib_h=${ac_cv_header_stdlib_h=yes} +ac_cv_header_string_h=${ac_cv_header_string_h=yes} +ac_cv_header_strings_h=${ac_cv_header_strings_h=yes} +ac_cv_header_suitesparse_SuiteSparse_config_h=${ac_cv_header_suitesparse_SuiteSparse_config_h=yes} +ac_cv_header_suitesparse_amd_h=${ac_cv_header_suitesparse_amd_h=yes} +ac_cv_header_symmetrica_def_h=${ac_cv_header_symmetrica_def_h=yes} +ac_cv_header_sys_stat_h=${ac_cv_header_sys_stat_h=yes} +ac_cv_header_sys_types_h=${ac_cv_header_sys_types_h=yes} +ac_cv_header_unistd_h=${ac_cv_header_unistd_h=yes} +ac_cv_header_zlib_h=${ac_cv_header_zlib_h=yes} +ac_cv_header_zmq_h=${ac_cv_header_zmq_h=yes} +ac_cv_host=${ac_cv_host=x86_64-pc-linux-gnu} +ac_cv_lib_lzma_lzma_raw_decoder=${ac_cv_lib_lzma_lzma_raw_decoder=yes} +ac_cv_lib_m_sqrt=${ac_cv_lib_m_sqrt=yes} +ac_cv_lib_planarity_gp_InitGraph=${ac_cv_lib_planarity_gp_InitGraph=yes} +ac_cv_lib_z_inflateEnd=${ac_cv_lib_z_inflateEnd=yes} +ac_cv_objc_compiler_gnu=${ac_cv_objc_compiler_gnu=no} +ac_cv_objcxx_compiler_gnu=${ac_cv_objcxx_compiler_gnu=no} +ac_cv_objext=${ac_cv_objext=o} +ac_cv_path_CMAKE=${ac_cv_path_CMAKE=/usr/bin/cmake} +ac_cv_path_CONVERT=${ac_cv_path_CONVERT=/usr/bin/convert} +ac_cv_path_CURL=${ac_cv_path_CURL=/usr/bin/curl} +ac_cv_path_DVIPNG=${ac_cv_path_DVIPNG=/usr/bin/dvipng} +ac_cv_path_ECL_CONFIG=${ac_cv_path_ECL_CONFIG=/usr/bin/ecl-config} +ac_cv_path_ECMBIN=${ac_cv_path_ECMBIN=/usr/bin/ecm} +ac_cv_path_EGREP=${ac_cv_path_EGREP='/usr/bin/grep -E'} +ac_cv_path_FFMPEG=${ac_cv_path_FFMPEG=/usr/bin/ffmpeg} +ac_cv_path_GAP=${ac_cv_path_GAP=/usr/bin/gap} +ac_cv_path_GENGETOPT=${ac_cv_path_GENGETOPT=/usr/bin/gengetopt} +ac_cv_path_GENGnautyCHECK=${ac_cv_path_GENGnautyCHECK=/usr/bin/nauty-geng} +ac_cv_path_GFAN_VERSION=${ac_cv_path_GFAN_VERSION=/usr/bin/gfan_version} +ac_cv_path_GIT=${ac_cv_path_GIT=/usr/bin/git} +ac_cv_path_GIVAROCONFIG=${ac_cv_path_GIVAROCONFIG=/usr/bin/givaro-config} +ac_cv_path_GLPSOL=${ac_cv_path_GLPSOL=/usr/bin/glpsol} +ac_cv_path_GP=${ac_cv_path_GP=/usr/bin/gp} +ac_cv_path_GPHELP=${ac_cv_path_GPHELP=/usr/bin/gphelp} +ac_cv_path_GREP=${ac_cv_path_GREP=/usr/bin/grep} +ac_cv_path_INFO=${ac_cv_path_INFO=/usr/bin/info} +ac_cv_path_LATEXMK=${ac_cv_path_LATEXMK=/usr/bin/latexmk} +ac_cv_path_MAKE=${ac_cv_path_MAKE=/usr/bin/make} +ac_cv_path_MAXIMA=${ac_cv_path_MAXIMA=/usr/bin/maxima} +ac_cv_path_NINJA=${ac_cv_path_NINJA=/usr/bin/ninja} +ac_cv_path_PALPclass11=${ac_cv_path_PALPclass11=/usr/bin/class-11d.x} +ac_cv_path_PALPclass4=${ac_cv_path_PALPclass4=/usr/bin/class-4d.x} +ac_cv_path_PALPclass5=${ac_cv_path_PALPclass5=/usr/bin/class-5d.x} +ac_cv_path_PALPclass6=${ac_cv_path_PALPclass6=/usr/bin/class-6d.x} +ac_cv_path_PALPclass=${ac_cv_path_PALPclass=/usr/bin/class.x} +ac_cv_path_PALPcws11=${ac_cv_path_PALPcws11=/usr/bin/cws-11d.x} +ac_cv_path_PALPcws4=${ac_cv_path_PALPcws4=/usr/bin/cws-4d.x} +ac_cv_path_PALPcws5=${ac_cv_path_PALPcws5=/usr/bin/cws-5d.x} +ac_cv_path_PALPcws6=${ac_cv_path_PALPcws6=/usr/bin/cws-6d.x} +ac_cv_path_PALPcws=${ac_cv_path_PALPcws=/usr/bin/cws.x} +ac_cv_path_PALPnef11=${ac_cv_path_PALPnef11=/usr/bin/nef-11d.x} +ac_cv_path_PALPnef4=${ac_cv_path_PALPnef4=/usr/bin/nef-4d.x} +ac_cv_path_PALPnef5=${ac_cv_path_PALPnef5=/usr/bin/nef-5d.x} +ac_cv_path_PALPnef6=${ac_cv_path_PALPnef6=/usr/bin/nef-6d.x} +ac_cv_path_PALPnef=${ac_cv_path_PALPnef=/usr/bin/nef.x} +ac_cv_path_PALPpoly11=${ac_cv_path_PALPpoly11=/usr/bin/poly-11d.x} +ac_cv_path_PALPpoly4=${ac_cv_path_PALPpoly4=/usr/bin/poly-4d.x} +ac_cv_path_PALPpoly5=${ac_cv_path_PALPpoly5=/usr/bin/poly-5d.x} +ac_cv_path_PALPpoly6=${ac_cv_path_PALPpoly6=/usr/bin/poly-6d.x} +ac_cv_path_PALPpoly=${ac_cv_path_PALPpoly=/usr/bin/poly.x} +ac_cv_path_PANDOC=${ac_cv_path_PANDOC=/usr/bin/pandoc} +ac_cv_path_PATCH=${ac_cv_path_PATCH=/usr/bin/patch} +ac_cv_path_PATCHELF=${ac_cv_path_PATCHELF=/usr/bin/patchelf} +ac_cv_path_PDF2SVG=${ac_cv_path_PDF2SVG=/usr/bin/pdf2svg} +ac_cv_path_PDFLATEX=${ac_cv_path_PDFLATEX=/usr/bin/pdflatex} +ac_cv_path_PERL=${ac_cv_path_PERL=/usr/bin/perl} +ac_cv_path_POLYMAKE_CONFIG=${ac_cv_path_POLYMAKE_CONFIG=/bin/polymake-config} +ac_cv_path_PPL_CONFIG=${ac_cv_path_PPL_CONFIG=/usr/bin/ppl-config} +ac_cv_path_PYTHON3=${ac_cv_path_PYTHON3=/usr/bin/python3} +ac_cv_path_R=${ac_cv_path_R=/usr/bin/R} +ac_cv_path_SED=${ac_cv_path_SED=/usr/bin/sed} +ac_cv_path_SYMPOW=${ac_cv_path_SYMPOW=/usr/bin/sympow} +ac_cv_path_TACHYON=${ac_cv_path_TACHYON=/usr/bin/tachyon} +ac_cv_path_TAR=${ac_cv_path_TAR=/usr/bin/tar} +ac_cv_path_TEXI2ANY=${ac_cv_path_TEXI2ANY=/usr/bin/texi2any} +ac_cv_path_XINDY=${ac_cv_path_XINDY=/usr/bin/xindy} +ac_cv_path_XML2_CONFIG=${ac_cv_path_XML2_CONFIG=/usr/bin/xml2-config} +ac_cv_path__libcurl_config=${ac_cv_path__libcurl_config=/usr/bin/curl-config} +ac_cv_path_ac_pt_PKG_CONFIG=${ac_cv_path_ac_pt_PKG_CONFIG=/usr/bin/pkg-config} +ac_cv_path_bzip2_prog=${ac_cv_path_bzip2_prog=/usr/bin/bzip2} +ac_cv_path_install=${ac_cv_path_install='/usr/bin/install -c'} +ac_cv_path_mkdir=${ac_cv_path_mkdir=/usr/bin/mkdir} +ac_cv_path_naudirectg=${ac_cv_path_naudirectg=/usr/bin/nauty-directg} +ac_cv_path_naugenbg=${ac_cv_path_naugenbg=/usr/bin/nauty-genbg} +ac_cv_path_naugeng=${ac_cv_path_naugeng=/usr/bin/nauty-geng} +ac_cv_path_naugentourng=${ac_cv_path_naugentourng=/usr/bin/nauty-gentourng} +ac_cv_path_naugentreeg=${ac_cv_path_naugentreeg=/usr/bin/nauty-gentreeg} +ac_cv_prog_AWK=${ac_cv_prog_AWK=mawk} +ac_cv_prog_CDDEXEC=${ac_cv_prog_CDDEXEC=cddexec} +ac_cv_prog_CDDEXECGMP=${ac_cv_prog_CDDEXECGMP=cddexec_gmp} +ac_cv_prog_CPP=${ac_cv_prog_CPP='gcc -E'} +ac_cv_prog_CXXCPP=${ac_cv_prog_CXXCPP='g++ -std=gnu++11 -E'} +ac_cv_prog_DOT=${ac_cv_prog_DOT=dot} +ac_cv_prog_FOURTITWO_CIRCUITS=${ac_cv_prog_FOURTITWO_CIRCUITS=4ti2-circuits} +ac_cv_prog_FOURTITWO_GRAVER=${ac_cv_prog_FOURTITWO_GRAVER=4ti2-graver} +ac_cv_prog_FOURTITWO_GROEBNER=${ac_cv_prog_FOURTITWO_GROEBNER=4ti2-groebner} +ac_cv_prog_FOURTITWO_HILBERT=${ac_cv_prog_FOURTITWO_HILBERT=4ti2-hilbert} +ac_cv_prog_FOURTITWO_MARKOV=${ac_cv_prog_FOURTITWO_MARKOV=4ti2-markov} +ac_cv_prog_FOURTITWO_PPI=${ac_cv_prog_FOURTITWO_PPI=4ti2-ppi} +ac_cv_prog_FOURTITWO_QSOLVE=${ac_cv_prog_FOURTITWO_QSOLVE=4ti2-qsolve} +ac_cv_prog_FOURTITWO_RAYS=${ac_cv_prog_FOURTITWO_RAYS=4ti2-rays} +ac_cv_prog_FOURTITWO_ZSOLVE=${ac_cv_prog_FOURTITWO_ZSOLVE=4ti2-zsolve} +ac_cv_prog_NEATO=${ac_cv_prog_NEATO=neato} +ac_cv_prog_REDCHECKGMP=${ac_cv_prog_REDCHECKGMP=redcheck_gmp} +ac_cv_prog_SCDD=${ac_cv_prog_SCDD=scdd_gmp} +ac_cv_prog_TWOPI=${ac_cv_prog_TWOPI=twopi} +ac_cv_prog_ac_ct_CC=${ac_cv_prog_ac_ct_CC=gcc} +ac_cv_prog_ac_ct_CXX=${ac_cv_prog_ac_ct_CXX=g++} +ac_cv_prog_ac_ct_FC=${ac_cv_prog_ac_ct_FC=gfortran} +ac_cv_prog_ac_ct_OBJC=${ac_cv_prog_ac_ct_OBJC=gcc} +ac_cv_prog_ac_ct_OBJCXX=${ac_cv_prog_ac_ct_OBJCXX=g++} +ac_cv_prog_cc_c11=${ac_cv_prog_cc_c11=} +ac_cv_prog_cc_g=${ac_cv_prog_cc_g=yes} +ac_cv_prog_cc_stdc=${ac_cv_prog_cc_stdc=} +ac_cv_prog_cxx_11=${ac_cv_prog_cxx_11=no} +ac_cv_prog_cxx_cxx11=${ac_cv_prog_cxx_cxx11=} +ac_cv_prog_cxx_g=${ac_cv_prog_cxx_g=yes} +ac_cv_prog_cxx_stdcxx=${ac_cv_prog_cxx_stdcxx=} +ac_cv_prog_fc_g=${ac_cv_prog_fc_g=yes} +ac_cv_prog_found_ar=${ac_cv_prog_found_ar=yes} +ac_cv_prog_found_latex=${ac_cv_prog_found_latex=yes} +ac_cv_prog_found_m4=${ac_cv_prog_found_m4=yes} +ac_cv_prog_found_ranlib=${ac_cv_prog_found_ranlib=yes} +ac_cv_prog_found_strip=${ac_cv_prog_found_strip=yes} +ac_cv_prog_make_make_set=${ac_cv_prog_make_make_set=yes} +ac_cv_prog_objc_g=${ac_cv_prog_objc_g=no} +ac_cv_prog_objcxx_g=${ac_cv_prog_objcxx_g=no} +ac_cv_search_BZ2_bzCompress=${ac_cv_search_BZ2_bzCompress=-lbz2} +ac_cv_search_SuiteSparse_version=${ac_cv_search_SuiteSparse_version=-lsuitesparseconfig} +ac_cv_search___gmpn_gcd_11=${ac_cv_search___gmpn_gcd_11=-lgmp} +ac_cv_search_calculate_level=${ac_cv_search_calculate_level=-lrw} +ac_cv_search_cholmod_speye=${ac_cv_search_cholmod_speye=-lcholmod} +ac_cv_search_clique_unweighted_max_weight=${ac_cv_search_clique_unweighted_max_weight=-lcliquer} +ac_cv_search_dd_abs=${ac_cv_search_dd_abs=-lcddgmp} +ac_cv_search_ecm_factor=${ac_cv_search_ecm_factor=-lecm} +ac_cv_search_gf2e_init=${ac_cv_search_gf2e_init=-lm4rie} +ac_cv_search_glp_config=${ac_cv_search_glp_config=-lglpk} +ac_cv_search_gr_get_fexpr=${ac_cv_search_gr_get_fexpr=no} +ac_cv_search_homfly=${ac_cv_search_homfly=-lhomfly} +ac_cv_search_matpermanent=${ac_cv_search_matpermanent=-lpari} +ac_cv_search_mpc_cmp_abs=${ac_cv_search_mpc_cmp_abs=-lmpc} +ac_cv_search_mpc_sum=${ac_cv_search_mpc_sum=-lmpc} +ac_cv_search_mpfi_diam_abs=${ac_cv_search_mpfi_diam_abs=-lmpfi} +ac_cv_search_mpfr_cmpabs_ui=${ac_cv_search_mpfr_cmpabs_ui=-lmpfr} +ac_cv_search_mpfr_free_pool=${ac_cv_search_mpfr_free_pool=-lmpfr} +ac_cv_search_nonsingSolvLlhsMM=${ac_cv_search_nonsingSolvLlhsMM=-liml} +ac_cv_search_umfpack_di_solve=${ac_cv_search_umfpack_di_solve=-lumfpack} +ac_cv_search_zykelind_tetraeder_edges_extended=${ac_cv_search_zykelind_tetraeder_edges_extended=-lsymmetrica} +acl_cv_hardcode_direct=${acl_cv_hardcode_direct=no} +test ${acl_cv_hardcode_libdir_flag_spec+y} || acl_cv_hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +acl_cv_hardcode_libdir_separator=${acl_cv_hardcode_libdir_separator=} +acl_cv_hardcode_minus_L=${acl_cv_hardcode_minus_L=no} +acl_cv_libdirstems=${acl_cv_libdirstems=lib,lib,lib64} +acl_cv_libext=${acl_cv_libext=a} +acl_cv_libname_spec=${acl_cv_libname_spec='lib$name'} +acl_cv_library_names_spec=${acl_cv_library_names_spec='$libname$shrext'} +acl_cv_path_LD=${acl_cv_path_LD=/usr/bin/ld} +acl_cv_prog_gnu_ld=${acl_cv_prog_gnu_ld=yes} +acl_cv_rpath=${acl_cv_rpath=done} +acl_cv_shlibext=${acl_cv_shlibext=so} +acl_cv_wl=${acl_cv_wl=-Wl,} +am_cv_CC_dependencies_compiler_type=${am_cv_CC_dependencies_compiler_type=none} +am_cv_CXX_dependencies_compiler_type=${am_cv_CXX_dependencies_compiler_type=none} +am_cv_OBJCXX_dependencies_compiler_type=${am_cv_OBJCXX_dependencies_compiler_type=none} +am_cv_OBJC_dependencies_compiler_type=${am_cv_OBJC_dependencies_compiler_type=none} +am_cv_func_iconv=${am_cv_func_iconv=yes} +am_cv_func_iconv_summary=${am_cv_func_iconv_summary='yes, in libc'} +am_cv_func_iconv_works=${am_cv_func_iconv_works=yes} +am_cv_lib_iconv=${am_cv_lib_iconv=no} +am_cv_make_support_nested_variables=${am_cv_make_support_nested_variables=yes} +am_cv_prog_cc_c_o=${am_cv_prog_cc_c_o=yes} +ax_cv_c_compiler_vendor=${ax_cv_c_compiler_vendor=gnu} +ax_cv_c_openmp=${ax_cv_c_openmp=-fopenmp} +ax_cv_check_cxxflags___march_native=${ax_cv_check_cxxflags___march_native=yes} +ax_cv_check_cxxflags___mavx512f__mavx512vl__mavx512dq=${ax_cv_check_cxxflags___mavx512f__mavx512vl__mavx512dq=yes} +ax_cv_check_cxxflags___mfma4=${ax_cv_check_cxxflags___mfma4=yes} +ax_cv_check_cxxflags___mfma=${ax_cv_check_cxxflags___mfma=yes} +ax_cv_cxx_compile_cxx11__std_gnupp11=${ax_cv_cxx_compile_cxx11__std_gnupp11=yes} +ax_cv_cxx_openmp=${ax_cv_cxx_openmp=-fopenmp} +ax_cv_gcc_version=${ax_cv_gcc_version=11} +ax_cv_gxx_version=${ax_cv_gxx_version=11} +ax_cv_prog_perl_version=${ax_cv_prog_perl_version=yes} +gl_cv_absolute_NTL_ZZ_h=${gl_cv_absolute_NTL_ZZ_h=///usr/include/NTL/ZZ.h} +gl_cv_absolute_ecm_h=${gl_cv_absolute_ecm_h=///usr/include/ecm.h} +gl_cv_absolute_gmp_h=${gl_cv_absolute_gmp_h=///usr/include/x86_64-linux-gnu/gmp.h} +gl_cv_elf=${gl_cv_elf=yes} +gl_cv_host_cpu_c_abi_32bit=${gl_cv_host_cpu_c_abi_32bit=no} +gl_cv_iconv_nonconst=${gl_cv_iconv_nonconst=yes} +libcurl_cv_lib_curl_usable=${libcurl_cv_lib_curl_usable=yes} +libcurl_cv_lib_curl_version=${libcurl_cv_lib_curl_version=7.81.0} +libcurl_cv_lib_version_ok=${libcurl_cv_lib_version_ok=yes} +lzma_cv_liblzma=${lzma_cv_liblzma=yes} +lzma_cv_lzma_h=${lzma_cv_lzma_h=yes} +pkg_cv_CBC_CFLAGS=${pkg_cv_CBC_CFLAGS=-I/usr/include/coin} +pkg_cv_CBC_LIBS=${pkg_cv_CBC_LIBS='-lCbcSolver -lCbc -lpthread -lrt -lCgl -lOsiClp -lClpSolver -lClp -lOsi -lCoinUtils -lbz2 -lz -llapack -lblas -lm'} +pkg_cv_FREETYPE_CFLAGS=${pkg_cv_FREETYPE_CFLAGS='-I/usr/include/freetype2 -I/usr/include/libpng16'} +pkg_cv_FREETYPE_LIBS=${pkg_cv_FREETYPE_LIBS=-lfreetype} +pkg_cv_GC_CFLAGS=${pkg_cv_GC_CFLAGS=} +pkg_cv_GC_LIBS=${pkg_cv_GC_LIBS='-lgc -lpthread -ldl'} +pkg_cv_GF2X_CFLAGS=${pkg_cv_GF2X_CFLAGS=} +pkg_cv_GF2X_LIBS=${pkg_cv_GF2X_LIBS=-lgf2x} +pkg_cv_GSLPCDIR=${pkg_cv_GSLPCDIR=/usr/lib/x86_64-linux-gnu/pkgconfig} +pkg_cv_GSL_CFLAGS=${pkg_cv_GSL_CFLAGS=} +pkg_cv_GSL_LIBS=${pkg_cv_GSL_LIBS='-lgsl -lgslcblas -lm'} +pkg_cv_ISL_CFLAGS=${pkg_cv_ISL_CFLAGS=} +pkg_cv_ISL_LIBS=${pkg_cv_ISL_LIBS='-lisl -lgmp'} +pkg_cv_LIBATOMIC_OPS_CFLAGS=${pkg_cv_LIBATOMIC_OPS_CFLAGS=} +pkg_cv_LIBATOMIC_OPS_LIBS=${pkg_cv_LIBATOMIC_OPS_LIBS=-latomic_ops} +pkg_cv_LIBFFI_CFLAGS=${pkg_cv_LIBFFI_CFLAGS=} +pkg_cv_LIBFFI_LIBS=${pkg_cv_LIBFFI_LIBS=-lffi} +pkg_cv_LIBGD_CFLAGS=${pkg_cv_LIBGD_CFLAGS=} +pkg_cv_LIBGD_LIBS=${pkg_cv_LIBGD_LIBS=-lgd} +pkg_cv_LIBPNG_CFLAGS=${pkg_cv_LIBPNG_CFLAGS=-I/usr/include/libpng16} +pkg_cv_LIBPNG_LIBS=${pkg_cv_LIBPNG_LIBS='-lpng16 -lz'} +pkg_cv_M4RI_CFLAGS=${pkg_cv_M4RI_CFLAGS='-mmmx -msse -msse2 -I/usr/include/libpng16'} +pkg_cv_M4RI_LIBS=${pkg_cv_M4RI_LIBS='-lm4ri -lm -lpng16 -lz'} +pkg_cv_NCURSES_CFLAGS=${pkg_cv_NCURSES_CFLAGS='-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600'} +pkg_cv_NCURSES_LIBS=${pkg_cv_NCURSES_LIBS='-lncurses -ltinfo'} +pkg_cv_OPENBLASPCDIR=${pkg_cv_OPENBLASPCDIR=/usr/lib/x86_64-linux-gnu/pkgconfig} +pkg_cv_OPENBLAS_CFLAGS=${pkg_cv_OPENBLAS_CFLAGS=-I/usr/include/x86_64-linux-gnu/openblas-pthread/} +pkg_cv_OPENBLAS_LIBS=${pkg_cv_OPENBLAS_LIBS='-L/usr/lib/x86_64-linux-gnu/openblas-pthread/ -lopenblas'} +pkg_cv_READLINE_CFLAGS=${pkg_cv_READLINE_CFLAGS='-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600'} +pkg_cv_READLINE_LIBS=${pkg_cv_READLINE_LIBS=-lreadline} +pkg_cv_R_CFLAGS=${pkg_cv_R_CFLAGS=-I/usr/share/R/include} +pkg_cv_R_LIBS=${pkg_cv_R_LIBS='-L/usr/lib/R/lib -Wl,--export-dynamic -fopenmp -Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -flto=auto -Wl,-z,relro -lR'} +pkg_cv_libjpeg_CFLAGS=${pkg_cv_libjpeg_CFLAGS=} +pkg_cv_libjpeg_LIBS=${pkg_cv_libjpeg_LIBS=-ljpeg} +sage_libcurl_cv_lib_curl_executable=${sage_libcurl_cv_lib_curl_executable=yes} +zlib_cv_libz=${zlib_cv_libz=yes} +zlib_cv_zlib_h=${zlib_cv_zlib_h=yes} diff --git a/src/sage/schemes/elliptic_curves/ell_curve_isogeny.py b/src/sage/schemes/elliptic_curves/ell_curve_isogeny.py index 616b10f54f8..a59a8876596 100644 --- a/src/sage/schemes/elliptic_curves/ell_curve_isogeny.py +++ b/src/sage/schemes/elliptic_curves/ell_curve_isogeny.py @@ -867,7 +867,7 @@ class EllipticCurveIsogeny(EllipticCurveHom): sage: E = EllipticCurve(j=GF(7)(0)) sage: phi = E.isogeny([E(0), E((0,1)), E((0,-1))]); phi - Composite morphism of degree 3 = 3: + Composite morphism of degree 3: From: Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 7 To: Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 7 sage: phi2 = phi * phi; phi2 diff --git a/src/sage/schemes/elliptic_curves/ell_field.py b/src/sage/schemes/elliptic_curves/ell_field.py index 689d05cf97a..f227c1f616b 100644 --- a/src/sage/schemes/elliptic_curves/ell_field.py +++ b/src/sage/schemes/elliptic_curves/ell_field.py @@ -1340,7 +1340,7 @@ def isogeny(self, kernel, codomain=None, degree=None, model=None, check=True, al Order of the point known and composite:: sage: E = EllipticCurve(GF(31), [1,0,0,1,2]) - sage: P = E.gens()[0] + sage: P = E(26, 4) sage: assert P.order() == 12 sage: print(P._order) 12 @@ -1352,8 +1352,8 @@ def isogeny(self, kernel, codomain=None, degree=None, model=None, check=True, al ``kernel`` is a list of points:: sage: E = EllipticCurve(GF(31), [1,0,0,1,2]) - sage: P = E([21,2]) - sage: Q = E([7, 12]) + sage: P = E(21,2) + sage: Q = E(7, 12) sage: print(P.order()) 6 sage: print(Q.order()) @@ -1386,7 +1386,7 @@ def isogeny(self, kernel, codomain=None, degree=None, model=None, check=True, al If the order of the point is unknown, fall back to ``"traditional"``:: sage: E = EllipticCurve_from_j(GF(97)(42)) - sage: P = E([2, 39]) + sage: P = E(2, 39) sage: from sage.schemes.elliptic_curves.hom_velusqrt import _velu_sqrt_bound sage: _velu_sqrt_bound.set(1) sage: E.isogeny(P) @@ -1470,19 +1470,14 @@ def isogeny(self, kernel, codomain=None, degree=None, model=None, check=True, al if kernel_is_list: kernel = kernel[0] - known_order = False - try: - single_point_order = kernel._order - known_order = True - except AttributeError: - pass + known_order = hasattr(kernel, "_order") - if known_order and single_point_order.is_pseudoprime(): + if known_order and kernel._order.is_pseudoprime(): if not velu_sqrt_bound: from sage.schemes.elliptic_curves.hom_velusqrt import _velu_sqrt_bound velu_sqrt_bound = _velu_sqrt_bound.get() - if single_point_order > velu_sqrt_bound: + if kernel._order > velu_sqrt_bound: from sage.schemes.elliptic_curves.hom_velusqrt import EllipticCurveHom_velusqrt return EllipticCurveHom_velusqrt(self, kernel, codomain=codomain, model=model) # Otherwise fall back to the standard case diff --git a/src/sage/schemes/elliptic_curves/ell_point.py b/src/sage/schemes/elliptic_curves/ell_point.py index e86d0c8a5cf..3482772d28e 100644 --- a/src/sage/schemes/elliptic_curves/ell_point.py +++ b/src/sage/schemes/elliptic_curves/ell_point.py @@ -498,10 +498,8 @@ def order(self): sage: E(0).order() == 1 True """ - try: + if hasattr(self, "_order"): return self._order - except AttributeError: - pass if self.is_zero(): self._order = Integer(1) return self._order diff --git a/src/sage/schemes/elliptic_curves/hom_composite.py b/src/sage/schemes/elliptic_curves/hom_composite.py index a1b8b3c6562..b9dcc197616 100644 --- a/src/sage/schemes/elliptic_curves/hom_composite.py +++ b/src/sage/schemes/elliptic_curves/hom_composite.py @@ -147,7 +147,7 @@ def _compute_factored_isogeny_prime_power(P, l, n, split=.8, velu_sqrt_bound=Non multiplications according to the parameter. The asymptotic complexity is `O(n \log(n) \ell)`. - The optional parameter``velu_sqrt_bound`` prescribes the + The optional parameter ``velu_sqrt_bound`` prescribes the point in which the computation of a single isogeny should be performed using square root Velu instead of simple Velu. @@ -230,7 +230,7 @@ def _compute_factored_isogeny_single_generator(P, velu_sqrt_bound=None): prime-degree isogenies whose composition has the subgroup generated by `P` as its kernel. - The optional parameter``velu_sqrt_bound`` prescribes the + The optional parameter ``velu_sqrt_bound`` prescribes the point in which the computation of a single isogeny should be performed using square root Velu instead of simple Velu. @@ -276,7 +276,7 @@ def _compute_factored_isogeny(kernel, velu_sqrt_bound=None): and returns a sequence of isogenies whose composition has the subgroup generated by that subset as its kernel. - The optional parameter``velu_sqrt_bound`` prescribes the + The optional parameter ``velu_sqrt_bound`` prescribes the point in which the computation of a single isogeny should be performed using square root Velu instead of simple Velu. @@ -316,7 +316,7 @@ def __init__(self, E, kernel, codomain=None, model=None, velu_sqrt_bound=None): The ``codomain`` and ``model`` parameters have the same meaning as for :class:`EllipticCurveIsogeny`. - The optional parameter``velu_sqrt_bound`` prescribes the point + The optional parameter ``velu_sqrt_bound`` prescribes the point in which the computation of a single isogeny should be performed using square root Velu instead of simple Velu. If not provided, the system default is used (see @@ -586,6 +586,10 @@ def _repr_(self): """ from itertools import groupby degs = [phi.degree() for phi in self._phis] + if len(degs) == 1: + return f'Composite morphism of degree {self._degree}:' \ + f'\n From: {self._domain}' \ + f'\n To: {self._codomain}' grouped = [(d, sum(1 for _ in g)) for d,g in groupby(degs)] degs_str = '*'.join(str(d) + (f'^{e}' if e > 1 else '') for d,e in grouped) return f'Composite morphism of degree {self._degree} = {degs_str}:' \ From 4e132de675e94d8f369bd98b8d2db3b7b34f039f Mon Sep 17 00:00:00 2001 From: Riccardo Invernizzi Date: Tue, 6 Feb 2024 21:16:09 +0100 Subject: [PATCH 5/9] Delete config.cache --- config.cache | 451 --------------------------------------------------- 1 file changed, 451 deletions(-) delete mode 100644 config.cache diff --git a/config.cache b/config.cache deleted file mode 100644 index 192a6d1e928..00000000000 --- a/config.cache +++ /dev/null @@ -1,451 +0,0 @@ -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -ac_cv_ECM=${ac_cv_ECM=7.0.4} -ac_cv_ECMBIN=${ac_cv_ECMBIN=7.0.4} -ac_cv_build=${ac_cv_build=x86_64-pc-linux-gnu} -ac_cv_c_compiler_gnu=${ac_cv_c_compiler_gnu=yes} -ac_cv_cxx_compiler_gnu=${ac_cv_cxx_compiler_gnu=yes} -ac_cv_env_CBC_CFLAGS_set= -ac_cv_env_CBC_CFLAGS_value= -ac_cv_env_CBC_LIBS_set= -ac_cv_env_CBC_LIBS_value= -ac_cv_env_CBLAS_CFLAGS_set= -ac_cv_env_CBLAS_CFLAGS_value= -ac_cv_env_CBLAS_LIBS_set= -ac_cv_env_CBLAS_LIBS_value= -ac_cv_env_CCC_set= -ac_cv_env_CCC_value= -ac_cv_env_CC_set= -ac_cv_env_CC_value= -ac_cv_env_CFLAGS_set= -ac_cv_env_CFLAGS_value= -ac_cv_env_CPPFLAGS_set= -ac_cv_env_CPPFLAGS_value= -ac_cv_env_CPP_set= -ac_cv_env_CPP_value= -ac_cv_env_CXXCPP_set= -ac_cv_env_CXXCPP_value= -ac_cv_env_CXXFLAGS_set= -ac_cv_env_CXXFLAGS_value= -ac_cv_env_CXX_set= -ac_cv_env_CXX_value= -ac_cv_env_ECLIB_CFLAGS_set= -ac_cv_env_ECLIB_CFLAGS_value= -ac_cv_env_ECLIB_LIBS_set= -ac_cv_env_ECLIB_LIBS_value= -ac_cv_env_F77CFLAGS_set= -ac_cv_env_F77CFLAGS_value= -ac_cv_env_FCFLAGS_set= -ac_cv_env_FCFLAGS_value= -ac_cv_env_FC_set= -ac_cv_env_FC_value= -ac_cv_env_FFLAS_FFPACK_CFLAGS_set= -ac_cv_env_FFLAS_FFPACK_CFLAGS_value= -ac_cv_env_FFLAS_FFPACK_LIBS_set= -ac_cv_env_FFLAS_FFPACK_LIBS_value= -ac_cv_env_FPLLL_CFLAGS_set= -ac_cv_env_FPLLL_CFLAGS_value= -ac_cv_env_FPLLL_LIBS_set= -ac_cv_env_FPLLL_LIBS_value= -ac_cv_env_FREETYPE_CFLAGS_set= -ac_cv_env_FREETYPE_CFLAGS_value= -ac_cv_env_FREETYPE_LIBS_set= -ac_cv_env_FREETYPE_LIBS_value= -ac_cv_env_GC_CFLAGS_set= -ac_cv_env_GC_CFLAGS_value= -ac_cv_env_GC_LIBS_set= -ac_cv_env_GC_LIBS_value= -ac_cv_env_GF2X_CFLAGS_set= -ac_cv_env_GF2X_CFLAGS_value= -ac_cv_env_GF2X_LIBS_set= -ac_cv_env_GF2X_LIBS_value= -ac_cv_env_GSLPCDIR_set= -ac_cv_env_GSLPCDIR_value= -ac_cv_env_GSL_CFLAGS_set= -ac_cv_env_GSL_CFLAGS_value= -ac_cv_env_GSL_LIBS_set= -ac_cv_env_GSL_LIBS_value= -ac_cv_env_IGRAPH_CFLAGS_set= -ac_cv_env_IGRAPH_CFLAGS_value= -ac_cv_env_IGRAPH_LIBS_set= -ac_cv_env_IGRAPH_LIBS_value= -ac_cv_env_ISL_CFLAGS_set= -ac_cv_env_ISL_CFLAGS_value= -ac_cv_env_ISL_LIBS_set= -ac_cv_env_ISL_LIBS_value= -ac_cv_env_LAPACK_CFLAGS_set= -ac_cv_env_LAPACK_CFLAGS_value= -ac_cv_env_LAPACK_LIBS_set= -ac_cv_env_LAPACK_LIBS_value= -ac_cv_env_LDFLAGS_set= -ac_cv_env_LDFLAGS_value= -ac_cv_env_LIBATOMIC_OPS_CFLAGS_set= -ac_cv_env_LIBATOMIC_OPS_CFLAGS_value= -ac_cv_env_LIBATOMIC_OPS_LIBS_set= -ac_cv_env_LIBATOMIC_OPS_LIBS_value= -ac_cv_env_LIBFFI_CFLAGS_set= -ac_cv_env_LIBFFI_CFLAGS_value= -ac_cv_env_LIBFFI_LIBS_set= -ac_cv_env_LIBFFI_LIBS_value= -ac_cv_env_LIBGD_CFLAGS_set= -ac_cv_env_LIBGD_CFLAGS_value= -ac_cv_env_LIBGD_LIBS_set= -ac_cv_env_LIBGD_LIBS_value= -ac_cv_env_LIBPNG_CFLAGS_set= -ac_cv_env_LIBPNG_CFLAGS_value= -ac_cv_env_LIBPNG_LIBS_set= -ac_cv_env_LIBPNG_LIBS_value= -ac_cv_env_LIBSEMIGROUPS_CFLAGS_set= -ac_cv_env_LIBSEMIGROUPS_CFLAGS_value= -ac_cv_env_LIBSEMIGROUPS_LIBS_set= -ac_cv_env_LIBSEMIGROUPS_LIBS_value= -ac_cv_env_LIBS_set= -ac_cv_env_LIBS_value= -ac_cv_env_LINBOX_CFLAGS_set= -ac_cv_env_LINBOX_CFLAGS_value= -ac_cv_env_LINBOX_LIBS_set= -ac_cv_env_LINBOX_LIBS_value= -ac_cv_env_M4RI_CFLAGS_set= -ac_cv_env_M4RI_CFLAGS_value= -ac_cv_env_M4RI_LIBS_set= -ac_cv_env_M4RI_LIBS_value= -ac_cv_env_NCURSES_CFLAGS_set= -ac_cv_env_NCURSES_CFLAGS_value= -ac_cv_env_NCURSES_LIBS_set= -ac_cv_env_NCURSES_LIBS_value= -ac_cv_env_OBJCFLAGS_set= -ac_cv_env_OBJCFLAGS_value= -ac_cv_env_OBJCXXFLAGS_set= -ac_cv_env_OBJCXXFLAGS_value= -ac_cv_env_OBJCXX_set= -ac_cv_env_OBJCXX_value= -ac_cv_env_OBJC_set= -ac_cv_env_OBJC_value= -ac_cv_env_OPENBLASPCDIR_set= -ac_cv_env_OPENBLASPCDIR_value= -ac_cv_env_OPENBLAS_CFLAGS_set= -ac_cv_env_OPENBLAS_CFLAGS_value= -ac_cv_env_OPENBLAS_LIBS_set= -ac_cv_env_OPENBLAS_LIBS_value= -ac_cv_env_PKG_CONFIG_LIBDIR_set= -ac_cv_env_PKG_CONFIG_LIBDIR_value= -ac_cv_env_PKG_CONFIG_PATH_set= -ac_cv_env_PKG_CONFIG_PATH_value= -ac_cv_env_PKG_CONFIG_set= -ac_cv_env_PKG_CONFIG_value= -ac_cv_env_PRIMECOUNT_CFLAGS_set= -ac_cv_env_PRIMECOUNT_CFLAGS_value= -ac_cv_env_PRIMECOUNT_LIBS_set= -ac_cv_env_PRIMECOUNT_LIBS_value= -ac_cv_env_PRIMESIEVE_CFLAGS_set= -ac_cv_env_PRIMESIEVE_CFLAGS_value= -ac_cv_env_PRIMESIEVE_LIBS_set= -ac_cv_env_PRIMESIEVE_LIBS_value= -ac_cv_env_READLINE_CFLAGS_set= -ac_cv_env_READLINE_CFLAGS_value= -ac_cv_env_READLINE_LIBS_set= -ac_cv_env_READLINE_LIBS_value= -ac_cv_env_R_CFLAGS_set= -ac_cv_env_R_CFLAGS_value= -ac_cv_env_R_LIBS_set= -ac_cv_env_R_LIBS_value= -ac_cv_env_SAGE_DEBUG_set= -ac_cv_env_SAGE_DEBUG_value= -ac_cv_env_SAGE_FAT_BINARY_set= -ac_cv_env_SAGE_FAT_BINARY_value= -ac_cv_env_SINGULAR_CFLAGS_set= -ac_cv_env_SINGULAR_CFLAGS_value= -ac_cv_env_SINGULAR_LIBS_set= -ac_cv_env_SINGULAR_LIBS_value= -ac_cv_env_build_alias_set= -ac_cv_env_build_alias_value= -ac_cv_env_host_alias_set= -ac_cv_env_host_alias_value= -ac_cv_env_libjpeg_CFLAGS_set= -ac_cv_env_libjpeg_CFLAGS_value= -ac_cv_env_libjpeg_LIBS_set= -ac_cv_env_libjpeg_LIBS_value= -ac_cv_env_ntl_includedir_set= -ac_cv_env_ntl_includedir_value= -ac_cv_env_ntl_libdir_set= -ac_cv_env_ntl_libdir_value= -ac_cv_env_target_alias_set= -ac_cv_env_target_alias_value= -ac_cv_fc_compiler_gnu=${ac_cv_fc_compiler_gnu=yes} -ac_cv_fc_freeform=${ac_cv_fc_freeform=-ffree-form} -ac_cv_func_DGEQRF=${ac_cv_func_DGEQRF=no} -ac_cv_func_DGEQRF_=${ac_cv_func_DGEQRF_=no} -ac_cv_func_cblas_dgemm=${ac_cv_func_cblas_dgemm=yes} -ac_cv_func_curl_free=${ac_cv_func_curl_free=yes} -ac_cv_func_dgeqrf=${ac_cv_func_dgeqrf=no} -ac_cv_func_dgeqrf_=${ac_cv_func_dgeqrf_=yes} -ac_cv_header_NTL_ZZ_h=${ac_cv_header_NTL_ZZ_h=yes} -ac_cv_header_bliss_bliss_C_h=${ac_cv_header_bliss_bliss_C_h=no} -ac_cv_header_bzlib_h=${ac_cv_header_bzlib_h=yes} -ac_cv_header_cddlib_cdd_h=${ac_cv_header_cddlib_cdd_h=yes} -ac_cv_header_cliquer_cliquer_h=${ac_cv_header_cliquer_cliquer_h=yes} -ac_cv_header_complex_h=${ac_cv_header_complex_h=yes} -ac_cv_header_ecm_h=${ac_cv_header_ecm_h=yes} -ac_cv_header_flint_flint_h=${ac_cv_header_flint_flint_h=yes} -ac_cv_header_glpk_h=${ac_cv_header_glpk_h=yes} -ac_cv_header_gmp_h=${ac_cv_header_gmp_h=yes} -ac_cv_header_gmpxx_h=${ac_cv_header_gmpxx_h=yes} -ac_cv_header_graphviz_cgraph_h=${ac_cv_header_graphviz_cgraph_h=no} -ac_cv_header_homfly_h=${ac_cv_header_homfly_h=yes} -ac_cv_header_iml_h=${ac_cv_header_iml_h=yes} -ac_cv_header_inttypes_h=${ac_cv_header_inttypes_h=yes} -ac_cv_header_lrcalc_lrcoef_h=${ac_cv_header_lrcalc_lrcoef_h=no} -ac_cv_header_lrcalc_schublib_h=${ac_cv_header_lrcalc_schublib_h=no} -ac_cv_header_lzma_h=${ac_cv_header_lzma_h=yes} -ac_cv_header_m4rie_m4rie_h=${ac_cv_header_m4rie_m4rie_h=yes} -ac_cv_header_mpc_h=${ac_cv_header_mpc_h=yes} -ac_cv_header_mpfi_h=${ac_cv_header_mpfi_h=yes} -ac_cv_header_mpfr_h=${ac_cv_header_mpfr_h=yes} -ac_cv_header_pari_pari_h=${ac_cv_header_pari_pari_h=yes} -ac_cv_header_planarity_planarity_h=${ac_cv_header_planarity_planarity_h=yes} -ac_cv_header_rw_h=${ac_cv_header_rw_h=yes} -ac_cv_header_stdint_h=${ac_cv_header_stdint_h=yes} -ac_cv_header_stdio_h=${ac_cv_header_stdio_h=yes} -ac_cv_header_stdlib_h=${ac_cv_header_stdlib_h=yes} -ac_cv_header_string_h=${ac_cv_header_string_h=yes} -ac_cv_header_strings_h=${ac_cv_header_strings_h=yes} -ac_cv_header_suitesparse_SuiteSparse_config_h=${ac_cv_header_suitesparse_SuiteSparse_config_h=yes} -ac_cv_header_suitesparse_amd_h=${ac_cv_header_suitesparse_amd_h=yes} -ac_cv_header_symmetrica_def_h=${ac_cv_header_symmetrica_def_h=yes} -ac_cv_header_sys_stat_h=${ac_cv_header_sys_stat_h=yes} -ac_cv_header_sys_types_h=${ac_cv_header_sys_types_h=yes} -ac_cv_header_unistd_h=${ac_cv_header_unistd_h=yes} -ac_cv_header_zlib_h=${ac_cv_header_zlib_h=yes} -ac_cv_header_zmq_h=${ac_cv_header_zmq_h=yes} -ac_cv_host=${ac_cv_host=x86_64-pc-linux-gnu} -ac_cv_lib_lzma_lzma_raw_decoder=${ac_cv_lib_lzma_lzma_raw_decoder=yes} -ac_cv_lib_m_sqrt=${ac_cv_lib_m_sqrt=yes} -ac_cv_lib_planarity_gp_InitGraph=${ac_cv_lib_planarity_gp_InitGraph=yes} -ac_cv_lib_z_inflateEnd=${ac_cv_lib_z_inflateEnd=yes} -ac_cv_objc_compiler_gnu=${ac_cv_objc_compiler_gnu=no} -ac_cv_objcxx_compiler_gnu=${ac_cv_objcxx_compiler_gnu=no} -ac_cv_objext=${ac_cv_objext=o} -ac_cv_path_CMAKE=${ac_cv_path_CMAKE=/usr/bin/cmake} -ac_cv_path_CONVERT=${ac_cv_path_CONVERT=/usr/bin/convert} -ac_cv_path_CURL=${ac_cv_path_CURL=/usr/bin/curl} -ac_cv_path_DVIPNG=${ac_cv_path_DVIPNG=/usr/bin/dvipng} -ac_cv_path_ECL_CONFIG=${ac_cv_path_ECL_CONFIG=/usr/bin/ecl-config} -ac_cv_path_ECMBIN=${ac_cv_path_ECMBIN=/usr/bin/ecm} -ac_cv_path_EGREP=${ac_cv_path_EGREP='/usr/bin/grep -E'} -ac_cv_path_FFMPEG=${ac_cv_path_FFMPEG=/usr/bin/ffmpeg} -ac_cv_path_GAP=${ac_cv_path_GAP=/usr/bin/gap} -ac_cv_path_GENGETOPT=${ac_cv_path_GENGETOPT=/usr/bin/gengetopt} -ac_cv_path_GENGnautyCHECK=${ac_cv_path_GENGnautyCHECK=/usr/bin/nauty-geng} -ac_cv_path_GFAN_VERSION=${ac_cv_path_GFAN_VERSION=/usr/bin/gfan_version} -ac_cv_path_GIT=${ac_cv_path_GIT=/usr/bin/git} -ac_cv_path_GIVAROCONFIG=${ac_cv_path_GIVAROCONFIG=/usr/bin/givaro-config} -ac_cv_path_GLPSOL=${ac_cv_path_GLPSOL=/usr/bin/glpsol} -ac_cv_path_GP=${ac_cv_path_GP=/usr/bin/gp} -ac_cv_path_GPHELP=${ac_cv_path_GPHELP=/usr/bin/gphelp} -ac_cv_path_GREP=${ac_cv_path_GREP=/usr/bin/grep} -ac_cv_path_INFO=${ac_cv_path_INFO=/usr/bin/info} -ac_cv_path_LATEXMK=${ac_cv_path_LATEXMK=/usr/bin/latexmk} -ac_cv_path_MAKE=${ac_cv_path_MAKE=/usr/bin/make} -ac_cv_path_MAXIMA=${ac_cv_path_MAXIMA=/usr/bin/maxima} -ac_cv_path_NINJA=${ac_cv_path_NINJA=/usr/bin/ninja} -ac_cv_path_PALPclass11=${ac_cv_path_PALPclass11=/usr/bin/class-11d.x} -ac_cv_path_PALPclass4=${ac_cv_path_PALPclass4=/usr/bin/class-4d.x} -ac_cv_path_PALPclass5=${ac_cv_path_PALPclass5=/usr/bin/class-5d.x} -ac_cv_path_PALPclass6=${ac_cv_path_PALPclass6=/usr/bin/class-6d.x} -ac_cv_path_PALPclass=${ac_cv_path_PALPclass=/usr/bin/class.x} -ac_cv_path_PALPcws11=${ac_cv_path_PALPcws11=/usr/bin/cws-11d.x} -ac_cv_path_PALPcws4=${ac_cv_path_PALPcws4=/usr/bin/cws-4d.x} -ac_cv_path_PALPcws5=${ac_cv_path_PALPcws5=/usr/bin/cws-5d.x} -ac_cv_path_PALPcws6=${ac_cv_path_PALPcws6=/usr/bin/cws-6d.x} -ac_cv_path_PALPcws=${ac_cv_path_PALPcws=/usr/bin/cws.x} -ac_cv_path_PALPnef11=${ac_cv_path_PALPnef11=/usr/bin/nef-11d.x} -ac_cv_path_PALPnef4=${ac_cv_path_PALPnef4=/usr/bin/nef-4d.x} -ac_cv_path_PALPnef5=${ac_cv_path_PALPnef5=/usr/bin/nef-5d.x} -ac_cv_path_PALPnef6=${ac_cv_path_PALPnef6=/usr/bin/nef-6d.x} -ac_cv_path_PALPnef=${ac_cv_path_PALPnef=/usr/bin/nef.x} -ac_cv_path_PALPpoly11=${ac_cv_path_PALPpoly11=/usr/bin/poly-11d.x} -ac_cv_path_PALPpoly4=${ac_cv_path_PALPpoly4=/usr/bin/poly-4d.x} -ac_cv_path_PALPpoly5=${ac_cv_path_PALPpoly5=/usr/bin/poly-5d.x} -ac_cv_path_PALPpoly6=${ac_cv_path_PALPpoly6=/usr/bin/poly-6d.x} -ac_cv_path_PALPpoly=${ac_cv_path_PALPpoly=/usr/bin/poly.x} -ac_cv_path_PANDOC=${ac_cv_path_PANDOC=/usr/bin/pandoc} -ac_cv_path_PATCH=${ac_cv_path_PATCH=/usr/bin/patch} -ac_cv_path_PATCHELF=${ac_cv_path_PATCHELF=/usr/bin/patchelf} -ac_cv_path_PDF2SVG=${ac_cv_path_PDF2SVG=/usr/bin/pdf2svg} -ac_cv_path_PDFLATEX=${ac_cv_path_PDFLATEX=/usr/bin/pdflatex} -ac_cv_path_PERL=${ac_cv_path_PERL=/usr/bin/perl} -ac_cv_path_POLYMAKE_CONFIG=${ac_cv_path_POLYMAKE_CONFIG=/bin/polymake-config} -ac_cv_path_PPL_CONFIG=${ac_cv_path_PPL_CONFIG=/usr/bin/ppl-config} -ac_cv_path_PYTHON3=${ac_cv_path_PYTHON3=/usr/bin/python3} -ac_cv_path_R=${ac_cv_path_R=/usr/bin/R} -ac_cv_path_SED=${ac_cv_path_SED=/usr/bin/sed} -ac_cv_path_SYMPOW=${ac_cv_path_SYMPOW=/usr/bin/sympow} -ac_cv_path_TACHYON=${ac_cv_path_TACHYON=/usr/bin/tachyon} -ac_cv_path_TAR=${ac_cv_path_TAR=/usr/bin/tar} -ac_cv_path_TEXI2ANY=${ac_cv_path_TEXI2ANY=/usr/bin/texi2any} -ac_cv_path_XINDY=${ac_cv_path_XINDY=/usr/bin/xindy} -ac_cv_path_XML2_CONFIG=${ac_cv_path_XML2_CONFIG=/usr/bin/xml2-config} -ac_cv_path__libcurl_config=${ac_cv_path__libcurl_config=/usr/bin/curl-config} -ac_cv_path_ac_pt_PKG_CONFIG=${ac_cv_path_ac_pt_PKG_CONFIG=/usr/bin/pkg-config} -ac_cv_path_bzip2_prog=${ac_cv_path_bzip2_prog=/usr/bin/bzip2} -ac_cv_path_install=${ac_cv_path_install='/usr/bin/install -c'} -ac_cv_path_mkdir=${ac_cv_path_mkdir=/usr/bin/mkdir} -ac_cv_path_naudirectg=${ac_cv_path_naudirectg=/usr/bin/nauty-directg} -ac_cv_path_naugenbg=${ac_cv_path_naugenbg=/usr/bin/nauty-genbg} -ac_cv_path_naugeng=${ac_cv_path_naugeng=/usr/bin/nauty-geng} -ac_cv_path_naugentourng=${ac_cv_path_naugentourng=/usr/bin/nauty-gentourng} -ac_cv_path_naugentreeg=${ac_cv_path_naugentreeg=/usr/bin/nauty-gentreeg} -ac_cv_prog_AWK=${ac_cv_prog_AWK=mawk} -ac_cv_prog_CDDEXEC=${ac_cv_prog_CDDEXEC=cddexec} -ac_cv_prog_CDDEXECGMP=${ac_cv_prog_CDDEXECGMP=cddexec_gmp} -ac_cv_prog_CPP=${ac_cv_prog_CPP='gcc -E'} -ac_cv_prog_CXXCPP=${ac_cv_prog_CXXCPP='g++ -std=gnu++11 -E'} -ac_cv_prog_DOT=${ac_cv_prog_DOT=dot} -ac_cv_prog_FOURTITWO_CIRCUITS=${ac_cv_prog_FOURTITWO_CIRCUITS=4ti2-circuits} -ac_cv_prog_FOURTITWO_GRAVER=${ac_cv_prog_FOURTITWO_GRAVER=4ti2-graver} -ac_cv_prog_FOURTITWO_GROEBNER=${ac_cv_prog_FOURTITWO_GROEBNER=4ti2-groebner} -ac_cv_prog_FOURTITWO_HILBERT=${ac_cv_prog_FOURTITWO_HILBERT=4ti2-hilbert} -ac_cv_prog_FOURTITWO_MARKOV=${ac_cv_prog_FOURTITWO_MARKOV=4ti2-markov} -ac_cv_prog_FOURTITWO_PPI=${ac_cv_prog_FOURTITWO_PPI=4ti2-ppi} -ac_cv_prog_FOURTITWO_QSOLVE=${ac_cv_prog_FOURTITWO_QSOLVE=4ti2-qsolve} -ac_cv_prog_FOURTITWO_RAYS=${ac_cv_prog_FOURTITWO_RAYS=4ti2-rays} -ac_cv_prog_FOURTITWO_ZSOLVE=${ac_cv_prog_FOURTITWO_ZSOLVE=4ti2-zsolve} -ac_cv_prog_NEATO=${ac_cv_prog_NEATO=neato} -ac_cv_prog_REDCHECKGMP=${ac_cv_prog_REDCHECKGMP=redcheck_gmp} -ac_cv_prog_SCDD=${ac_cv_prog_SCDD=scdd_gmp} -ac_cv_prog_TWOPI=${ac_cv_prog_TWOPI=twopi} -ac_cv_prog_ac_ct_CC=${ac_cv_prog_ac_ct_CC=gcc} -ac_cv_prog_ac_ct_CXX=${ac_cv_prog_ac_ct_CXX=g++} -ac_cv_prog_ac_ct_FC=${ac_cv_prog_ac_ct_FC=gfortran} -ac_cv_prog_ac_ct_OBJC=${ac_cv_prog_ac_ct_OBJC=gcc} -ac_cv_prog_ac_ct_OBJCXX=${ac_cv_prog_ac_ct_OBJCXX=g++} -ac_cv_prog_cc_c11=${ac_cv_prog_cc_c11=} -ac_cv_prog_cc_g=${ac_cv_prog_cc_g=yes} -ac_cv_prog_cc_stdc=${ac_cv_prog_cc_stdc=} -ac_cv_prog_cxx_11=${ac_cv_prog_cxx_11=no} -ac_cv_prog_cxx_cxx11=${ac_cv_prog_cxx_cxx11=} -ac_cv_prog_cxx_g=${ac_cv_prog_cxx_g=yes} -ac_cv_prog_cxx_stdcxx=${ac_cv_prog_cxx_stdcxx=} -ac_cv_prog_fc_g=${ac_cv_prog_fc_g=yes} -ac_cv_prog_found_ar=${ac_cv_prog_found_ar=yes} -ac_cv_prog_found_latex=${ac_cv_prog_found_latex=yes} -ac_cv_prog_found_m4=${ac_cv_prog_found_m4=yes} -ac_cv_prog_found_ranlib=${ac_cv_prog_found_ranlib=yes} -ac_cv_prog_found_strip=${ac_cv_prog_found_strip=yes} -ac_cv_prog_make_make_set=${ac_cv_prog_make_make_set=yes} -ac_cv_prog_objc_g=${ac_cv_prog_objc_g=no} -ac_cv_prog_objcxx_g=${ac_cv_prog_objcxx_g=no} -ac_cv_search_BZ2_bzCompress=${ac_cv_search_BZ2_bzCompress=-lbz2} -ac_cv_search_SuiteSparse_version=${ac_cv_search_SuiteSparse_version=-lsuitesparseconfig} -ac_cv_search___gmpn_gcd_11=${ac_cv_search___gmpn_gcd_11=-lgmp} -ac_cv_search_calculate_level=${ac_cv_search_calculate_level=-lrw} -ac_cv_search_cholmod_speye=${ac_cv_search_cholmod_speye=-lcholmod} -ac_cv_search_clique_unweighted_max_weight=${ac_cv_search_clique_unweighted_max_weight=-lcliquer} -ac_cv_search_dd_abs=${ac_cv_search_dd_abs=-lcddgmp} -ac_cv_search_ecm_factor=${ac_cv_search_ecm_factor=-lecm} -ac_cv_search_gf2e_init=${ac_cv_search_gf2e_init=-lm4rie} -ac_cv_search_glp_config=${ac_cv_search_glp_config=-lglpk} -ac_cv_search_gr_get_fexpr=${ac_cv_search_gr_get_fexpr=no} -ac_cv_search_homfly=${ac_cv_search_homfly=-lhomfly} -ac_cv_search_matpermanent=${ac_cv_search_matpermanent=-lpari} -ac_cv_search_mpc_cmp_abs=${ac_cv_search_mpc_cmp_abs=-lmpc} -ac_cv_search_mpc_sum=${ac_cv_search_mpc_sum=-lmpc} -ac_cv_search_mpfi_diam_abs=${ac_cv_search_mpfi_diam_abs=-lmpfi} -ac_cv_search_mpfr_cmpabs_ui=${ac_cv_search_mpfr_cmpabs_ui=-lmpfr} -ac_cv_search_mpfr_free_pool=${ac_cv_search_mpfr_free_pool=-lmpfr} -ac_cv_search_nonsingSolvLlhsMM=${ac_cv_search_nonsingSolvLlhsMM=-liml} -ac_cv_search_umfpack_di_solve=${ac_cv_search_umfpack_di_solve=-lumfpack} -ac_cv_search_zykelind_tetraeder_edges_extended=${ac_cv_search_zykelind_tetraeder_edges_extended=-lsymmetrica} -acl_cv_hardcode_direct=${acl_cv_hardcode_direct=no} -test ${acl_cv_hardcode_libdir_flag_spec+y} || acl_cv_hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' -acl_cv_hardcode_libdir_separator=${acl_cv_hardcode_libdir_separator=} -acl_cv_hardcode_minus_L=${acl_cv_hardcode_minus_L=no} -acl_cv_libdirstems=${acl_cv_libdirstems=lib,lib,lib64} -acl_cv_libext=${acl_cv_libext=a} -acl_cv_libname_spec=${acl_cv_libname_spec='lib$name'} -acl_cv_library_names_spec=${acl_cv_library_names_spec='$libname$shrext'} -acl_cv_path_LD=${acl_cv_path_LD=/usr/bin/ld} -acl_cv_prog_gnu_ld=${acl_cv_prog_gnu_ld=yes} -acl_cv_rpath=${acl_cv_rpath=done} -acl_cv_shlibext=${acl_cv_shlibext=so} -acl_cv_wl=${acl_cv_wl=-Wl,} -am_cv_CC_dependencies_compiler_type=${am_cv_CC_dependencies_compiler_type=none} -am_cv_CXX_dependencies_compiler_type=${am_cv_CXX_dependencies_compiler_type=none} -am_cv_OBJCXX_dependencies_compiler_type=${am_cv_OBJCXX_dependencies_compiler_type=none} -am_cv_OBJC_dependencies_compiler_type=${am_cv_OBJC_dependencies_compiler_type=none} -am_cv_func_iconv=${am_cv_func_iconv=yes} -am_cv_func_iconv_summary=${am_cv_func_iconv_summary='yes, in libc'} -am_cv_func_iconv_works=${am_cv_func_iconv_works=yes} -am_cv_lib_iconv=${am_cv_lib_iconv=no} -am_cv_make_support_nested_variables=${am_cv_make_support_nested_variables=yes} -am_cv_prog_cc_c_o=${am_cv_prog_cc_c_o=yes} -ax_cv_c_compiler_vendor=${ax_cv_c_compiler_vendor=gnu} -ax_cv_c_openmp=${ax_cv_c_openmp=-fopenmp} -ax_cv_check_cxxflags___march_native=${ax_cv_check_cxxflags___march_native=yes} -ax_cv_check_cxxflags___mavx512f__mavx512vl__mavx512dq=${ax_cv_check_cxxflags___mavx512f__mavx512vl__mavx512dq=yes} -ax_cv_check_cxxflags___mfma4=${ax_cv_check_cxxflags___mfma4=yes} -ax_cv_check_cxxflags___mfma=${ax_cv_check_cxxflags___mfma=yes} -ax_cv_cxx_compile_cxx11__std_gnupp11=${ax_cv_cxx_compile_cxx11__std_gnupp11=yes} -ax_cv_cxx_openmp=${ax_cv_cxx_openmp=-fopenmp} -ax_cv_gcc_version=${ax_cv_gcc_version=11} -ax_cv_gxx_version=${ax_cv_gxx_version=11} -ax_cv_prog_perl_version=${ax_cv_prog_perl_version=yes} -gl_cv_absolute_NTL_ZZ_h=${gl_cv_absolute_NTL_ZZ_h=///usr/include/NTL/ZZ.h} -gl_cv_absolute_ecm_h=${gl_cv_absolute_ecm_h=///usr/include/ecm.h} -gl_cv_absolute_gmp_h=${gl_cv_absolute_gmp_h=///usr/include/x86_64-linux-gnu/gmp.h} -gl_cv_elf=${gl_cv_elf=yes} -gl_cv_host_cpu_c_abi_32bit=${gl_cv_host_cpu_c_abi_32bit=no} -gl_cv_iconv_nonconst=${gl_cv_iconv_nonconst=yes} -libcurl_cv_lib_curl_usable=${libcurl_cv_lib_curl_usable=yes} -libcurl_cv_lib_curl_version=${libcurl_cv_lib_curl_version=7.81.0} -libcurl_cv_lib_version_ok=${libcurl_cv_lib_version_ok=yes} -lzma_cv_liblzma=${lzma_cv_liblzma=yes} -lzma_cv_lzma_h=${lzma_cv_lzma_h=yes} -pkg_cv_CBC_CFLAGS=${pkg_cv_CBC_CFLAGS=-I/usr/include/coin} -pkg_cv_CBC_LIBS=${pkg_cv_CBC_LIBS='-lCbcSolver -lCbc -lpthread -lrt -lCgl -lOsiClp -lClpSolver -lClp -lOsi -lCoinUtils -lbz2 -lz -llapack -lblas -lm'} -pkg_cv_FREETYPE_CFLAGS=${pkg_cv_FREETYPE_CFLAGS='-I/usr/include/freetype2 -I/usr/include/libpng16'} -pkg_cv_FREETYPE_LIBS=${pkg_cv_FREETYPE_LIBS=-lfreetype} -pkg_cv_GC_CFLAGS=${pkg_cv_GC_CFLAGS=} -pkg_cv_GC_LIBS=${pkg_cv_GC_LIBS='-lgc -lpthread -ldl'} -pkg_cv_GF2X_CFLAGS=${pkg_cv_GF2X_CFLAGS=} -pkg_cv_GF2X_LIBS=${pkg_cv_GF2X_LIBS=-lgf2x} -pkg_cv_GSLPCDIR=${pkg_cv_GSLPCDIR=/usr/lib/x86_64-linux-gnu/pkgconfig} -pkg_cv_GSL_CFLAGS=${pkg_cv_GSL_CFLAGS=} -pkg_cv_GSL_LIBS=${pkg_cv_GSL_LIBS='-lgsl -lgslcblas -lm'} -pkg_cv_ISL_CFLAGS=${pkg_cv_ISL_CFLAGS=} -pkg_cv_ISL_LIBS=${pkg_cv_ISL_LIBS='-lisl -lgmp'} -pkg_cv_LIBATOMIC_OPS_CFLAGS=${pkg_cv_LIBATOMIC_OPS_CFLAGS=} -pkg_cv_LIBATOMIC_OPS_LIBS=${pkg_cv_LIBATOMIC_OPS_LIBS=-latomic_ops} -pkg_cv_LIBFFI_CFLAGS=${pkg_cv_LIBFFI_CFLAGS=} -pkg_cv_LIBFFI_LIBS=${pkg_cv_LIBFFI_LIBS=-lffi} -pkg_cv_LIBGD_CFLAGS=${pkg_cv_LIBGD_CFLAGS=} -pkg_cv_LIBGD_LIBS=${pkg_cv_LIBGD_LIBS=-lgd} -pkg_cv_LIBPNG_CFLAGS=${pkg_cv_LIBPNG_CFLAGS=-I/usr/include/libpng16} -pkg_cv_LIBPNG_LIBS=${pkg_cv_LIBPNG_LIBS='-lpng16 -lz'} -pkg_cv_M4RI_CFLAGS=${pkg_cv_M4RI_CFLAGS='-mmmx -msse -msse2 -I/usr/include/libpng16'} -pkg_cv_M4RI_LIBS=${pkg_cv_M4RI_LIBS='-lm4ri -lm -lpng16 -lz'} -pkg_cv_NCURSES_CFLAGS=${pkg_cv_NCURSES_CFLAGS='-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600'} -pkg_cv_NCURSES_LIBS=${pkg_cv_NCURSES_LIBS='-lncurses -ltinfo'} -pkg_cv_OPENBLASPCDIR=${pkg_cv_OPENBLASPCDIR=/usr/lib/x86_64-linux-gnu/pkgconfig} -pkg_cv_OPENBLAS_CFLAGS=${pkg_cv_OPENBLAS_CFLAGS=-I/usr/include/x86_64-linux-gnu/openblas-pthread/} -pkg_cv_OPENBLAS_LIBS=${pkg_cv_OPENBLAS_LIBS='-L/usr/lib/x86_64-linux-gnu/openblas-pthread/ -lopenblas'} -pkg_cv_READLINE_CFLAGS=${pkg_cv_READLINE_CFLAGS='-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600'} -pkg_cv_READLINE_LIBS=${pkg_cv_READLINE_LIBS=-lreadline} -pkg_cv_R_CFLAGS=${pkg_cv_R_CFLAGS=-I/usr/share/R/include} -pkg_cv_R_LIBS=${pkg_cv_R_LIBS='-L/usr/lib/R/lib -Wl,--export-dynamic -fopenmp -Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -flto=auto -Wl,-z,relro -lR'} -pkg_cv_libjpeg_CFLAGS=${pkg_cv_libjpeg_CFLAGS=} -pkg_cv_libjpeg_LIBS=${pkg_cv_libjpeg_LIBS=-ljpeg} -sage_libcurl_cv_lib_curl_executable=${sage_libcurl_cv_lib_curl_executable=yes} -zlib_cv_libz=${zlib_cv_libz=yes} -zlib_cv_zlib_h=${zlib_cv_zlib_h=yes} From 2053469fdf5435b1bbd0b3f89645c7528554ef62 Mon Sep 17 00:00:00 2001 From: Riccardo Invernizzi Date: Thu, 8 Feb 2024 17:35:23 +0100 Subject: [PATCH 6/9] Fixed doctests --- src/sage/schemes/elliptic_curves/hom.py | 10 ++++------ src/sage/schemes/elliptic_curves/hom_velusqrt.py | 1 + 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/sage/schemes/elliptic_curves/hom.py b/src/sage/schemes/elliptic_curves/hom.py index db3b1918926..fe450c89c5c 100644 --- a/src/sage/schemes/elliptic_curves/hom.py +++ b/src/sage/schemes/elliptic_curves/hom.py @@ -56,7 +56,7 @@ def __init__(self, *args, **kwds): sage: E.isogeny(P) # indirect doctest Isogeny of degree 127 from Elliptic Curve defined by y^2 = x^3 + 5*x + 5 over Finite Field in z2 of size 257^2 to Elliptic Curve defined by y^2 = x^3 + 151*x + 22 over Finite Field in z2 of size 257^2 sage: E.isogeny(P, algorithm='factored') # indirect doctest - Composite morphism of degree 127 = 127: + Composite morphism of degree 127: From: Elliptic Curve defined by y^2 = x^3 + 5*x + 5 over Finite Field in z2 of size 257^2 To: Elliptic Curve defined by y^2 = x^3 + 151*x + 22 over Finite Field in z2 of size 257^2 sage: E.isogeny(P, algorithm='velusqrt') # indirect doctest @@ -755,11 +755,9 @@ def is_separable(self): sage: E = EllipticCurve(GF(7^2), [3,2]) sage: P = E.lift_x(1) sage: phi = EllipticCurveHom_composite(E, P); phi - Composite morphism of degree 7 = 7: - From: Elliptic Curve defined by y^2 = x^3 + 3*x + 2 - over Finite Field in z2 of size 7^2 - To: Elliptic Curve defined by y^2 = x^3 + 3*x + 2 - over Finite Field in z2 of size 7^2 + Composite morphism of degree 7: + From: Elliptic Curve defined by y^2 = x^3 + 3*x + 2 over Finite Field in z2 of size 7^2 + To: Elliptic Curve defined by y^2 = x^3 + 3*x + 2 over Finite Field in z2 of size 7^2 sage: phi.is_separable() True diff --git a/src/sage/schemes/elliptic_curves/hom_velusqrt.py b/src/sage/schemes/elliptic_curves/hom_velusqrt.py index d333920bdb0..92a71c1e97f 100644 --- a/src/sage/schemes/elliptic_curves/hom_velusqrt.py +++ b/src/sage/schemes/elliptic_curves/hom_velusqrt.py @@ -162,6 +162,7 @@ def get(self): def __str__(self): return f"VeluSqrtBound Object with bound = {self.bound}" + _velu_sqrt_bound = _VeluBoundObj() def _choose_IJK(n): From 8f4da8785458918000ac122f3bcd888b960d4c83 Mon Sep 17 00:00:00 2001 From: Riccardo Invernizzi Date: Thu, 8 Feb 2024 18:11:09 +0100 Subject: [PATCH 7/9] More docstyle --- src/sage/schemes/elliptic_curves/hom_velusqrt.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/sage/schemes/elliptic_curves/hom_velusqrt.py b/src/sage/schemes/elliptic_curves/hom_velusqrt.py index 92a71c1e97f..a61a553e58e 100644 --- a/src/sage/schemes/elliptic_curves/hom_velusqrt.py +++ b/src/sage/schemes/elliptic_curves/hom_velusqrt.py @@ -143,12 +143,12 @@ class _VeluBoundObj: EXAMPLES :: - sage: from sage.schemes.elliptic_curves.hom_velusqrt import _velu_sqrt_bound - sage: _velu_sqrt_bound.get() - 1000 - sage: _velu_sqrt_bound.set(50) - sage: _velu_sqrt_bound.get() - 50 + sage: from sage.schemes.elliptic_curves.hom_velusqrt import _velu_sqrt_bound + sage: _velu_sqrt_bound.get() + 1000 + sage: _velu_sqrt_bound.set(50) + sage: _velu_sqrt_bound.get() + 50 """ def __init__(self): self.bound = Integer(1000) From 2941aa70424f75629e4a337feec9986a103a1a77 Mon Sep 17 00:00:00 2001 From: Riccardo Invernizzi Date: Mon, 12 Feb 2024 19:25:29 +0100 Subject: [PATCH 8/9] Suggestions --- src/sage/schemes/elliptic_curves/ell_field.py | 2 +- src/sage/schemes/elliptic_curves/hom_velusqrt.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/sage/schemes/elliptic_curves/ell_field.py b/src/sage/schemes/elliptic_curves/ell_field.py index f227c1f616b..a342e8a0ee1 100644 --- a/src/sage/schemes/elliptic_curves/ell_field.py +++ b/src/sage/schemes/elliptic_curves/ell_field.py @@ -1265,7 +1265,7 @@ def isogeny(self, kernel, codomain=None, degree=None, model=None, check=True, al If none of the previous apply, ``"traditional"`` is selected. - - ``velu_sqrt_bound``: -- an integer (default: ``None``). Establish the highest + - ``velu_sqrt_bound`` -- an integer (default: ``None``). Establish the highest (prime) degree for which the ``"traditional"`` algorithm should be selected instead of ``"velusqrt"``. If ``None``, the default value from :class:`~sage.schemes.elliptic_curves.hom_velusqrt._VeluBoundObj` is used. diff --git a/src/sage/schemes/elliptic_curves/hom_velusqrt.py b/src/sage/schemes/elliptic_curves/hom_velusqrt.py index a61a553e58e..e5fa67ff4d5 100644 --- a/src/sage/schemes/elliptic_curves/hom_velusqrt.py +++ b/src/sage/schemes/elliptic_curves/hom_velusqrt.py @@ -159,9 +159,12 @@ def set(self, b): def get(self): return self.bound - def __str__(self): + def __repr__(self): return f"VeluSqrtBound Object with bound = {self.bound}" + def __str__(self): + return self.__repr__() + _velu_sqrt_bound = _VeluBoundObj() From b4408ab5128a09f5b0538eab07e0e46704cb9a69 Mon Sep 17 00:00:00 2001 From: Riccardo Invernizzi Date: Tue, 13 Feb 2024 20:28:03 +0100 Subject: [PATCH 9/9] redundancy --- src/sage/schemes/elliptic_curves/hom_velusqrt.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/sage/schemes/elliptic_curves/hom_velusqrt.py b/src/sage/schemes/elliptic_curves/hom_velusqrt.py index e5fa67ff4d5..166d7c4c758 100644 --- a/src/sage/schemes/elliptic_curves/hom_velusqrt.py +++ b/src/sage/schemes/elliptic_curves/hom_velusqrt.py @@ -162,9 +162,6 @@ def get(self): def __repr__(self): return f"VeluSqrtBound Object with bound = {self.bound}" - def __str__(self): - return self.__repr__() - _velu_sqrt_bound = _VeluBoundObj()