[sagemath] 03/07: Delete patches that were applied upstream.
Tobias Hansen
thansen at moszumanska.debian.org
Sat Mar 18 13:54:11 UTC 2017
This is an automated email from the git hooks/post-receive script.
thansen pushed a commit to branch master
in repository sagemath.
commit b5c4d199ce381dddd2c3dca904918ac76753bf6b
Author: Tobias Hansen <thansen at debian.org>
Date: Sat Mar 18 12:11:45 2017 +0000
Delete patches that were applied upstream.
---
debian/changelog | 8 +
debian/patches/series | 7 -
debian/patches/u0-dont-test-glpk-version.patch | 16 -
debian/patches/u0-fix-libgap-systemwide.patch | 174 ------
debian/patches/u0-fix-preexec-fn.patch | 26 -
.../u0-singular-include-path-for-pynac.patch | 15 -
debian/patches/u0-use-local-threejs.patch | 150 -----
debian/patches/u0-version-pari-2.9.patch | 678 ---------------------
debian/patches/u0-version-pynac-0.7.4.patch | 68 ---
debian/patches/u0-version-singular-4.1.0p2.patch | 44 +-
debian/patches/u1-fix-proper-scipy-rtol.patch | 8 +-
debian/patches/u1-fix-use-lexists-not-exists.patch | 2 +-
debian/patches/u1-version-ecm-7.patch | 14 +-
.../u1-version-pbori-boost1.62-hashes.patch | 6 +-
14 files changed, 45 insertions(+), 1171 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index 0acb9db..8c99667 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,14 @@
sagemath (7.6~rc1-2) UNRELEASED; urgency=medium
* New upstream version.
+ * Remove patches (applied upstream):
+ - u0-dont-test-glpk-version.patch
+ - u0-fix-libgap-systemwide.patch
+ - u0-fix-preexec-fn.patch
+ - u0-singular-include-path-for-pynac.patch
+ - u0-use-local-threejs.patch
+ - u0-version-pari-2.9.patch
+ - u0-version-pynac-0.7.4.patch
-- Tobias Hansen <thansen at debian.org> Sat, 18 Mar 2017 12:00:06 +0000
diff --git a/debian/patches/series b/debian/patches/series
index 6e2cd52..62e1ce5 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,13 +1,6 @@
# Patches already applied upstream or committed in a side branch
# Or nearly-finished patches that they'll very probably merge.
-u0-version-pari-2.9.patch
u0-version-singular-4.1.0p2.patch
-u0-version-pynac-0.7.4.patch
-u0-fix-libgap-systemwide.patch
-u0-singular-include-path-for-pynac.patch
-u0-dont-test-glpk-version.patch
-u0-fix-preexec-fn.patch
-u0-use-local-threejs.patch
# Patches that have open upstream tickets
u1-version-planarity-3.patch
diff --git a/debian/patches/u0-dont-test-glpk-version.patch b/debian/patches/u0-dont-test-glpk-version.patch
deleted file mode 100644
index c0ffdaa..0000000
--- a/debian/patches/u0-dont-test-glpk-version.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Description: Do not test the version of glpk
- The test should not fail just because the version is different.
-Author: Tobias Hansen <thansen at debian.org>
-Forwarded: https://trac.sagemath.org/ticket/22443
-
---- a/sage/src/sage/numerical/mip.pyx
-+++ b/sage/src/sage/numerical/mip.pyx
-@@ -2519,7 +2519,7 @@
- sage: b.solver_parameter("simplex_or_intopt", "simplex_only")
- sage: b.solver_parameter("verbosity_simplex", "GLP_MSG_ALL")
- sage: p.solve() # rel tol 1e-5
-- GLPK Simplex Optimizer, v4.60
-+ GLPK Simplex Optimizer, v...
- 2 rows, 2 columns, 4 non-zeros
- * 0: obj = 7.000000000e+00 inf = 0.000e+00 (2)
- * 2: obj = 9.400000000e+00 inf = 0.000e+00 (0)
diff --git a/debian/patches/u0-fix-libgap-systemwide.patch b/debian/patches/u0-fix-libgap-systemwide.patch
deleted file mode 100644
index b1fe050..0000000
--- a/debian/patches/u0-fix-libgap-systemwide.patch
+++ /dev/null
@@ -1,174 +0,0 @@
-Bug: https://trac.sagemath.org/ticket/22437
-
---- a/sage/src/sage/libs/gap/gap_includes.pxd
-+++ b/sage/src/sage/libs/gap/gap_includes.pxd
-@@ -9,12 +9,12 @@
- ###############################################################################
-
-
--cdef extern from "gap/system.h":
-+cdef extern from "<gap/system.h>":
- ctypedef char libGAP_Char
- ctypedef int libGAP_Int
- ctypedef unsigned char libGAP_UChar
-
--cdef extern from "gap/libgap.h":
-+cdef extern from "<gap/libgap.h>":
- void libgap_initialize(int argc, char** argv)
- ctypedef void(*libgap_gasman_callback_ptr)()
- void libgap_set_gasman_callback(libgap_gasman_callback_ptr callback)
-@@ -30,11 +30,11 @@
- void libgap_enter()
- void libgap_exit()
-
--cdef extern from "gap/code.h":
-+cdef extern from "<gap/code.h>":
- ctypedef unsigned int libGAP_Stat
- ctypedef libGAP_Stat* libGAP_PtrBody
-
--cdef extern from "gap/gap.h":
-+cdef extern from "<gap/gap.h>":
- ctypedef unsigned int libGAP_UInt
- ctypedef void* libGAP_ExecStatus
- void libGAP_ViewObjHandler(void*)
-@@ -52,7 +52,7 @@
- cdef libGAP_ExecStatus libGAP_STATUS_ERROR
- cdef libGAP_ExecStatus libGAP_STATUS_QQUIT
-
--cdef extern from "gap/objects.h":
-+cdef extern from "<gap/objects.h>":
- ctypedef void* libGAP_Obj
- libGAP_Obj libGAP_SHALLOW_COPY_OBJ(libGAP_Obj obj)
- bint libGAP_IS_INTOBJ(libGAP_Obj obj)
-@@ -130,13 +130,13 @@
- cdef int libGAP_TESTING
- cdef int libGAP_LAST_TESTING_TNUM
-
--cdef extern from "gap/read.h":
-+cdef extern from "<gap/read.h>":
- void* libGAP_ReadEvalCommand(libGAP_Obj context, libGAP_UInt *dualSemicolon)
- void* libGAP_ReadEvalFile()
- void* libGAP_ReadEvalResult
- bint libGAP_READ_ERROR()
-
--cdef extern from "gap/scanner.h":
-+cdef extern from "<gap/scanner.h>":
- void libGAP_ClearError()
- libGAP_UInt libGAP_NrError
- libGAP_UInt libGAP_Symbol
-@@ -212,12 +212,12 @@
- int libGAP_S_SEMICOLON
- int libGAP_S_EOF
-
--cdef extern from "gap/gvars.h":
-+cdef extern from "<gap/gvars.h>":
- libGAP_UInt libGAP_GVarName(char* name)
- void libGAP_AssGVar(libGAP_UInt gvar, libGAP_Obj val)
- libGAP_Obj libGAP_VAL_GVAR(libGAP_UInt gvar)
-
--cdef extern from "gap/string.h":
-+cdef extern from "<gap/string.h>":
- char* libGAP_CSTR_STRING(libGAP_Obj list)
- int libGAP_GET_LEN_STRING(libGAP_Obj list)
- bint libGAP_IS_STRING(libGAP_Obj obj)
-@@ -225,7 +225,7 @@
- bint libGAP_ConvString(libGAP_Obj obj)
- void libGAP_C_NEW_STRING(libGAP_Obj new_gap_string, int length, char* c_string)
-
--cdef extern from "gap/gasman.h":
-+cdef extern from "<gap/gasman.h>":
- void libGAP_InitGlobalBag(libGAP_Obj* addr, char* cookie)
- libGAP_Obj libGAP_NewBag(libGAP_UInt type, libGAP_UInt size)
- void libGAP_CHANGED_BAG(libGAP_Obj bag)
-@@ -257,7 +257,7 @@
- cdef extern libGAP_Obj* libGAP_StopBags
- cdef extern libGAP_Obj* libGAP_EndBags
-
--cdef extern from "gap/ariths.h":
-+cdef extern from "<gap/ariths.h>":
- libGAP_Obj libGAP_SUM (libGAP_Obj, libGAP_Obj)
- libGAP_Obj libGAP_DIFF(libGAP_Obj, libGAP_Obj)
- libGAP_Obj libGAP_PROD(libGAP_Obj, libGAP_Obj)
-@@ -278,33 +278,33 @@
- bint libGAP_EQ(libGAP_Obj opL, libGAP_Obj opR)
- bint libGAP_LT(libGAP_Obj opL, libGAP_Obj opR)
-
--cdef extern from "gap/calls.h":
-+cdef extern from "<gap/calls.h>":
- bint libGAP_IS_FUNC(libGAP_Obj)
-
--cdef extern from "gap/plist.h":
-+cdef extern from "<gap/plist.h>":
- libGAP_Obj libGAP_NEW_PLIST(int type, int len)
- bint libGAP_IS_PLIST(libGAP_Obj lst)
- int libGAP_LEN_PLIST(libGAP_Obj lst)
- libGAP_Obj libGAP_ELM_PLIST(libGAP_Obj lst, int pos)
-
--cdef extern from "gap/lists.h":
-+cdef extern from "<gap/lists.h>":
- void libGAP_UNB_LIST(libGAP_Obj list, int pos)
- bint libGAP_IS_LIST(libGAP_Obj lst)
- int libGAP_LEN_LIST(libGAP_Obj lst)
- libGAP_Obj libGAP_ELM_LIST(libGAP_Obj lst, int pos)
-
--cdef extern from "gap/listfunc.h":
-+cdef extern from "<gap/listfunc.h>":
- void libGAP_AddList(libGAP_Obj list, libGAP_Obj obj)
- void libGAP_AddPlist(libGAP_Obj list, libGAP_Obj obj)
-
--cdef extern from "gap/records.h":
-+cdef extern from "<gap/records.h>":
- char* libGAP_NAME_RNAM(libGAP_UInt rnam)
- libGAP_UInt libGAP_RNamIntg(int i)
- bint libGAP_IS_REC(libGAP_Obj obj)
- libGAP_Obj libGAP_ELM_REC(libGAP_Obj rec, libGAP_UInt rnam)
- libGAP_UInt libGAP_RNamName(libGAP_Char* name)
-
--cdef extern from "gap/precord.h":
-+cdef extern from "<gap/precord.h>":
- libGAP_Obj libGAP_NEW_PREC(int len)
- int libGAP_LEN_PREC(libGAP_Obj rec)
- int libGAP_GET_RNAM_PREC(libGAP_Obj rec, int i)
-@@ -314,14 +314,14 @@
- bint libGAP_IsbPRec(libGAP_Obj rec, libGAP_UInt rnam)
- libGAP_Obj libGAP_ElmPRec(libGAP_Obj rec, libGAP_UInt rnam)
-
--cdef extern from "gap/cyclotom.h":
-+cdef extern from "<gap/cyclotom.h>":
- pass
-
--cdef extern from "gap/bool.h":
-+cdef extern from "<gap/bool.h>":
- cdef libGAP_Obj libGAP_True
- cdef libGAP_Obj libGAP_False
-
--cdef extern from "gap/vars.h":
-+cdef extern from "<gap/vars.h>":
- cdef int libGAP_T_LVARS
- libGAP_Obj libGAP_BottomLVars
-
---- a/sage/src/sage/libs/gap/test/main.c
-+++ b/sage/src/sage/libs/gap/test/main.c
-@@ -1,14 +1,14 @@
- #include <unistd.h>
- #include <stdio.h>
--#include "gap/libgap.h"
-+#include <gap/libgap.h>
-
--#include "gap/config.h"
--#include "gap/system.h"
--#include "gap/objects.h"
--#include "gap/gasman.h"
--#include "gap/code.h"
--#include "gap/vars.h"
--#include "gap/read.h"
-+#include <gap/config.h>
-+#include <gap/system.h>
-+#include <gap/objects.h>
-+#include <gap/gasman.h>
-+#include <gap/code.h>
-+#include <gap/vars.h>
-+#include <gap/read.h>
-
- extern char **environ;
-
diff --git a/debian/patches/u0-fix-preexec-fn.patch b/debian/patches/u0-fix-preexec-fn.patch
deleted file mode 100644
index 31eaf96..0000000
--- a/debian/patches/u0-fix-preexec-fn.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-Description: Work around python bug #1652
- This avoids GAP printing extraneous "gzip: stdout: Broken pipe" errors
- However it is NOT related to Debian bug #844789
-Author: Ximin Luo <infinity0 at debian.org>
-Bug: https://bugs.python.org/issue1652
-Forwarded: https://trac.sagemath.org/ticket/22440
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/sage/src/sage/interfaces/expect.py
-+++ b/sage/src/sage/interfaces/expect.py
-@@ -42,6 +42,7 @@
- from __future__ import absolute_import
-
- import os
-+import signal
- import sys
- import weakref
- import time
-@@ -479,6 +480,7 @@
- timeout=None, # no timeout
- env=pexpect_env,
- name=self._repr_(),
-+ preexec_fn=lambda: signal.signal(signal.SIGPIPE, signal.SIG_DFL),
- quit_string=self._quit_string())
- except (ExceptionPexpect, pexpect.EOF) as e:
- # Change pexpect errors to RuntimeError
diff --git a/debian/patches/u0-singular-include-path-for-pynac.patch b/debian/patches/u0-singular-include-path-for-pynac.patch
deleted file mode 100644
index fae7719..0000000
--- a/debian/patches/u0-singular-include-path-for-pynac.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Description: Compile pynac interface with SINGULAR_CFLAGS to find its headers
- pynac/basic.h includes factory/factory.h so this is needed to find it.
-Author: Tobias Hansen <thansen at debian.org>
-Forwarded: https://trac.sagemath.org/ticket/22442
-
---- a/sage/src/sage/libs/pynac/pynac.pxd
-+++ b/sage/src/sage/libs/pynac/pynac.pxd
-@@ -1,6 +1,6 @@
- # distutils: language = c++
- # distutils: libraries = pynac gmp
--# distutils: extra_compile_args = -std=c++11
-+# distutils: extra_compile_args = -std=c++11 SINGULAR_CFLAGS
- """
- Declarations for pynac, a Python frontend for ginac
-
diff --git a/debian/patches/u0-use-local-threejs.patch b/debian/patches/u0-use-local-threejs.patch
deleted file mode 100644
index 84c4781..0000000
--- a/debian/patches/u0-use-local-threejs.patch
+++ /dev/null
@@ -1,150 +0,0 @@
-Description: Use threejs as the default 3D viewer
-Author: paulmasson <paulmasson at analyticphysics.com>
-Applied-Upstream:
- commit:5ddb9f154c1618039e60253e4e102a198d955af5
- commit:efbd87751b8fd5b384c563026e3470bdb42429c2
- commit:7c0c9cf8e7ccb3d9b09020ddf11615fcfac61780
- commit:63f725d65fcd99c3a8669534efdd3114e31bf1ff
-
---- a/sage/src/doc/en/reference/plot3d/threejs.rst
-+++ b/sage/src/doc/en/reference/plot3d/threejs.rst
-@@ -18,7 +18,10 @@
- on a touch pad
-
- The generated HTML file contains all data for the scene apart from the JavaScript library
--and can be saved to disk for sharing or embedding in a web page.
-+and can be saved to disk for sharing or embedding in a web page. The option ``online``
-+can be set to ``true`` to provide links to the required files in an online content delivery
-+network. Alternately the required files can be downloaded from the Three.js GitHub repository
-+and linked directly from the web server.
-
- Options currently supported by the viewer:
-
-@@ -36,6 +39,9 @@
-
- - ``frame`` -- (default: True) Boolean determining whether frame is drawn
-
-+- ``online`` -- (default: False) Boolean determining whether the local standard package
-+ files are replaced by links to an online content delivery network
-+
- - ``opacity`` -- (default: 1) numeric value for transparency of lines and surfaces
-
- - ``radius`` -- (default: None) numeric value for radius of lines; use to render
---- a/sage/src/ext/threejs/threejs_template.html
-+++ b/sage/src/ext/threejs/threejs_template.html
-@@ -2,8 +2,8 @@
- <html>
- <head>
- <title></title>
--<meta charset=utf-8>
--<meta name=viewport content='width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0'>
-+<meta charset="utf-8">
-+<meta name=viewport content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
- <style>
-
- body { margin: 0px; overflow: hidden; }
-@@ -12,10 +12,7 @@
- </head>
-
- <body>
--
--<script src=http://rawgit.com/mrdoob/three.js/r80/build/three.js></script>
--<script src=http://rawgit.com/mrdoob/three.js/r80/examples/js/controls/OrbitControls.js></script>
--
-+SAGE_SCRIPTS
- <script>
-
- var scene = new THREE.Scene();
---- a/sage/src/sage/plot/plot3d/base.pyx
-+++ b/sage/src/sage/plot/plot3d/base.pyx
-@@ -367,10 +367,41 @@
- options['axes_labels'] = kwds.get('axes_labels', ['x','y','z'])
- options['decimals'] = int(kwds.get('decimals', 2))
- options['frame'] = kwds.get('frame', True)
-+ options['online'] = kwds.get('online', False)
-
- if not options['frame']:
- options['axes_labels'] = False
-
-+ from sage.repl.rich_output import get_display_manager
-+ backend = get_display_manager()._backend
-+ from sage.repl.rich_output.backend_sagenb import BackendSageNB
-+ if isinstance(backend, BackendSageNB):
-+ options['online'] = True
-+
-+ if options['online']:
-+ scripts = ( """
-+<script src="https://cdn.rawgit.com/mrdoob/three.js/r80/build/three.min.js"></script>
-+<script src="https://cdn.rawgit.com/mrdoob/three.js/r80/examples/js/controls/OrbitControls.js"></script>
-+ """ )
-+ else:
-+ from sage.repl.rich_output.backend_ipython import BackendIPythonNotebook
-+ if isinstance(backend, BackendIPythonNotebook):
-+ scripts = ( """
-+<script src="/nbextensions/threejs/three.min.js"></script>
-+<script src="/nbextensions/threejs/OrbitControls.js"></script>
-+<script>
-+ if ( !window.THREE ) document.write('\
-+<script src="https://cdn.rawgit.com/mrdoob/three.js/r80/build/three.min.js"><\/script>\
-+<script src="https://cdn.rawgit.com/mrdoob/three.js/r80/examples/js/controls/OrbitControls.js"><\/script>');
-+</script>
-+ """ )
-+ else:
-+ from sage.env import SAGE_SHARE
-+ scripts = ( """
-+<script src="{0}/threejs/three.min.js"></script>
-+<script src="{0}/threejs/OrbitControls.js"></script>
-+ """.format( SAGE_SHARE ) )
-+
- lights = "[{x:0, y:0, z:10}, {x:0, y:0, z:-10}]"
-
- b = self.bounding_box()
-@@ -413,6 +444,7 @@
- html = f.read()
- f.close()
-
-+ html = html.replace('SAGE_SCRIPTS', scripts)
- html = html.replace('SAGE_OPTIONS', json.dumps(options))
- html = html.replace('SAGE_LIGHTS', lights)
- html = html.replace('SAGE_BOUNDS', bounds)
---- a/sage/src/sage/repl/ipython_kernel/install.py
-+++ b/sage/src/sage/repl/ipython_kernel/install.py
-@@ -1,5 +1,5 @@
- """
--Installing the SageMath Jupyter Kernel and extensions
-+Installing the SageMath Jupyter Kernel and Extensions
-
- Kernels have to register themselves with Jupyter so that they appear
- in the Jupyter notebook's kernel drop-down. This is done by
-@@ -130,6 +130,23 @@
- dst = os.path.join(self.nbextensions_dir, 'jsmol')
- self.symlink(src, dst)
-
-+ def use_local_threejs(self):
-+ """
-+ Symlink threejs to the Jupyter notebook.
-+
-+ EXAMPLES::
-+
-+ sage: from sage.repl.ipython_kernel.install import SageKernelSpec
-+ sage: spec = SageKernelSpec()
-+ sage: spec.use_local_threejs()
-+ sage: threejs = os.path.join(spec.nbextensions_dir, 'threejs')
-+ sage: os.path.isdir(threejs)
-+ True
-+ """
-+ src = os.path.join(SAGE_LOCAL, 'share', 'threejs')
-+ dst = os.path.join(self.nbextensions_dir, 'threejs')
-+ self.symlink(src, dst)
-+
- def _kernel_cmd(self):
- """
- Helper to construct the SageMath kernel command.
-@@ -236,6 +253,7 @@
- instance = cls()
- instance.use_local_mathjax()
- instance.use_local_jsmol()
-+ instance.use_local_threejs()
- instance._install_spec()
- instance._symlink_resources()
-
diff --git a/debian/patches/u0-version-pari-2.9.patch b/debian/patches/u0-version-pari-2.9.patch
deleted file mode 100644
index 522ce68..0000000
--- a/debian/patches/u0-version-pari-2.9.patch
+++ /dev/null
@@ -1,678 +0,0 @@
-From b1c66bd445cceb05caa589afb7aab9d9efdf5e94 Mon Sep 17 00:00:00 2001
-From: Jeroen Demeyer <jdemeyer at cage.ugent.be>
-Date: Mon, 24 Oct 2016 14:05:01 +0200
-Subject: Upgrade to PARI 2.9.1
-Bug: https://trac.sagemath.org/ticket/21756
-Applied-Upstream: 7.6
-
----
- build/pkgs/pari/checksums.ini | 6 +-
- build/pkgs/pari/package-version.txt | 2 +-
- build/pkgs/pari/patches/README.txt | 5 --
- build/pkgs/pari/patches/fix_constants.patch | 51 ----------------
- build/pkgs/pari/patches/perl_inc.patch | 45 --------------
- build/pkgs/pari/patches/stackwarn.patch | 37 ++++++------
- src/sage/interfaces/gp.py | 3 +
- src/sage/libs/pari/tests.py | 6 +-
- src/sage/modular/cusps_nf.py | 18 +++---
- src/sage/rings/number_field/bdd_height.py | 2 +-
- src/sage/rings/number_field/class_group.py | 2 +-
- src/sage/rings/number_field/number_field.py | 61 +++++++++----------
- .../rings/number_field/number_field_element.pyx | 2 +-
- .../rings/number_field/number_field_ideal_rel.py | 10 ++--
- src/sage/rings/number_field/number_field_rel.py | 2 +-
- src/sage/rings/number_field/unit_group.py | 37 +++++++++---
- .../rings/polynomial/polynomial_quotient_ring.py | 70 +++++++++++++++++-----
- .../schemes/elliptic_curves/ell_number_field.py | 28 +++++----
- .../schemes/elliptic_curves/ell_rational_field.py | 4 +-
- src/sage/schemes/elliptic_curves/gp_simon.py | 2 +-
- src/sage/schemes/elliptic_curves/period_lattice.py | 4 +-
- 21 files changed, 181 insertions(+), 216 deletions(-)
- delete mode 100644 build/pkgs/pari/patches/fix_constants.patch
- delete mode 100644 build/pkgs/pari/patches/perl_inc.patch
-
---- a/sage/src/sage/interfaces/gp.py
-+++ b/sage/src/sage/interfaces/gp.py
-@@ -239,6 +239,9 @@
-
- def _start(self, alt_message=None, block_during_init=True):
- Expect._start(self, alt_message, block_during_init)
-+ # disable memory debugging: those warnings can only confuse our
-+ # interface
-+ self._eval_line('default(debugmem,0);')
- # disable timer
- self._eval_line('default(timer,0);')
- # disable the break loop, otherwise gp will seem to hang on errors
---- a/sage/src/sage/libs/pari/tests.py
-+++ b/sage/src/sage/libs/pari/tests.py
-@@ -1457,7 +1457,7 @@
- sage: x = pari('[1, -1, 2]~')
- sage: y = pari('[1, -1, 3]~')
- sage: nf.idealcoprime(x, y)
-- [1, 0, 0]~
-+ 1
-
- sage: y = pari('[2, -2, 4]~')
- sage: nf.idealcoprime(x, y)
-@@ -1489,7 +1489,7 @@
- sage: nf = F._pari_()
- sage: I = pari('[1, -1, 2]~')
- sage: nf.idealstar(I)
-- [[[43, 9, 5; 0, 1, 0; 0, 0, 1], [0]], [42, [42]], Mat([[43, [9, 1, 0]~, 1, 1, [-5, 2, -18; -9, -5, 2; 1, -9, -5]], 1]), [[[[42], [3], [3], [Vecsmall([])], 1]], [[], [], []]], Mat(1)]
-+ [[[43, 9, 5; 0, 1, 0; 0, 0, 1], [0]], [42, [42]], Mat([[43, [9, 1, 0]~, 1, 1, [-5, 2, -18; -9, -5, 2; 1, -9, -5]], 1]), [[[[[42], [3], [3], [Vecsmall([])], 1, [43, 9, 5; 0, 1, 0; 0, 0, 1]]]], [[], [], [], Vecsmall([])], Vecsmall([0])], Mat(1)]
-
- sage: x = polygen(QQ)
- sage: K.<a> = NumberField(x^3 - 17)
-@@ -1520,7 +1520,7 @@
-
- sage: x = QQ['x'].0; nf = pari(x^2 + 2).nfinit()
- sage: nf.nfgaloisconj()
-- [-x, x]~
-+ [x, -x]~
- sage: nf = pari(x^3 + 2).nfinit()
- sage: nf.nfgaloisconj()
- [x]~
---- a/sage/src/sage/modular/cusps_nf.py
-+++ b/sage/src/sage/modular/cusps_nf.py
-@@ -142,19 +142,17 @@
- sage: N = k.ideal(713, a + 208)
- sage: L = list_of_representatives(N); L
- (Fractional ideal (1),
-- Fractional ideal (37, a + 12),
-- Fractional ideal (47, a - 9))
-+ Fractional ideal (47, a - 9),
-+ Fractional ideal (53, a - 16))
-
-- The output of ``list_of_representatives`` has been cached:
--
-- ::
-+ The output of ``list_of_representatives`` has been cached::
-
- sage: sage.modular.cusps_nf._list_reprs_cache.keys()
- [Fractional ideal (713, a + 208)]
- sage: sage.modular.cusps_nf._list_reprs_cache[N]
- (Fractional ideal (1),
-- Fractional ideal (37, a + 12),
-- Fractional ideal (47, a - 9))
-+ Fractional ideal (47, a - 9),
-+ Fractional ideal (53, a - 16))
- """
- if N in _list_reprs_cache:
- lreps = _list_reprs_cache[N]
-@@ -1255,9 +1253,9 @@
- sage: from sage.modular.cusps_nf import NFCusps_ideal_reps_for_levelN
- sage: NFCusps_ideal_reps_for_levelN(N)
- [(Fractional ideal (1),
-- Fractional ideal (13, a - 2),
-- Fractional ideal (43, a - 1),
-- Fractional ideal (67, a + 17))]
-+ Fractional ideal (67, a + 17),
-+ Fractional ideal (127, a + 48),
-+ Fractional ideal (157, a - 19))]
- sage: L = NFCusps_ideal_reps_for_levelN(N, 5)
- sage: all([len(L[i])==k.class_number() for i in range(len(L))])
- True
---- a/sage/src/sage/rings/number_field/bdd_height.py
-+++ b/sage/src/sage/rings/number_field/bdd_height.py
-@@ -72,7 +72,7 @@
- sage: bdd_pr_ideals[4]
- [2]
- sage: bdd_pr_ideals[5]
-- [g + 2, g - 2]
-+ [-g - 2, -g + 2]
- sage: bdd_pr_ideals[7]
- []
-
---- a/sage/src/sage/rings/number_field/class_group.py
-+++ b/sage/src/sage/rings/number_field/class_group.py
-@@ -470,7 +470,7 @@
- sage: CK = K.class_group()
- sage: CL = L.class_group()
- sage: [CL(I).exponents() for I in CK]
-- [(0,), (2,), (4,)]
-+ [(0,), (4,), (2,)]
- """
- if isinstance(args[0], FractionalIdealClass):
- return self.element_class(self, None, self._number_field.ideal(args[0].ideal()))
---- a/sage/src/sage/rings/number_field/number_field.py
-+++ b/sage/src/sage/rings/number_field/number_field.py
-@@ -3868,8 +3868,8 @@
- sage: K.<a> = QuadraticField(-3)
- sage: K.unit_group()
- Unit group with structure C6 of Number Field in a with defining polynomial x^2 + 3
-- sage: K.S_units([])
-- [-1/2*a + 1/2]
-+ sage: K.S_units([]) # random
-+ [1/2*a + 1/2]
- sage: K.S_units([])[0].multiplicative_order()
- 6
-
-@@ -3940,14 +3940,13 @@
-
- sage: K.<a> = NumberField(x^3 - 381 * x + 127)
- sage: K._S_class_group_and_units(tuple(K.primes_above(13)))
-- ([-7/13*a^2 - 140/13*a + 36/13,
-- 14/13*a^2 + 267/13*a - 85/13,
-- 7/13*a^2 + 127/13*a - 49/13,
-+ ([2/13*a^2 + 1/13*a - 677/13,
-+ 1/13*a^2 + 7/13*a - 332/13,
-+ -1/13*a^2 + 6/13*a + 345/13,
- -1,
-- 1/13*a^2 - 19/13*a + 6/13,
-+ 2/13*a^2 + 1/13*a - 755/13,
- 1/13*a^2 - 19/13*a - 7/13],
-- [(Fractional ideal (11, a - 2), 2),
-- (Fractional ideal (19, 1/13*a^2 - 45/13*a - 332/13), 2)])
-+ [(Fractional ideal (11, a - 2), 2), (Fractional ideal (19, a + 7), 2)])
-
- Number fields defined by non-monic and non-integral
- polynomials are supported (:trac:`252`)::
-@@ -4066,13 +4065,13 @@
- sage: K.selmer_group([P2], 2)
- [2, -1]
- sage: K.selmer_group((P2,P3), 4)
-- [2, a + 1, -1]
-+ [2, -a - 1, -1]
- sage: K.selmer_group((P2,P3), 4, orders=True)
-- ([2, a + 1, -1], [4, 4, 2])
-+ ([2, -a - 1, -1], [4, 4, 2])
- sage: K.selmer_group([P2], 3)
- [2]
- sage: K.selmer_group([P2, P3], 3)
-- [2, a + 1]
-+ [2, -a - 1]
- sage: K.selmer_group([P2, P3, K.ideal(a)], 3) # random signs
- [2, a + 1, a]
-
-@@ -4093,14 +4092,21 @@
- sage: P3 = K.ideal(3, a+1)
- sage: P5 = K.ideal(a)
- sage: S = K.selmer_group([P2, P3, P5], 3)
-- sage: S == [2, a + 1, a] or S == [2, a + 1, -a]
-+ sage: S in ([2, a + 1, a], [2, a + 1, -a], [2, -a - 1, a], [2, -a - 1, -a]) or S
- True
-
- Verify that :trac:`14489` is fixed::
-
- sage: K.<a> = NumberField(x^3 - 381 * x + 127)
- sage: K.selmer_group(K.primes_above(13), 2)
-- [-7/13*a^2 - 140/13*a + 36/13, 14/13*a^2 + 267/13*a - 85/13, 7/13*a^2 + 127/13*a - 49/13, -1, 1/13*a^2 - 19/13*a + 6/13, 1/13*a^2 - 19/13*a - 7/13, 2/13*a^2 + 53/13*a - 92/13, 10/13*a^2 + 44/13*a - 4555/13]
-+ [2/13*a^2 + 1/13*a - 677/13,
-+ 1/13*a^2 + 7/13*a - 332/13,
-+ -1/13*a^2 + 6/13*a + 345/13,
-+ -1,
-+ 2/13*a^2 + 1/13*a - 755/13,
-+ 1/13*a^2 - 19/13*a - 7/13,
-+ 2/13*a^2 + 53/13*a - 92/13,
-+ 2/13*a^2 + 40/13*a - 27/13]
-
- Verify that :trac:`16708` is fixed::
-
-@@ -4182,7 +4188,7 @@
- sage: list(K.selmer_group_iterator([K.ideal(2, -a+1)], 2))
- [1, -1, 2, -2]
- sage: list(K.selmer_group_iterator([K.ideal(2, -a+1), K.ideal(3, a+1)], 2))
-- [1, -1, a + 1, -a - 1, 2, -2, 2*a + 2, -2*a - 2]
-+ [1, -1, -a - 1, a + 1, 2, -2, -2*a - 2, 2*a + 2]
-
- Examples over `\QQ` (as a number field)::
-
-@@ -4710,7 +4716,7 @@
- sage: K.elements_of_norm(3)
- []
- sage: K.elements_of_norm(50)
-- [-7*a + 1, -5*a - 5, 7*a + 1]
-+ [-7*a + 1, 5*a - 5, 7*a + 1]
-
- TESTS:
-
-@@ -5891,7 +5897,7 @@
- sage: A = x^4 - 10*x^3 + 20*5*x^2 - 15*5^2*x + 11*5^3
- sage: K = NumberField(A, 'a')
- sage: K.units()
-- (7/275*a^3 - 1/11*a^2 + 9/11*a + 2,)
-+ (1/275*a^3 + 4/55*a^2 - 5/11*a + 3,)
-
- For big number fields, provably computing the unit group can
- take a very long time. In this case, one can ask for the
-@@ -5976,8 +5982,8 @@
- Unit group with structure C10 x Z of Number Field in a with defining polynomial x^4 - 10*x^3 + 100*x^2 - 375*x + 1375
- sage: U.gens()
- (u0, u1)
-- sage: U.gens_values()
-- [-7/275*a^3 + 1/11*a^2 - 9/11*a - 1, 7/275*a^3 - 1/11*a^2 + 9/11*a + 2]
-+ sage: U.gens_values() # random
-+ [-1/275*a^3 + 7/55*a^2 - 6/11*a + 4, 1/275*a^3 + 4/55*a^2 - 5/11*a + 3]
- sage: U.invariants()
- (10, 0)
- sage: [u.multiplicative_order() for u in U.gens()]
-@@ -6046,8 +6052,8 @@
- S-unit group with structure C10 x Z x Z x Z of Number Field in a with defining polynomial x^4 - 10*x^3 + 100*x^2 - 375*x + 1375 with S = (Fractional ideal (5, 1/275*a^3 + 4/55*a^2 - 5/11*a + 5), Fractional ideal (11, 1/275*a^3 + 4/55*a^2 - 5/11*a + 9))
- sage: U.gens()
- (u0, u1, u2, u3)
-- sage: U.gens_values()
-- [-7/275*a^3 + 1/11*a^2 - 9/11*a - 1, 7/275*a^3 - 1/11*a^2 + 9/11*a + 2, 1/275*a^3 + 4/55*a^2 - 5/11*a + 5, -14/275*a^3 + 21/55*a^2 - 29/11*a + 6]
-+ sage: U.gens_values() # random
-+ [-1/275*a^3 + 7/55*a^2 - 6/11*a + 4, 1/275*a^3 + 4/55*a^2 - 5/11*a + 3, 1/275*a^3 + 4/55*a^2 - 5/11*a + 5, -14/275*a^3 + 21/55*a^2 - 29/11*a + 6]
- sage: U.invariants()
- (10, 0, 0, 0)
- sage: [u.multiplicative_order() for u in U.gens()]
-@@ -6291,19 +6297,14 @@
-
- OUTPUT: a primitive root of unity. No guarantee is made about
- which primitive root of unity this returns, not even for
-- cyclotomic fields.
-+ cyclotomic fields. Repeated calls of this function may return
-+ a different value.
-
- .. note::
-
- We do not create the full unit group since that can be
- expensive, but we do use it if it is already known.
-
-- ALGORITHM:
--
-- We use the PARI function :pari:`nfrootsof1` in all cases. This is
-- required (even for cyclotomic fields) in order to be consistent
-- with the full unit group, which is also computed by PARI.
--
- EXAMPLES::
-
- sage: K.<i> = NumberField(x^2+1)
-@@ -6344,12 +6345,12 @@
-
- Check for :trac:`15027`. We use a new variable name::
-
-- sage: K.<f> = QuadraticField(-3)
-+ sage: K.<f> = NumberField(x^2 + x + 1)
- sage: K.primitive_root_of_unity()
-- -1/2*f + 1/2
-+ f + 1
- sage: UK = K.unit_group()
- sage: K.primitive_root_of_unity()
-- -1/2*f + 1/2
-+ f + 1
-
- Number fields defined by non-monic and non-integral
- polynomials are supported (:trac:`252`)::
---- a/sage/src/sage/rings/number_field/number_field_element.pyx
-+++ b/sage/src/sage/rings/number_field/number_field_element.pyx
-@@ -1607,7 +1607,7 @@
- sage: t[0].norm(K)
- -a
- sage: t = K(3)._rnfisnorm(L); t
-- ((a^2 + 1)*b^3 - b^2 - a*b - a^2, -3*a^2 + 3*a - 3)
-+ (-b^3 - a*b^2 - a^2*b + 1, 3*a^2 - 3*a + 6)
- sage: t[0].norm(K)*t[1]
- 3
-
---- a/sage/src/sage/rings/number_field/number_field_ideal_rel.py
-+++ b/sage/src/sage/rings/number_field/number_field_ideal_rel.py
-@@ -506,7 +506,7 @@
- sage: K.<c> = F.extension(Y^2 - (1 + a)*(a + b)*a*b)
- sage: I = K.ideal(3, c)
- sage: J = I.ideal_below(); J
-- Fractional ideal (b)
-+ Fractional ideal (-b)
- sage: J.number_field() == F
- True
-
-@@ -535,12 +535,12 @@
-
- sage: K.<a, b> = QQ.extension([x^2 + 11, x^2 - 5])
- sage: K.factor(5)
-- (Fractional ideal (5, (1/4*b - 1/4)*a - 1/4*b - 3/4))^2 * (Fractional ideal (5, (1/4*b - 1/4)*a - 1/4*b - 7/4))^2
-+ (Fractional ideal (5, (-1/4*b - 1/4)*a + 1/4*b - 3/4))^2 * (Fractional ideal (5, (-1/4*b - 1/4)*a + 1/4*b - 7/4))^2
- sage: K.ideal(5).factor()
-- (Fractional ideal (5, (1/4*b - 1/4)*a - 1/4*b - 3/4))^2 * (Fractional ideal (5, (1/4*b - 1/4)*a - 1/4*b - 7/4))^2
-+ (Fractional ideal (5, (-1/4*b - 1/4)*a + 1/4*b - 3/4))^2 * (Fractional ideal (5, (-1/4*b - 1/4)*a + 1/4*b - 7/4))^2
- sage: K.ideal(5).prime_factors()
-- [Fractional ideal (5, (1/4*b - 1/4)*a - 1/4*b - 3/4),
-- Fractional ideal (5, (1/4*b - 1/4)*a - 1/4*b - 7/4)]
-+ [Fractional ideal (5, (-1/4*b - 1/4)*a + 1/4*b - 3/4),
-+ Fractional ideal (5, (-1/4*b - 1/4)*a + 1/4*b - 7/4)]
-
- sage: PQ.<X> = QQ[]
- sage: F.<a, b> = NumberFieldTower([X^2 - 2, X^2 - 3])
---- a/sage/src/sage/rings/number_field/number_field_rel.py
-+++ b/sage/src/sage/rings/number_field/number_field_rel.py
-@@ -1769,7 +1769,7 @@
-
- sage: K.<a, b> = NumberField( [x^2 + x + 1, x^4 + 1] )
- sage: K.roots_of_unity()[:5]
-- [b*a, -b^2*a - b^2, b^3, -a, b*a + b]
-+ [b*a + b, b^2*a, -b^3, a + 1, b*a]
- """
- abs = self.absolute_field('a')
- from_abs, _ = abs.structure()
---- a/sage/src/sage/rings/number_field/unit_group.py
-+++ b/sage/src/sage/rings/number_field/unit_group.py
-@@ -15,12 +15,12 @@
- sage: UK.gens_values() # random
- [-1/12*a^3 + 1/6*a, 1/24*a^3 + 1/4*a^2 - 1/12*a - 1]
- sage: UK.gen(0).value()
-- -1/12*a^3 + 1/6*a
-+ 1/12*a^3 - 1/6*a
-
- sage: UK.gen(0)
- u0
- sage: UK.gen(0) + K.one() # coerce abstract generator into number field
-- -1/12*a^3 + 1/6*a + 1
-+ 1/12*a^3 - 1/6*a + 1
-
- sage: [u.multiplicative_order() for u in UK.gens()]
- [4, +Infinity]
-@@ -37,18 +37,18 @@
- sage: UK(-1)
- u0^2
- sage: [UK(u) for u in (x^4-1).roots(K,multiplicities=False)]
-- [1, u0^2, u0^3, u0]
-+ [1, u0^2, u0, u0^3]
-
- sage: UK.fundamental_units() # random
- [1/24*a^3 + 1/4*a^2 - 1/12*a - 1]
- sage: torsion_gen = UK.torsion_generator(); torsion_gen
- u0
- sage: torsion_gen.value()
-- -1/12*a^3 + 1/6*a
-+ 1/12*a^3 - 1/6*a
- sage: UK.zeta_order()
- 4
- sage: UK.roots_of_unity()
-- [-1/12*a^3 + 1/6*a, -1, 1/12*a^3 - 1/6*a, 1]
-+ [1/12*a^3 - 1/6*a, -1, -1/12*a^3 + 1/6*a, 1]
-
- Exp and log functions provide maps between units as field elements and exponent
- vectors with respect to the generators::
-@@ -100,7 +100,30 @@
- sage: UL.zeta_order()
- 24
- sage: UL.roots_of_unity()
-- [b*a, -b^2*a - b^2, b^3, -a, b*a + b, -b^2, -b^3*a, -a - 1, b, b^2*a, -b^3*a - b^3, -1, -b*a, b^2*a + b^2, -b^3, a, -b*a - b, b^2, b^3*a, a + 1, -b, -b^2*a, b^3*a + b^3, 1]
-+ [-b*a,
-+ -b^2*a - b^2,
-+ -b^3,
-+ -a,
-+ -b*a - b,
-+ -b^2,
-+ b^3*a,
-+ -a - 1,
-+ -b,
-+ b^2*a,
-+ b^3*a + b^3,
-+ -1,
-+ b*a,
-+ b^2*a + b^2,
-+ b^3,
-+ a,
-+ b*a + b,
-+ b^2,
-+ -b^3*a,
-+ a + 1,
-+ b,
-+ -b^2*a,
-+ -b^3*a - b^3,
-+ 1]
-
- A relative extension example, which worked thanks to the code review by F.W.Clarke::
-
-@@ -229,7 +252,7 @@
- sage: UK.gens()
- (u,)
- sage: UK.gens_values()
-- [-1/2*a + 1/2]
-+ [1/2*a + 1/2]
-
- sage: K.<z> = CyclotomicField(13)
- sage: UK = K.unit_group(); UK
---- a/sage/src/sage/rings/polynomial/polynomial_quotient_ring.py
-+++ b/sage/src/sage/rings/polynomial/polynomial_quotient_ring.py
-@@ -1082,7 +1082,21 @@
- sage: R.<x> = K[]
- sage: S.<xbar> = R.quotient((x^2 + 23)*(x^2 + 31))
- sage: S.S_class_group([])
-- [((1/4*xbar^2 + 31/4, (-1/8*a + 1/8)*xbar^2 - 31/8*a + 31/8, 1/16*xbar^3 + 1/16*xbar^2 + 31/16*xbar + 31/16, -1/16*a*xbar^3 + (1/16*a + 1/8)*xbar^2 - 31/16*a*xbar + 31/16*a + 31/8), 6), ((-1/4*xbar^2 - 23/4, (1/8*a - 1/8)*xbar^2 + 23/8*a - 23/8, -1/16*xbar^3 - 1/16*xbar^2 - 23/16*xbar - 23/16, 1/16*a*xbar^3 + (-1/16*a - 1/8)*xbar^2 + 23/16*a*xbar - 23/16*a - 23/8), 6), ((-5/4*xbar^2 - 115/4, 5/4*a*xbar^2 + 115/4*a, -5/16*xbar^3 + 5/16*xbar^2 - 115/16*xbar + 115/16, 1/16*a*xb [...]
-+ [((1/4*xbar^2 + 31/4,
-+ (-1/8*a + 1/8)*xbar^2 - 31/8*a + 31/8,
-+ 1/16*xbar^3 + 1/16*xbar^2 + 31/16*xbar + 31/16,
-+ -1/16*a*xbar^3 + (1/16*a + 1/8)*xbar^2 - 31/16*a*xbar + 31/16*a + 31/8),
-+ 6),
-+ ((-1/4*xbar^2 - 23/4,
-+ (1/8*a - 1/8)*xbar^2 + 23/8*a - 23/8,
-+ -1/16*xbar^3 - 1/16*xbar^2 - 23/16*xbar - 23/16,
-+ 1/16*a*xbar^3 + (-1/16*a - 1/8)*xbar^2 + 23/16*a*xbar - 23/16*a - 23/8),
-+ 6),
-+ ((-5/4*xbar^2 - 115/4,
-+ 1/4*a*xbar^2 + 23/4*a,
-+ -1/16*xbar^3 - 7/16*xbar^2 - 23/16*xbar - 161/16,
-+ 1/16*a*xbar^3 - 1/16*a*xbar^2 + 23/16*a*xbar - 23/16*a),
-+ 2)]
-
- By using the ideal `(a)`, we cut the part of the class group coming from
- `x^2 + 31` from 12 to 2, i.e. we lose a generator of order 6 (this was
-@@ -1201,7 +1215,21 @@
- sage: R.<x> = K[]
- sage: S.<xbar> = R.quotient((x^2 + 23)*(x^2 + 31))
- sage: S.class_group()
-- [((1/4*xbar^2 + 31/4, (-1/8*a + 1/8)*xbar^2 - 31/8*a + 31/8, 1/16*xbar^3 + 1/16*xbar^2 + 31/16*xbar + 31/16, -1/16*a*xbar^3 + (1/16*a + 1/8)*xbar^2 - 31/16*a*xbar + 31/16*a + 31/8), 6), ((-1/4*xbar^2 - 23/4, (1/8*a - 1/8)*xbar^2 + 23/8*a - 23/8, -1/16*xbar^3 - 1/16*xbar^2 - 23/16*xbar - 23/16, 1/16*a*xbar^3 + (-1/16*a - 1/8)*xbar^2 + 23/16*a*xbar - 23/16*a - 23/8), 6), ((-5/4*xbar^2 - 115/4, 5/4*a*xbar^2 + 115/4*a, -5/16*xbar^3 + 5/16*xbar^2 - 115/16*xbar + 115/16, 1/16*a*xb [...]
-+ [((1/4*xbar^2 + 31/4,
-+ (-1/8*a + 1/8)*xbar^2 - 31/8*a + 31/8,
-+ 1/16*xbar^3 + 1/16*xbar^2 + 31/16*xbar + 31/16,
-+ -1/16*a*xbar^3 + (1/16*a + 1/8)*xbar^2 - 31/16*a*xbar + 31/16*a + 31/8),
-+ 6),
-+ ((-1/4*xbar^2 - 23/4,
-+ (1/8*a - 1/8)*xbar^2 + 23/8*a - 23/8,
-+ -1/16*xbar^3 - 1/16*xbar^2 - 23/16*xbar - 23/16,
-+ 1/16*a*xbar^3 + (-1/16*a - 1/8)*xbar^2 + 23/16*a*xbar - 23/16*a - 23/8),
-+ 6),
-+ ((-5/4*xbar^2 - 115/4,
-+ 1/4*a*xbar^2 + 23/4*a,
-+ -1/16*xbar^3 - 7/16*xbar^2 - 23/16*xbar - 161/16,
-+ 1/16*a*xbar^3 - 1/16*a*xbar^2 + 23/16*a*xbar - 23/16*a),
-+ 2)]
-
- Note that all the returned values live where we expect them to::
-
-@@ -1239,13 +1267,13 @@
- Unit group with structure C6 of Number Field in a with defining polynomial x^2 + 3
- sage: K.<a> = QQ['x'].quotient(x^2 + 3)
- sage: u,o = K.S_units([])[0]; u, o
-- (-1/2*a + 1/2, 6)
-+ (1/2*a + 1/2, 6)
- sage: u^6
- 1
- sage: u^3
- -1
- sage: u^2
-- -1/2*a - 1/2
-+ 1/2*a - 1/2
-
- ::
-
-@@ -1254,11 +1282,21 @@
- sage: L.<b> = K['y'].quotient(y^3 + 5); L
- Univariate Quotient Polynomial Ring in b over Number Field in a with defining polynomial x^2 + 3 with modulus y^3 + 5
- sage: L.S_units([])
-- [(-1/2*a + 1/2, 6), ((1/3*a - 1)*b^2 + 4/3*a*b + 5/6*a + 7/2, +Infinity), ((-1/3*a + 1)*b^2 + (2/3*a - 2)*b - 5/6*a + 7/2, +Infinity)]
-+ [(1/2*a + 1/2, 6),
-+ ((-1/3*a - 1)*b^2 - 4/3*a*b - 5/6*a + 7/2, +Infinity),
-+ (2/3*a*b^2 + (2/3*a - 2)*b - 5/6*a - 7/2, +Infinity)]
- sage: L.S_units([K.ideal(1/2*a - 3/2)])
-- [((-1/6*a - 1/2)*b^2 + (1/3*a - 1)*b + 4/3*a, +Infinity), (-1/2*a + 1/2, 6), ((1/3*a - 1)*b^2 + 4/3*a*b + 5/6*a + 7/2, +Infinity), ((-1/3*a + 1)*b^2 + (2/3*a - 2)*b - 5/6*a + 7/2, +Infinity)]
-+ [((-1/6*a - 1/2)*b^2 + (1/3*a - 1)*b + 4/3*a, +Infinity),
-+ (1/2*a + 1/2, 6),
-+ ((-1/3*a - 1)*b^2 - 4/3*a*b - 5/6*a + 7/2, +Infinity),
-+ (2/3*a*b^2 + (2/3*a - 2)*b - 5/6*a - 7/2, +Infinity)]
- sage: L.S_units([K.ideal(2)])
-- [((-1/2*a + 1/2)*b^2 + (-a - 1)*b - 3, +Infinity), ((-1/6*a - 1/2)*b^2 + (1/3*a - 1)*b + 5/6*a - 1/2, +Infinity), ((1/6*a + 1/2)*b^2 + (-1/3*a + 1)*b - 5/6*a - 1/2, +Infinity), (-1/2*a + 1/2, 6), ((1/3*a - 1)*b^2 + 4/3*a*b + 5/6*a + 7/2, +Infinity), ((-1/3*a + 1)*b^2 + (2/3*a - 2)*b - 5/6*a + 7/2, +Infinity)]
-+ [((1/2*a - 1/2)*b^2 + (a + 1)*b + 3, +Infinity),
-+ ((1/6*a + 1/2)*b^2 + (-1/3*a + 1)*b - 5/6*a + 1/2, +Infinity),
-+ ((1/6*a + 1/2)*b^2 + (-1/3*a + 1)*b - 5/6*a - 1/2, +Infinity),
-+ (1/2*a + 1/2, 6),
-+ ((-1/3*a - 1)*b^2 - 4/3*a*b - 5/6*a + 7/2, +Infinity),
-+ (2/3*a*b^2 + (2/3*a - 2)*b - 5/6*a - 7/2, +Infinity)]
-
- Note that all the returned values live where we expect them to::
-
-@@ -1316,13 +1354,13 @@
- Unit group with structure C6 of Number Field in a with defining polynomial x^2 + 3
- sage: K.<a> = QQ['x'].quotient(x^2 + 3)
- sage: u = K.units()[0][0]; u
-- -1/2*a + 1/2
-+ 1/2*a + 1/2
- sage: u^6
- 1
- sage: u^3
- -1
- sage: u^2
-- -1/2*a - 1/2
-+ 1/2*a - 1/2
- sage: K.<a> = QQ['x'].quotient(x^2 + 5)
- sage: K.units(())
- [(-1, 2)]
-@@ -1334,14 +1372,16 @@
- sage: L.<b> = K['y'].quotient(y^3 + 5); L
- Univariate Quotient Polynomial Ring in b over Number Field in a with defining polynomial x^2 + 3 with modulus y^3 + 5
- sage: L.units()
-- [(-1/2*a + 1/2, 6), ((1/3*a - 1)*b^2 + 4/3*a*b + 5/6*a + 7/2, +Infinity), ((-1/3*a + 1)*b^2 + (2/3*a - 2)*b - 5/6*a + 7/2, +Infinity)]
-+ [(1/2*a + 1/2, 6),
-+ ((-1/3*a - 1)*b^2 - 4/3*a*b - 5/6*a + 7/2, +Infinity),
-+ (2/3*a*b^2 + (2/3*a - 2)*b - 5/6*a - 7/2, +Infinity)]
- sage: L.<b> = K.extension(y^3 + 5)
- sage: L.unit_group()
- Unit group with structure C6 x Z x Z of Number Field in b with defining polynomial x^3 + 5 over its base field
- sage: L.unit_group().gens() # abstract generators
- (u0, u1, u2)
- sage: L.unit_group().gens_values()
-- [-1/2*a + 1/2, (1/3*a - 1)*b^2 + 4/3*a*b + 5/6*a + 7/2, (-1/3*a + 1)*b^2 + (2/3*a - 2)*b - 5/6*a + 7/2]
-+ [1/2*a + 1/2, (-1/3*a - 1)*b^2 - 4/3*a*b - 5/6*a + 7/2, 2/3*a*b^2 + (2/3*a - 2)*b - 5/6*a - 7/2]
-
- Note that all the returned values live where we expect them to::
-
-@@ -1388,15 +1428,15 @@
- sage: D.selmer_group([K.ideal(2, -a+1)], 2)
- [2, -1]
- sage: D.selmer_group([K.ideal(2, -a+1), K.ideal(3, a+1)], 2)
-- [2, -a - 1, -1]
-+ [2, a + 1, -1]
- sage: D.selmer_group((K.ideal(2, -a+1),K.ideal(3, a+1)), 4)
-- [2, -a - 1, -1]
-+ [2, a + 1, -1]
- sage: D.selmer_group([K.ideal(2, -a+1)], 3)
- [2]
- sage: D.selmer_group([K.ideal(2, -a+1), K.ideal(3, a+1)], 3)
-- [2, -a - 1]
-+ [2, a + 1]
- sage: D.selmer_group([K.ideal(2, -a+1), K.ideal(3, a+1), K.ideal(a)], 3)
-- [2, -a - 1, a]
-+ [2, a + 1, a]
-
- """
- fields, isos, iso_classes = self._S_decomposition(tuple(S))
---- a/sage/src/sage/schemes/elliptic_curves/ell_number_field.py
-+++ b/sage/src/sage/schemes/elliptic_curves/ell_number_field.py
-@@ -246,21 +246,19 @@
- C = Mod(y, y^2 + 7)
- <BLANKLINE>
- Computing L(S,2)
-- L(S,2) = [Mod(Mod(-1, y^2 + 7)*x^2 + Mod(-1/2*y + 1/2, y^2 + 7)*x + 1, x^3 + Mod(1, y^2 + 7)*x + Mod(y, y^2 + 7)), Mod(Mod(-1, y^2 + 7)*x^2 + Mod(-1/2*y - 1/2, y^2 + 7)*x + 1, x^3 + Mod(1, y^2 + 7)*x + Mod(y, y^2 + 7)), Mod(-1, x^3 + Mod(1, y^2 + 7)*x + Mod(y, y^2 + 7)), Mod(x^2 + 2, x^3 + Mod(1, y^2 + 7)*x + Mod(y, y^2 + 7)), Mod(Mod(1, y^2 + 7)*x + Mod(1/2*y + 3/2, y^2 + 7), x^3 + Mod(1, y^2 + 7)*x + Mod(y, y^2 + 7)), Mod(Mod(1, y^2 + 7)*x + Mod(1/2*y - 3/2, y^2 + 7), x^ [...]
-+ L(S,2) = [Mod(Mod(-1/2*y + 1/2, y^2 + 7)*x^2 + Mod(-1/2*y - 1/2, y^2 + 7)*x + Mod(-y - 1, y^2 + 7), x^3 + Mod(1, y^2 + 7)*x + Mod(y, y^2 + 7)), Mod(Mod(-1, y^2 + 7)*x^2 + Mod(-1/2*y - 1/2, y^2 + 7)*x + 1, x^3 + Mod(1, y^2 + 7)*x + Mod(y, y^2 + 7)), Mod(-1, x^3 + Mod(1, y^2 + 7)*x + Mod(y, y^2 + 7)), Mod(x^2 + 2, x^3 + Mod(1, y^2 + 7)*x + Mod(y, y^2 + 7)), Mod(Mod(1, y^2 + 7)*x + Mod(1/2*y + 3/2, y^2 + 7), x^3 + Mod(1, y^2 + 7)*x + Mod(y, y^2 + 7)), Mod(Mod(1, y^2 + 7)*x + [...]
- <BLANKLINE>
- Computing the Selmer group
- #LS2gen = 2
-- LS2gen = [Mod(Mod(-5, y^2 + 7)*x^2 + Mod(-3*y, y^2 + 7)*x + Mod(8, y^2 + 7), x^3 + Mod(1, y^2 + 7)*x + Mod(y, y^2 + 7)), Mod(Mod(1, y^2 + 7)*x^2 + Mod(1/2*y - 1/2, y^2 + 7)*x - 1, x^3 + Mod(1, y^2 + 7)*x + Mod(y, y^2 + 7))]
-+ LS2gen = [Mod(Mod(-1/2*y + 1/2, y^2 + 7)*x^2 + Mod(-1/2*y - 1/2, y^2 + 7)*x + Mod(-y - 1, y^2 + 7), x^3 + Mod(1, y^2 + 7)*x + Mod(y, y^2 + 7)), Mod(Mod(1, y^2 + 7)*x^2 + Mod(1/2*y + 1/2, y^2 + 7)*x - 1, x^3 + Mod(1, y^2 + 7)*x + Mod(y, y^2 + 7))]
- Search for trivial points on the curve
- Trivial points on the curve = [[Mod(1/2*y + 3/2, y^2 + 7), Mod(-y - 2, y^2 + 7)], [1, 1, 0], [Mod(1/2*y + 3/2, y^2 + 7), Mod(-y - 2, y^2 + 7), 1]]
-- zc = Mod(Mod(-5, y^2 + 7)*x^2 + Mod(-3*y, y^2 + 7)*x + Mod(8, y^2 + 7), x^3 + Mod(1, y^2 + 7)*x + Mod(y, y^2 + 7))
-- Hilbert symbol (Mod(2, y^2 + 7),Mod(-5, y^2 + 7)) =
-- zc = Mod(Mod(1, y^2 + 7)*x^2 + Mod(1/2*y - 1/2, y^2 + 7)*x + Mod(-1, y^2 + 7), x^3 + Mod(1, y^2 + 7)*x + Mod(y, y^2 + 7))
-- Hilbert symbol (Mod(-2*y + 2, y^2 + 7),Mod(1, y^2 + 7)) =
-- sol of quadratic equation = [1, 0, 1]~
-- zc*z1^2 = Mod(Mod(2*y - 2, y^2 + 7)*x + Mod(2*y + 10, y^2 + 7), x^3 + Mod(1, y^2 + 7)*x + Mod(y, y^2 + 7))
-- quartic: (-1/2*y + 1/2)*Y^2 = x^4 + (-3*y - 15)*x^2 + (-8*y - 16)*x + (-11/2*y - 15/2)
-- reduced: Y^2 = (-1/2*y + 1/2)*x^4 - 4*x^3 + (-3*y + 3)*x^2 + (2*y - 2)*x + (1/2*y + 3/2)
-+ zc = Mod(Mod(-1/2*y + 1/2, y^2 + 7)*x^2 + Mod(-1/2*y - 1/2, y^2 + 7)*x + Mod(-y - 1, y^2 + 7), x^3 + Mod(1, y^2 + 7)*x + Mod(y, y^2 + 7))
-+ Hilbert symbol (Mod(1, y^2 + 7),Mod(-2*y + 2, y^2 + 7)) =
-+ sol of quadratic equation = [1, 1, 0]~
-+ zc*z1^2 = Mod(Mod(4, y^2 + 7)*x + Mod(-2*y + 6, y^2 + 7), x^3 + Mod(1, y^2 + 7)*x + Mod(y, y^2 + 7))
-+ quartic: (-1)*Y^2 = x^4 + (3*y - 9)*x^2 + (-8*y + 16)*x + (9/2*y - 11/2)
-+ reduced: Y^2 = -x^4 + (-3*y + 9)*x^2 + (-8*y + 16)*x + (-9/2*y + 11/2)
- not ELS at [2, [0, 1]~, 1, 1, [1, -2; 1, 0]]
- zc = Mod(Mod(1, y^2 + 7)*x^2 + Mod(1/2*y + 1/2, y^2 + 7)*x + Mod(-1, y^2 + 7), x^3 + Mod(1, y^2 + 7)*x + Mod(y, y^2 + 7))
- comes from the trivial point [Mod(1/2*y + 3/2, y^2 + 7), Mod(-y - 2, y^2 + 7)]
-@@ -300,7 +298,10 @@
- sage: K = CyclotomicField(43).subfields(3)[0][0]
- sage: E = EllipticCurve(K, '37')
- sage: E.simon_two_descent() # long time (4s on sage.math, 2013)
-- (3, 3, [(0 : 0 : 1), (-1/4*zeta43_0^2 - 1/2*zeta43_0 + 3 : -3/8*zeta43_0^2 - 3/4*zeta43_0 + 4 : 1)])
-+ (3,
-+ 3,
-+ [(0 : 0 : 1),
-+ (-1/2*zeta43_0^2 - 1/2*zeta43_0 + 7 : -3/2*zeta43_0^2 - 5/2*zeta43_0 + 18 : 1)])
- """
- verbose = int(verbose)
- if known_points is None:
-@@ -2465,8 +2466,9 @@
- sage: E = EllipticCurve(K, [1, 0, 5*y^2 + 16, 0, 0])
- sage: E.gens(lim1=1, lim3=1)
- []
-- sage: E.rank(), E.gens() # long time (about 3 s)
-- (1, [(9/25*y^2 + 26/25 : -229/125*y^3 - 67/25*y^2 - 731/125*y - 213/25 : 1)])
-+ sage: E.rank(), E.gens(lim3=12) # long time (about 4s)
-+ (1,
-+ [(369/25*y^3 + 539/25*y^2 + 1178/25*y + 1718/25 : -29038/125*y^3 - 43003/125*y^2 - 92706/125*y - 137286/125 : 1)])
-
- Here is a curve of rank 2, yet the list contains many points::
-
---- a/sage/src/sage/schemes/elliptic_curves/ell_rational_field.py
-+++ b/sage/src/sage/schemes/elliptic_curves/ell_rational_field.py
-@@ -1805,7 +1805,7 @@
- sage: E = EllipticCurve('389a1')
- sage: E._known_points = [] # clear cached points
- sage: E.simon_two_descent()
-- (2, 2, [(5/4 : 5/8 : 1), (-3/4 : 7/8 : 1)])
-+ (2, 2, [(1 : 0 : 1), (-11/9 : 28/27 : 1)])
- sage: E = EllipticCurve('5077a1')
- sage: E.simon_two_descent()
- (3, 3, [(1 : 0 : 1), (2 : 0 : 1), (0 : 2 : 1)])
-@@ -1829,7 +1829,7 @@
- (4, 4, [(6 : -1 : 1), (4 : 3 : 1), (5 : -2 : 1), (8 : 7 : 1)])
- sage: E = EllipticCurve([0, 0, 1, -79, 342])
- sage: E.simon_two_descent() # long time (9s on sage.math, 2011)
-- (5, 5, [(7 : 11 : 1), (-1 : 20 : 1), (0 : 18 : 1), (3 : 11 : 1), (-3 : 23 : 1)])
-+ (5, 5, [(5 : 8 : 1), (10 : 23 : 1), (3 : 11 : 1), (-3 : 23 : 1), (0 : 18 : 1)])
- sage: E = EllipticCurve([1, 1, 0, -2582, 48720])
- sage: r, s, G = E.simon_two_descent(); r,s
- (6, 6)
---- a/sage/src/sage/schemes/elliptic_curves/gp_simon.py
-+++ b/sage/src/sage/schemes/elliptic_curves/gp_simon.py
-@@ -57,7 +57,7 @@
- sage: import sage.schemes.elliptic_curves.gp_simon
- sage: E=EllipticCurve('389a1')
- sage: sage.schemes.elliptic_curves.gp_simon.simon_two_descent(E)
-- (2, 2, [(5/4 : 5/8 : 1), (-3/4 : 7/8 : 1)])
-+ (2, 2, [(1 : 0 : 1), (-11/9 : 28/27 : 1)])
-
- TESTS::
-
---- a/sage/src/sage/schemes/elliptic_curves/period_lattice.py
-+++ b/sage/src/sage/schemes/elliptic_curves/period_lattice.py
-@@ -1559,7 +1559,7 @@
-
- TESTS:
-
-- (see :trac:`10026` and :trac:`11767`)::
-+ See :trac:`10026` and :trac:`11767`::
-
- sage: K.<w> = QuadraticField(2)
- sage: E = EllipticCurve([ 0, -1, 1, -3*w -4, 3*w + 4 ])
-@@ -1567,7 +1567,7 @@
- sage: P,Q = T[2]
- sage: embs = K.embeddings(CC)
- sage: Lambda = E.period_lattice(embs[0])
-- sage: Lambda.elliptic_logarithm(P,100)
-+ sage: Lambda.elliptic_logarithm(P+3*Q, 100)
- 4.7100131126199672766973600998
- sage: R.<x> = QQ[]
- sage: K.<a> = NumberField(x^2 + x + 5)
diff --git a/debian/patches/u0-version-pynac-0.7.4.patch b/debian/patches/u0-version-pynac-0.7.4.patch
deleted file mode 100644
index 1320f6f..0000000
--- a/debian/patches/u0-version-pynac-0.7.4.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From a178a75b2cda70c50544e13400327be23e1fe7e9 Mon Sep 17 00:00:00 2001
-From: Ralf Stephan <ralf at ark.in-berlin.de>
-Date: Fri, 20 Jan 2017 17:23:18 +0100
-Subject: 22219: doctest fixes
-
----
- src/sage/calculus/wester.py | 4 ++++
- src/sage/libs/pynac/pynac.pyx | 4 ++--
- src/sage/symbolic/expression.pyx | 2 +-
- src/sage/symbolic/function.pyx | 2 +-
- 4 files changed, 8 insertions(+), 4 deletions(-)
-
---- a/sage/src/sage/calculus/wester.py
-+++ b/sage/src/sage/calculus/wester.py
-@@ -508,7 +508,11 @@
- sage: # (OK-ish) D(x)Abs(x)
- sage: # Verify(D(x) Abs(x), Sign(x));
- sage: diff(abs(x))
-+ 1/2*(x + conjugate(x))/abs(x)
-+ sage: _ = var('x', domain='real')
-+ sage: diff(abs(x))
- x/abs(x)
-+ sage: forget()
-
- ::
-
---- a/sage/src/sage/libs/pynac/pynac.pyx
-+++ b/sage/src/sage/libs/pynac/pynac.pyx
-@@ -1506,7 +1506,7 @@
- sage: sin(2.*I)
- 3.62686040784702*I
- sage: sin(QQbar(I))
-- 1.17520119364380*I
-+ sin(I)
- """
- try:
- return x.sin()
-@@ -1528,7 +1528,7 @@
- sage: cos(2.*I)
- 3.76219569108363
- sage: cos(QQbar(I))
-- 1.54308063481524
-+ cos(I)
- """
- try:
- return x.cos()
---- a/sage/src/sage/symbolic/expression.pyx
-+++ b/sage/src/sage/symbolic/expression.pyx
-@@ -4354,7 +4354,7 @@
- sage: x,y = var('x,y', domain='real')
- sage: p,q = var('p,q', domain='positive')
- sage: (c/2*(5*(3*a*b*x*y*p*q)^2)^(7/2*c)).expand()
-- 1/2*45^(7/2*c)*(a^2*b^2)^(7/2*c)*c*p^(7*c)*q^(7*c)*(x^2)^(7/2*c)*(y^2)^(7/2*c)
-+ 1/2*45^(7/2*c)*(a^2*b^2*x^2*y^2)^(7/2*c)*c*p^(7*c)*q^(7*c)
- sage: ((-(-a*x*p)^3*(b*y*p)^3)^(c/2)).expand()
- (a^3*b^3*x^3*y^3)^(1/2*c)*p^(3*c)
- sage: x,y,p,q = var('x,y,p,q', domain='complex')
---- a/sage/src/sage/symbolic/function.pyx
-+++ b/sage/src/sage/symbolic/function.pyx
-@@ -395,7 +395,7 @@
- ...
- TypeError: cannot coerce arguments: ...
- sage: exp(QQbar(I))
-- 0.540302305868140 + 0.841470984807897*I
-+ e^I
-
- For functions with single argument, if coercion fails we try to call
- a method with the name of the function on the object::
diff --git a/debian/patches/u0-version-singular-4.1.0p2.patch b/debian/patches/u0-version-singular-4.1.0p2.patch
index f9536ff..ba61ff9 100644
--- a/debian/patches/u0-version-singular-4.1.0p2.patch
+++ b/debian/patches/u0-version-singular-4.1.0p2.patch
@@ -50,7 +50,7 @@ Subject: Further doctest changes.
--- a/sage/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
+++ b/sage/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
-@@ -591,7 +591,7 @@
+@@ -594,7 +594,7 @@
sage: P._singular_()
polynomial ring, over a field, global ordering
@@ -59,7 +59,7 @@ Subject: Further doctest changes.
// number of vars : 3
// block 1 : ordering dp
// : names x y z
-@@ -1179,7 +1179,7 @@
+@@ -1182,7 +1182,7 @@
sage: P.<x,y,z> = QQ[]
sage: P._singular_()
polynomial ring, over a field, global ordering
@@ -68,7 +68,7 @@ Subject: Further doctest changes.
// number of vars : 3
// block 1 : ordering dp
// : names x y z
-@@ -1195,9 +1195,7 @@
+@@ -1198,9 +1198,7 @@
sage: P.<x,y,z> = PolynomialRing(k,3)
sage: P._singular_()
polynomial ring, over a field, global ordering
@@ -79,7 +79,7 @@ Subject: Further doctest changes.
// number of vars : 3
// block 1 : ordering dp
// : names x y z
-@@ -1213,7 +1211,7 @@
+@@ -1216,7 +1214,7 @@
sage: P.<x> = QQ[]
sage: P._singular_()
polynomial ring, over a field, global ordering
@@ -88,7 +88,7 @@ Subject: Further doctest changes.
// number of vars : 1
// block 1 : ordering lp
// : names x
-@@ -1253,7 +1251,7 @@
+@@ -1256,7 +1254,7 @@
sage: P.<x,y,z> = QQ[]
sage: P._singular_init_()
polynomial ring, over a field, global ordering
@@ -97,7 +97,7 @@ Subject: Further doctest changes.
// number of vars : 3
// block 1 : ordering dp
// : names x y z
-@@ -1268,9 +1266,7 @@
+@@ -1271,9 +1269,7 @@
sage: R.<x,y> = PolynomialRing(NumberField(w^2+1,'s'))
sage: singular(R)
polynomial ring, over a field, global ordering
@@ -108,7 +108,7 @@ Subject: Further doctest changes.
// number of vars : 2
// block 1 : ordering dp
// : names x y
-@@ -1279,9 +1275,7 @@
+@@ -1282,9 +1278,7 @@
sage: R = PolynomialRing(GF(2**8,'a'),10,'x', order='invlex')
sage: singular(R)
polynomial ring, over a field, global ordering
@@ -119,7 +119,7 @@ Subject: Further doctest changes.
// number of vars : 10
// block 1 : ordering rp
// : names x0 x1 x2 x3 x4 x5 x6 x7 x8 x9
-@@ -1290,7 +1284,7 @@
+@@ -1293,7 +1287,7 @@
sage: R = PolynomialRing(GF(127),2,'x', order='invlex')
sage: singular(R)
polynomial ring, over a field, global ordering
@@ -128,7 +128,7 @@ Subject: Further doctest changes.
// number of vars : 2
// block 1 : ordering rp
// : names x0 x1
-@@ -1299,7 +1293,7 @@
+@@ -1302,7 +1296,7 @@
sage: R = PolynomialRing(QQ,2,'x', order='invlex')
sage: singular(R)
polynomial ring, over a field, global ordering
@@ -137,7 +137,7 @@ Subject: Further doctest changes.
// number of vars : 2
// block 1 : ordering rp
// : names x0 x1
-@@ -1308,7 +1302,7 @@
+@@ -1311,7 +1305,7 @@
sage: R = PolynomialRing(QQ,2,'x', order='degneglex')
sage: singular(R)
polynomial ring, over a field, global ordering
@@ -146,7 +146,7 @@ Subject: Further doctest changes.
// number of vars : 2
// block 1 : ordering a
// : names x0 x1
-@@ -1320,7 +1314,7 @@
+@@ -1323,7 +1317,7 @@
sage: R = PolynomialRing(QQ,'x')
sage: singular(R)
polynomial ring, over a field, global ordering
@@ -155,7 +155,7 @@ Subject: Further doctest changes.
// number of vars : 1
// block 1 : ordering lp
// : names x
-@@ -1329,7 +1323,7 @@
+@@ -1332,7 +1326,7 @@
sage: R = PolynomialRing(GF(127),'x')
sage: singular(R)
polynomial ring, over a field, global ordering
@@ -164,7 +164,7 @@ Subject: Further doctest changes.
// number of vars : 1
// block 1 : ordering lp
// : names x
-@@ -1338,7 +1332,7 @@
+@@ -1341,7 +1335,7 @@
sage: R = ZZ['x,y']
sage: singular(R)
polynomial ring, over a domain, global ordering
@@ -173,7 +173,7 @@ Subject: Further doctest changes.
// number of vars : 2
// block 1 : ordering dp
// : names x y
-@@ -1347,7 +1341,7 @@
+@@ -1350,7 +1344,7 @@
sage: R = IntegerModRing(1024)['x,y']
sage: singular(R)
polynomial ring, over a ring (with zero-divisors), global ordering
@@ -182,7 +182,7 @@ Subject: Further doctest changes.
// number of vars : 2
// block 1 : ordering dp
// : names x y
-@@ -1356,7 +1350,7 @@
+@@ -1359,7 +1353,7 @@
sage: R = IntegerModRing(15)['x,y']
sage: singular(R)
polynomial ring, over a ring (with zero-divisors), global ordering
@@ -191,7 +191,7 @@ Subject: Further doctest changes.
// number of vars : 2
// block 1 : ordering dp
// : names x y
-@@ -1367,7 +1361,7 @@
+@@ -1370,7 +1364,7 @@
sage: P.<x> = QQ[]
sage: P._singular_init_()
polynomial ring, over a field, global ordering
@@ -202,7 +202,7 @@ Subject: Further doctest changes.
// : names x
--- a/sage/src/sage/rings/polynomial/polynomial_quotient_ring.py
+++ b/sage/src/sage/rings/polynomial/polynomial_quotient_ring.py
-@@ -601,7 +601,7 @@
+@@ -612,7 +612,7 @@
sage: Q = P.quo([(x^2+1)])
sage: singular(Q) # indirect doctest
polynomial ring, over a field, global ordering
@@ -382,7 +382,7 @@ Subject: Further doctest changes.
// : names x y
--- a/sage/src/sage/rings/polynomial/multi_polynomial_element.py
+++ b/sage/src/sage/rings/polynomial/multi_polynomial_element.py
-@@ -1997,7 +1997,7 @@
+@@ -1994,7 +1994,7 @@
::
sage: r = f/g; r
@@ -402,7 +402,7 @@ Subject: Further doctest changes.
Modulo any other prime the Groebner basis is trivial so there are
no other solutions. For example::
-@@ -3644,11 +3644,13 @@
+@@ -3645,11 +3645,13 @@
sage: P.<a,b,c> = PolynomialRing(Zmod(1000),3)
sage: I = P * (a + 2*b + 2*c - 1, a^2 - a + 2*b^2 + 2*c^2, 2*a*b + 2*b*c - b)
sage: I.groebner_basis()
@@ -421,7 +421,7 @@ Subject: Further doctest changes.
--- a/sage/src/sage/rings/polynomial/pbori.pyx
+++ b/sage/src/sage/rings/polynomial/pbori.pyx
-@@ -1371,7 +1371,7 @@
+@@ -1410,7 +1410,7 @@
sage: B.<x,y> = BooleanPolynomialRing(2)
sage: B._singular_() # indirect doctest
polynomial ring, over a field, global ordering
@@ -576,7 +576,7 @@ Subject: Further doctest changes.
// : names t
--- a/sage/src/sage/interfaces/expect.py
+++ b/sage/src/sage/interfaces/expect.py
-@@ -1213,7 +1213,7 @@
+@@ -1216,7 +1216,7 @@
sage: R.<x> = QQ[]; f = x^3 + x + 1; g = x^3 - x - 1; r = f.resultant(g); gap(ZZ); singular(R)
Integers
polynomial ring, over a field, global ordering
@@ -587,7 +587,7 @@ Subject: Further doctest changes.
// : names x
--- a/sage/src/sage/interfaces/interface.py
+++ b/sage/src/sage/interfaces/interface.py
-@@ -734,7 +734,7 @@
+@@ -735,7 +735,7 @@
sage: S = singular.ring(0, ('x'))
sage: loads(dumps(S))
polynomial ring, over a field, global ordering
diff --git a/debian/patches/u1-fix-proper-scipy-rtol.patch b/debian/patches/u1-fix-proper-scipy-rtol.patch
index b282c35..b743313 100644
--- a/debian/patches/u1-fix-proper-scipy-rtol.patch
+++ b/debian/patches/u1-fix-proper-scipy-rtol.patch
@@ -8,7 +8,7 @@ Forwarded: Bug: https://trac.sagemath.org/ticket/22439
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- a/sage/src/sage/numerical/optimize.py
+++ b/sage/src/sage/numerical/optimize.py
-@@ -15,8 +15,11 @@
+@@ -16,8 +16,11 @@
from sage.modules.free_module_element import vector
from sage.rings.real_double import RDF
@@ -23,7 +23,7 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
(or `[b,a]`) if possible, where ``f`` is a function in the one variable.
--- a/sage/src/sage/symbolic/expression.pyx
+++ b/sage/src/sage/symbolic/expression.pyx
-@@ -11012,7 +11012,7 @@
+@@ -11118,7 +11118,7 @@
ret = ret[0]
return ret
@@ -32,7 +32,7 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
"""
Numerically find a root of self on the closed interval [a,b] (or
[b,a]) if possible, where self is a function in the one variable.
-@@ -11128,7 +11128,7 @@
+@@ -11234,7 +11234,7 @@
"""
if is_a_relational(self._gobj) and self.operator() is not operator.eq:
raise ValueError("Symbolic equation must be an equality.")
@@ -41,7 +41,7 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
if self.number_of_arguments() == 0:
if bool(self == 0):
return a
-@@ -11137,7 +11137,7 @@
+@@ -11243,7 +11243,7 @@
elif self.number_of_arguments() == 1:
f = self._fast_float_(self.default_variable())
return find_root(f, a=a, b=b, xtol=xtol,
diff --git a/debian/patches/u1-fix-use-lexists-not-exists.patch b/debian/patches/u1-fix-use-lexists-not-exists.patch
index ebf7407..3a08a27 100644
--- a/debian/patches/u1-fix-use-lexists-not-exists.patch
+++ b/debian/patches/u1-fix-use-lexists-not-exists.patch
@@ -6,7 +6,7 @@ Bug: https://trac.sagemath.org/ticket/22438
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- a/sage/src/sage_setup/docbuild/ext/multidocs.py
+++ b/sage/src/sage_setup/docbuild/ext/multidocs.py
-@@ -283,7 +283,7 @@
+@@ -284,7 +284,7 @@
app.builder.info(bold('linking _static directory.'))
static_dir = os.path.join(app.builder.outdir, '_static')
master_static_dir = os.path.join('..', '_static')
diff --git a/debian/patches/u1-version-ecm-7.patch b/debian/patches/u1-version-ecm-7.patch
index e508226..2702240 100644
--- a/debian/patches/u1-version-ecm-7.patch
+++ b/debian/patches/u1-version-ecm-7.patch
@@ -4,7 +4,7 @@ Bug: https://trac.sagemath.org/ticket/20385
--- a/sage/src/sage/interfaces/ecm.py
+++ b/sage/src/sage/interfaces/ecm.py
-@@ -140,9 +140,6 @@
+@@ -141,9 +141,6 @@
- ``ve`` -- integer `n`. Verbosely show short (`< n`
character) expressions on each loop
@@ -14,7 +14,7 @@ Bug: https://trac.sagemath.org/ticket/20385
- ``B2scale`` -- integer. Multiplies the default B2 value
- ``go`` -- integer. Preload with group order val, which can
-@@ -395,15 +392,15 @@
+@@ -396,15 +393,15 @@
if m is not None:
factor = m.group('factor')
primality = m.group('primality')
@@ -34,7 +34,7 @@ Bug: https://trac.sagemath.org/ticket/20385
# assert len(result) == 2
return result
raise ValueError('failed to parse ECM output')
-@@ -500,7 +497,6 @@
+@@ -501,7 +498,6 @@
if factor_digits is not None:
B1 = self.recommended_B1(factor_digits)
kwds['one'] = True
@@ -42,7 +42,7 @@ Bug: https://trac.sagemath.org/ticket/20385
cmd = self._make_cmd(B1, None, kwds)
out = self._run_ecm(cmd, n)
return self._parse_output(n, out)
-@@ -832,8 +828,8 @@
+@@ -833,8 +829,8 @@
Step 1 took 12ms
Step 2 took 17ms
********** Factor found in step 2: 79792266297612017
@@ -53,7 +53,7 @@ Bug: https://trac.sagemath.org/ticket/20385
"""
TEST_ECM_OUTPUT_2 = """
-@@ -843,8 +839,8 @@
+@@ -844,8 +840,8 @@
Step 1 took 2ms
Step 2 took 3ms
********** Factor found in step 2: 179424673
@@ -64,7 +64,7 @@ Bug: https://trac.sagemath.org/ticket/20385
"""
TEST_ECM_OUTPUT_3 = """
-@@ -862,7 +858,7 @@
+@@ -863,7 +859,7 @@
Step 1 took 5ms
Step 2 took 4ms
********** Factor found in step 2: 197002597249
@@ -73,7 +73,7 @@ Bug: https://trac.sagemath.org/ticket/20385
Composite cofactor 339872432034468861533158743041639097889948066859 has 48 digits
"""
-@@ -874,5 +870,5 @@
+@@ -875,5 +871,5 @@
Step 2 took 2ms
********** Factor found in step 2: 265748496095531068869578877937
Found composite factor of 30 digits: 265748496095531068869578877937
diff --git a/debian/patches/u1-version-pbori-boost1.62-hashes.patch b/debian/patches/u1-version-pbori-boost1.62-hashes.patch
index c6c58ea..4d8a34f 100644
--- a/debian/patches/u1-version-pbori-boost1.62-hashes.patch
+++ b/debian/patches/u1-version-pbori-boost1.62-hashes.patch
@@ -11,7 +11,7 @@ Forwarded: https://trac.sagemath.org/ticket/22243
--- a/sage/src/sage/rings/polynomial/pbori.pyx
+++ b/sage/src/sage/rings/polynomial/pbori.pyx
-@@ -2340,8 +2340,8 @@
+@@ -2378,8 +2378,8 @@
sage: B.<x,y> = BooleanPolynomialRing()
sage: m = x.lm()
sage: m.stable_hash()
@@ -22,7 +22,7 @@ Forwarded: https://trac.sagemath.org/ticket/22243
.. NOTE::
-@@ -4648,8 +4648,8 @@
+@@ -4652,8 +4652,8 @@
sage: B.<x,y> = BooleanPolynomialRing()
sage: x.stable_hash()
@@ -33,7 +33,7 @@ Forwarded: https://trac.sagemath.org/ticket/22243
.. NOTE::
-@@ -5732,8 +5732,8 @@
+@@ -5747,8 +5747,8 @@
sage: B.<x,y> = BooleanPolynomialRing()
sage: s = x.set()
sage: s.stable_hash()
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/sagemath.git
More information about the debian-science-commits
mailing list