diff options
author | Antonio Rojas | 2019-08-04 17:43:07 +0000 |
---|---|---|
committer | Antonio Rojas | 2019-08-04 17:43:07 +0000 |
commit | 5ccaaada02b67a2be034df25948762bbfcccff50 (patch) | |
tree | 6a8469843e44c0f36129958394eb71bd2cc3dd27 | |
parent | d61282b6e9770852a19e584ea7f1d8f9a9434d0e (diff) | |
download | aur-5ccaaada02b67a2be034df25948762bbfcccff50.tar.gz |
Drop merged patches
-rw-r--r-- | .SRCINFO | 3 | ||||
-rw-r--r-- | PKGBUILD | 11 | ||||
-rw-r--r-- | meataxe-tables.patch | 34 | ||||
-rw-r--r-- | no-sage-env.patch | 302 | ||||
-rw-r--r-- | sagemath-linbox-1.6.patch | 774 | ||||
-rw-r--r-- | sagemath-threejs.patch | 11 |
6 files changed, 1 insertions, 1134 deletions
@@ -104,9 +104,6 @@ pkgbase = sagemath-git source = sagemath-cremona.patch source = sagemath-singular-4.1.2.patch source = sagemath-ecl-sigfpe.patch - source = sagemath-linbox-1.6.patch - source = meataxe-tables.patch - source = no-sage-env.patch sha256sums = SKIP sha256sums = 328e45e78065b5f6527174bda48cfff6828acbf107c2535b0a9a92c3ceb35842 sha256sums = 1a82372a96ffd5e6d475b0e620935967ce5eb9b4484607d39da90824a77b07c4 @@ -42,10 +42,7 @@ source=(git://git.sagemath.org/sage.git#branch=develop fes02.patch sagemath-cremona.patch sagemath-singular-4.1.2.patch - sagemath-ecl-sigfpe.patch - sagemath-linbox-1.6.patch - meataxe-tables.patch - no-sage-env.patch) + sagemath-ecl-sigfpe.patch) sha256sums=('SKIP' '328e45e78065b5f6527174bda48cfff6828acbf107c2535b0a9a92c3ceb35842' '1a82372a96ffd5e6d475b0e620935967ce5eb9b4484607d39da90824a77b07c4' @@ -86,12 +83,6 @@ prepare(){ patch -p1 -i ../sagemath-singular-4.1.2.patch # Fix SIGFPE crashes with ecl 16.1.3 https://trac.sagemath.org/ticket/22191 patch -p1 -i ../sagemath-ecl-sigfpe.patch -# fix build with linbox 1.6 https://trac.sagemath.org/ticket/26932 - patch -p1 -i ../sagemath-linbox-1.6.patch -# use meataxe package's multiplication tables instead of generating them at runtime https://trac.sagemath.org/ticket/28188 - patch -p1 -i ../meataxe-tables.patch -# make sage work without sage-env https://trac.sagemath.org/ticket/28225 - patch -p1 -i ../no-sage-env.patch # use python2 sed -e 's|sage-python23|python2|' -e 's|#!/usr/bin/env python\b|#!/usr/bin/env python2|' -i src/bin/* diff --git a/meataxe-tables.patch b/meataxe-tables.patch deleted file mode 100644 index 57d42c35219f..000000000000 --- a/meataxe-tables.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff --git a/src/sage/env.py b/src/sage/env.py -index 27dd40c..453ccd7 100644 ---- a/src/sage/env.py -+++ b/src/sage/env.py -@@ -182,6 +182,7 @@ var('CREMONA_LARGE_DATA_DIR', join(SAGE_SHARE, 'cremona')) - var('JMOL_DIR', join(SAGE_SHARE, 'jmol')) - var('JSMOL_DIR', join(SAGE_SHARE, 'jsmol')) - var('MATHJAX_DIR', join(SAGE_SHARE, 'mathjax')) -+var('MTXLIB', join(SAGE_SHARE, 'meataxe')) - var('THREEJS_DIR', join(SAGE_SHARE, 'threejs')) - var('PPLPY_DOCS', join(SAGE_SHARE, 'doc', 'pplpy')) - var('MAXIMA_FAS') -diff --git a/src/sage/libs/meataxe.pyx b/src/sage/libs/meataxe.pyx -index 1120600..7549e55 100644 ---- a/src/sage/libs/meataxe.pyx -+++ b/src/sage/libs/meataxe.pyx -@@ -68,7 +68,6 @@ cdef Matrix_t *rawMatrix(int Field, list entries) except NULL: - - from sage.cpython.string cimport str_to_bytes, char_to_str - import os --from sage.env import DOT_SAGE - - cdef void sage_meataxe_error_handler(const MtxErrorRecord_t *err): - sig_block() -@@ -82,7 +81,8 @@ cdef inline meataxe_init(): - ## Assign to a variable that enables MeatAxe to find - ## its multiplication tables. - global MtxLibDir -- mtxdir = str_to_bytes(os.path.join(DOT_SAGE, 'meataxe')) -+ from sage import env -+ mtxdir = str_to_bytes(env.MTXLIB) - if len(mtxdir) >= 1024: - raise RuntimeError(f"the path for the meataxe library {mtxdir!r} is too long, it needs to be of length < 1024") - MtxLibDir[:len(mtxdir)] = mtxdir diff --git a/no-sage-env.patch b/no-sage-env.patch deleted file mode 100644 index d276250064e4..000000000000 --- a/no-sage-env.patch +++ /dev/null @@ -1,302 +0,0 @@ -diff --git a/src/bin/sage b/src/bin/sage -index abb11d3..20b1303 100755 ---- a/src/bin/sage -+++ b/src/bin/sage -@@ -4,8 +4,8 @@ - # usage: sage_version [-v] - # -v display the full version banner including release date - sage_version() { -- if [ -f "$SAGE_LOCAL/bin/sage-version.sh" ]; then -- . "$SAGE_LOCAL/bin/sage-version.sh" -+ if [ -f "$0-version.sh" ]; then -+ . "$0-version.sh" - else - . "$SAGE_ROOT/src/bin/sage-version.sh" - fi -@@ -430,18 +430,23 @@ fi - # append -env to that). We redirect stdout to stderr, which is safer - # for scripts. - ##################################################################### --. "$0-env" >&2 --if [ $? -ne 0 ]; then -- echo >&2 "Error setting environment variables by sourcing '$0-env';" -- echo >&2 "possibly contact sage-devel (see http://groups.google.com/group/sage-devel)." -- exit 1 -+if [ -f "$0-env" ]; then -+ . "$0-env" >&2 -+ if [ $? -ne 0 ]; then -+ echo >&2 "Error setting environment variables by sourcing '$0-env';" -+ echo >&2 "possibly contact sage-devel (see http://groups.google.com/group/sage-devel)." -+ exit 1 -+ fi - fi - -+if [ -z "$DOT_SAGE" ]; then -+ export DOT_SAGE="$HOME/.sage" -+fi - - # Prepare for running Sage, either interactively or non-interactively. - sage_setup() { - # Check that we're not in a source tarball which hasn't been built yet (#13561). -- if [ ! -x "$SAGE_LOCAL/bin/sage" ]; then -+ if [ ! -z "$SAGE_LOCAL" ] && [ ! -x "$SAGE_LOCAL/bin/sage" ]; then - echo >&2 '************************************************************************' - echo >&2 'It seems that you are attempting to run Sage from an unpacked source' - echo >&2 'tarball, but you have not compiled it yet (or maybe the build has not' -@@ -1038,13 +1043,13 @@ if [ "$1" = '-gdb' -o "$1" = "--gdb" ]; then - shift - sage_setup - if [ "$SAGE_DEBUG" = "no" ]; then -- gdb -x "$SAGE_LOCAL/bin/sage-gdb-commands" \ -- -args python "$SAGE_LOCAL/bin/sage-ipython" "$@" -i -+ gdb -x "$0-gdb-commands" \ -+ -args python "$0-ipython" "$@" -i - else - sage_dir=$(sage-python23 -c 'import os, sage; print(os.path.dirname(sage.__file__))') - cygdb "$sage_dir" "$SAGE_SRC/sage" \ -- -- -x "$SAGE_LOCAL/bin/sage-gdb-commands" \ -- -args python "$SAGE_LOCAL/bin/sage-ipython" "$@" -i -+ -- -x "$0-gdb-commands" \ -+ -args python "$0-ipython" "$@" -i - fi - exit $? - fi -diff --git a/src/bin/sage-cachegrind b/src/bin/sage-cachegrind -index f77c2a2..41b4948 100755 ---- a/src/bin/sage-cachegrind -+++ b/src/bin/sage-cachegrind -@@ -1,7 +1,7 @@ - #!/usr/bin/env bash - - # We reuse the gdb pythonstartup script. --PYTHONSTARTUP=$SAGE_LOCAL/bin/sage-ipython -+PYTHONSTARTUP=`dirname $0`/sage-ipython - export PYTHONSTARTUP - echo $PYTHONSTARTUP - if [ ! -d "$DOT_SAGE/valgrind" ]; then -diff --git a/src/bin/sage-callgrind b/src/bin/sage-callgrind -index 5e21d8b..d78acd6 100755 ---- a/src/bin/sage-callgrind -+++ b/src/bin/sage-callgrind -@@ -13,4 +13,4 @@ if [ "$SAGE_CALLGRIND_FLAGS" ]; then - echo "Using default flags: $CALLGRIND_FLAGS" - fi - --valgrind --tool=callgrind $CALLGRIND_FLAGS python "$SAGE_LOCAL/bin/sage-ipython" "$@" -i -+valgrind --tool=callgrind $CALLGRIND_FLAGS sage-ipython "$@" -i -diff --git a/src/bin/sage-cython b/src/bin/sage-cython -index 526c68b..d1477d4 100755 ---- a/src/bin/sage-cython -+++ b/src/bin/sage-cython -@@ -9,9 +9,7 @@ import os - import sys - args = sys.argv[1:] - --if "SAGE_SRC" not in os.environ: -- raise RuntimeError("The environment variable SAGE_SRC must be set.") --SAGE_SRC = os.environ["SAGE_SRC"] -+from sage.env import SAGE_SRC - - # args can have length 0, in case we're printing a usage message (see trac 12207) - pyx_file = os.path.abspath(args[-1]) if len(args) else None -diff --git a/src/bin/sage-ipynb2rst b/src/bin/sage-ipynb2rst -index d7c61a9..0fb6ee5 100755 ---- a/src/bin/sage-ipynb2rst -+++ b/src/bin/sage-ipynb2rst -@@ -1,5 +1,9 @@ - #!/usr/bin/env bash - -+if [ -z $SAGE_EXTCODE ]; then -+ SAGE_EXTCODE=`${0/-ipynb2rst} -c "from sage.env import SAGE_EXTCODE; print(SAGE_EXTCODE)"` -+fi -+ - fail () { - echo "ERROR: ${1}" 1>&2 - exit 1 -diff --git a/src/bin/sage-massif b/src/bin/sage-massif -index 20082bf..ead82de 100755 ---- a/src/bin/sage-massif -+++ b/src/bin/sage-massif -@@ -1,7 +1,7 @@ - #!/usr/bin/env bash - - # We reuse the gdb pythonstartup script. --PYTHONSTARTUP=$SAGE_LOCAL/bin/sage-ipython -+PYTHONSTARTUP=`dirname $0`/sage-ipython - export PYTHONSTARTUP - echo $PYTHONSTARTUP - if [ ! -d "$DOT_SAGE/valgrind" ]; then -diff --git a/src/bin/sage-omega b/src/bin/sage-omega -index 2b8449f..a4c1fff 100755 ---- a/src/bin/sage-omega -+++ b/src/bin/sage-omega -@@ -1,7 +1,7 @@ - #!/usr/bin/env bash - - # We reuse the gdb pythonstartup script. --PYTHONSTARTUP=$SAGE_LOCAL/bin/sage-ipython -+PYTHONSTARTUP=`dirname $0`/sage-ipython - export PYTHONSTARTUP - echo $PYTHONSTARTUP - if [ ! -d "$DOT_SAGE/valgrind" ]; then -diff --git a/src/bin/sage-runtests b/src/bin/sage-runtests -index 1207fa2..a7d4b55 100755 ---- a/src/bin/sage-runtests -+++ b/src/bin/sage-runtests -@@ -5,7 +5,7 @@ import os - import sys - - # Note: the DOT_SAGE and SAGE_STARTUP_FILE environment variables have already been set by sage-env --DOT_SAGE = os.environ['DOT_SAGE'] -+DOT_SAGE = os.environ.get('DOT_SAGE', os.path.join(os.environ.get('HOME'),'.sage')) - SAGE_ROOT = os.environ.get('SAGE_ROOT') - - # Override to not pick up user configuration, see Trac #20270 -diff --git a/src/bin/sage-valgrind b/src/bin/sage-valgrind -index bba296d..61f27a8 100755 ---- a/src/bin/sage-valgrind -+++ b/src/bin/sage-valgrind -@@ -1,5 +1,9 @@ - #!/usr/bin/env bash - -+if [ -z $SAGE_EXTCODE ]; then -+ SAGE_EXTCODE=`${0/-valgrind} -c "from sage.env import SAGE_EXTCODE; print(SAGE_EXTCODE)"` -+fi -+ - SUPP="" - if [ -f "$SAGE_EXTCODE/valgrind/python.supp" ]; then - SUPP+=" --suppressions=$SAGE_EXTCODE/valgrind/python.supp" -@@ -19,4 +23,4 @@ else - echo "Using default flags: $MEMCHECK_FLAGS" - fi - --valgrind --tool=memcheck $MEMCHECK_FLAGS python "$SAGE_LOCAL/bin/sage-ipython" "$@" -i -+valgrind --tool=memcheck $MEMCHECK_FLAGS sage-ipython "$@" -i -diff --git a/src/sage/docs/conf.py b/src/sage/docs/conf.py -index 8d0083b..0560d96 100644 ---- a/src/sage/docs/conf.py -+++ b/src/sage/docs/conf.py -@@ -218,7 +218,7 @@ html_theme = 'sage' - html_theme_options = {} - - # Add any paths that contain custom themes here, relative to this directory. --html_theme_path = [os.path.join(SAGE_DOC_SRC, 'common', 'themes')] -+html_theme_path = [os.path.join(SAGE_DOC_SRC, 'common', 'themes'), os.path.join(SAGE_DOC, 'common', 'themes')] - - # HTML style sheet NOTE: This overrides a HTML theme's corresponding - # setting. -diff --git a/src/sage/doctest/control.py b/src/sage/doctest/control.py -index 8438b96..b5dadaf 100644 ---- a/src/sage/doctest/control.py -+++ b/src/sage/doctest/control.py -@@ -26,7 +26,7 @@ import random, os, sys, time, json, re, types - import six - import sage.misc.flatten - from sage.structure.sage_object import SageObject --from sage.env import DOT_SAGE, SAGE_LIB, SAGE_SRC -+from sage.env import DOT_SAGE, SAGE_LIB, SAGE_SRC, SAGE_LOCAL, SAGE_EXTCODE - from sage.misc.temporary_file import tmp_dir - from cysignals.signals import AlarmInterrupt, init_cysignals - -@@ -48,7 +48,7 @@ class DocTestDefaults(SageObject): - This class is used for doctesting the Sage doctest module. - - It fills in attributes to be the same as the defaults defined in -- ``SAGE_LOCAL/bin/sage-runtests``, expect for a few places, -+ ``sage-runtests``, expect for a few places, - which is mostly to make doctesting more predictable. - - EXAMPLES:: -@@ -291,7 +291,7 @@ class DocTestController(SageObject): - - INPUT: - -- - options -- either options generated from the command line by SAGE_LOCAL/bin/sage-runtests -+ - options -- either options generated from the command line by sage-runtests - or a DocTestDefaults object (possibly with some entries modified) - - args -- a list of filenames to doctest - -@@ -1023,9 +1023,9 @@ class DocTestController(SageObject): - sage: from sage.doctest.control import DocTestDefaults, DocTestController - sage: DC = DocTestController(DocTestDefaults(timeout=123), ["hello_world.py"]) - sage: print(DC._assemble_cmd()) -- python "$SAGE_LOCAL/bin/sage-runtests" --serial --timeout=123 hello_world.py -+ python "...sage-runtests" --serial --timeout=123 hello_world.py - """ -- cmd = '''python "%s" --serial '''%(os.path.join("$SAGE_LOCAL","bin","sage-runtests")) -+ cmd = '''python "%s" --serial '''%(os.path.join(SAGE_LOCAL,"bin","sage-runtests")) - opt = dict_difference(self.options.__dict__, DocTestDefaults().__dict__) - for o in ("all", "sagenb"): - if o in opt: -@@ -1059,14 +1059,14 @@ class DocTestController(SageObject): - sage: DD = DocTestDefaults(gdb=True) - sage: DC = DocTestController(DD, ["hello_world.py"]) - sage: DC.run_val_gdb(testing=True) -- exec gdb -x "$SAGE_LOCAL/bin/sage-gdb-commands" --args python "$SAGE_LOCAL/bin/sage-runtests" --serial --timeout=0 hello_world.py -+ exec gdb -x "...sage-gdb-commands" --args python "...sage-runtests" --serial --timeout=0 hello_world.py - - :: - - sage: DD = DocTestDefaults(valgrind=True, optional="all", timeout=172800) - sage: DC = DocTestController(DD, ["hello_world.py"]) - sage: DC.run_val_gdb(testing=True) -- exec valgrind --tool=memcheck --leak-resolution=high --leak-check=full --num-callers=25 --suppressions="$SAGE_EXTCODE/valgrind/pyalloc.supp" --suppressions="$SAGE_EXTCODE/valgrind/sage.supp" --suppressions="$SAGE_EXTCODE/valgrind/sage-additional.supp" --log-file=".../valgrind/sage-memcheck.%p" python "$SAGE_LOCAL/bin/sage-runtests" --serial --timeout=172800 --optional=all hello_world.py -+ exec valgrind --tool=memcheck --leak-resolution=high --leak-check=full --num-callers=25 --suppressions="...valgrind/pyalloc.supp" --suppressions="...valgrind/sage.supp" --suppressions="...valgrind/sage-additional.supp" --log-file=".../valgrind/sage-memcheck.%p" python "...sage-runtests" --serial --timeout=172800 --optional=all hello_world.py - """ - try: - sage_cmd = self._assemble_cmd() -@@ -1075,7 +1075,7 @@ class DocTestController(SageObject): - return 2 - opt = self.options - if opt.gdb: -- cmd = '''exec gdb -x "$SAGE_LOCAL/bin/sage-gdb-commands" --args ''' -+ cmd = '''exec gdb -x "%s" --args '''%(os.path.join(SAGE_LOCAL,"bin","sage-gdb-commands")) - flags = "" - if opt.logfile: - sage_cmd += " --logfile %s"%(opt.logfile) -@@ -1096,9 +1096,9 @@ class DocTestController(SageObject): - flags = os.getenv("SAGE_MEMCHECK_FLAGS") - if flags is None: - flags = "--leak-resolution=high --leak-check=full --num-callers=25 " -- flags += '''--suppressions="%s" '''%(os.path.join("$SAGE_EXTCODE","valgrind","pyalloc.supp")) -- flags += '''--suppressions="%s" '''%(os.path.join("$SAGE_EXTCODE","valgrind","sage.supp")) -- flags += '''--suppressions="%s" '''%(os.path.join("$SAGE_EXTCODE","valgrind","sage-additional.supp")) -+ flags += '''--suppressions="%s" '''%(os.path.join(SAGE_EXTCODE,"valgrind","pyalloc.supp")) -+ flags += '''--suppressions="%s" '''%(os.path.join(SAGE_EXTCODE,"valgrind","sage.supp")) -+ flags += '''--suppressions="%s" '''%(os.path.join(SAGE_EXTCODE,"valgrind","sage-additional.supp")) - elif opt.massif: - toolname = "massif" - flags = os.getenv("SAGE_MASSIF_FLAGS", "--depth=6 ") -diff --git a/src/sage/env.py b/src/sage/env.py -index 27dd40c..2e1111c 100644 ---- a/src/sage/env.py -+++ b/src/sage/env.py -@@ -183,6 +183,7 @@ var('JMOL_DIR', join(SAGE_SHARE, 'jmol')) - var('JSMOL_DIR', join(SAGE_SHARE, 'jsmol')) - var('MATHJAX_DIR', join(SAGE_SHARE, 'mathjax')) - var('THREEJS_DIR', join(SAGE_SHARE, 'threejs')) -+var('SINGULARPATH', join(SAGE_SHARE, 'singular')) - var('PPLPY_DOCS', join(SAGE_SHARE, 'doc', 'pplpy')) - var('MAXIMA_FAS') - -diff --git a/src/sage/interfaces/singular.py b/src/sage/interfaces/singular.py -index 513994c..2f08a9d 100644 ---- a/src/sage/interfaces/singular.py -+++ b/src/sage/interfaces/singular.py -@@ -337,6 +337,7 @@ from sage.structure.element import RingElement - - import sage.rings.integer - -+from sage.env import SINGULARPATH - from sage.misc.misc import get_verbose - from sage.docs.instancedoc import instancedoc - -@@ -2261,7 +2262,7 @@ def generate_docstring_dictionary(): - nodes.clear() - node_names.clear() - -- singular_docdir = os.environ['SINGULARPATH']+"/../info/" -+ singular_docdir = SINGULARPATH + "/../info/" - - new_node = re.compile(r"File: singular\.hlp, Node: ([^,]*),.*") - new_lookup = re.compile(r"\* ([^:]*):*([^.]*)\..*") diff --git a/sagemath-linbox-1.6.patch b/sagemath-linbox-1.6.patch deleted file mode 100644 index 86991d63c26c..000000000000 --- a/sagemath-linbox-1.6.patch +++ /dev/null @@ -1,774 +0,0 @@ -diff --git a/src/sage/libs/linbox/conversion.pxd b/src/sage/libs/linbox/conversion.pxd -index 810a197..7794c9e 100644 ---- a/src/sage/libs/linbox/conversion.pxd -+++ b/src/sage/libs/linbox/conversion.pxd -@@ -45,7 +45,7 @@ from sage.modules.vector_integer_sparse cimport mpz_vector, mpz_vector_get_entr - - ctypedef enum linbox_specifier: - METHOD_DEFAULT # no specification -- METHOD_BLAS_ELIMINATION # BlasElimination -+ METHOD_DENSE_ELIMINATION # DenseElimination - METHOD_SPARSE_ELIMINATION # SparseElimination - METHOD_BLACKBOX # Blackbox - METHOD_WIEDEMANN # Wiedeman -@@ -54,10 +54,10 @@ ctypedef enum linbox_specifier: - cdef inline linbox_specifier get_method(str algo) except ERROR: - if algo is None or algo == "default": - return METHOD_DEFAULT -- elif algo == "blas_elimination" or \ -- algo == "linbox_blas_elimination" or \ -- algo == "LinBox::BlasElimination": -- return METHOD_BLAS_ELIMINATION -+ elif algo == "dense_elimination" or \ -+ algo == "linbox_dense_elimination" or \ -+ algo == "LinBox::DenseElimination": -+ return METHOD_DENSE_ELIMINATION - elif algo == "sparse_elimination" or \ - algo == "linbox_sparse_elimination" or \ - algo == "LinBox::SparseElimination": -diff --git a/src/sage/libs/linbox/fflas.pxd b/src/sage/libs/linbox/fflas.pxd -index f3a7ce3..8bf62f1 100644 ---- a/src/sage/libs/linbox/fflas.pxd -+++ b/src/sage/libs/linbox/fflas.pxd -@@ -63,8 +63,7 @@ cdef extern from "fflas-ffpack/fflas-ffpack.h" namespace "FFPACK": - Modular_double.Element* Invert (Modular_double F, size_t order, - Modular_double.Element* A, size_t A_stride, int nullity) - -- Modular_double.Element Det (Modular_double F, -- size_t nrows, size_t ncols, -+ Modular_double.Element Det (Modular_double F, Modular_double.Element& d, size_t n, - Modular_double.Element* A, size_t A_stride) - - int Rank (Modular_double, -@@ -97,8 +96,7 @@ cdef extern from "fflas-ffpack/fflas-ffpack.h" namespace "FFPACK": - Modular_float.Element* Invert (Modular_float F, size_t order, - Modular_float.Element* A, size_t A_stride, int nullity) - -- Modular_float.Element Det (Modular_float F, -- size_t nrows, size_t ncols, -+ Modular_float.Element Det (Modular_float F, Modular_float.Element& d, size_t n, - Modular_float.Element* A, size_t A_stride) - - int Rank (Modular_float, -diff --git a/src/sage/libs/linbox/givaro.pxd b/src/sage/libs/linbox/givaro.pxd -index 097fc22..34209f4 100644 ---- a/src/sage/libs/linbox/givaro.pxd -+++ b/src/sage/libs/linbox/givaro.pxd -@@ -40,7 +40,7 @@ cdef extern from "givaro/zring.h": - Element one - Element mone - --cdef extern from "givaro/modular.h": -+cdef extern from "givaro/modular-integral.h": - cdef cppclass Modular_uint64 "Givaro::Modular<uint64_t>": - ctypedef uint64_t Element - Modular_uint64(int modulus) -@@ -58,6 +58,7 @@ cdef extern from "givaro/modular.h": - - ostream& write(ostream&) - -+cdef extern from "givaro/modular-floating.h": - cdef cppclass Modular_double "Givaro::Modular<double>": - ctypedef double Element - Modular_double(int modulus) -diff --git a/src/sage/libs/linbox/linbox.pxd b/src/sage/libs/linbox/linbox.pxd -index 35a3fa0..fb0e0dc 100644 ---- a/src/sage/libs/linbox/linbox.pxd -+++ b/src/sage/libs/linbox/linbox.pxd -@@ -10,10 +10,10 @@ from .givaro cimport * - - cdef extern from "linbox/matrix/dense-matrix.h": - ## template <class _Field, class _blasRep=typename Vector<_Field>::Dense > -- ## class BlasMatrix ; -+ ## class DenseMatrix ; - ## - ## template <class _Field> -- ## using DenseMatrix = BlasMatrix<_Field> ; -+ ## using DenseMatrix = DenseMatrix<_Field> ; - cdef cppclass DenseMatrix_integer "LinBox::DenseMatrix<Givaro::ZRing<Givaro::Integer>>": - ctypedef ZRing Field - ctypedef Integer Element -@@ -30,6 +30,7 @@ cdef extern from "linbox/matrix/dense-matrix.h": - ctypedef Modular_double Field - ctypedef double Element - DenseMatrix_Modular_double(Field F, size_t m, size_t n) -+ DenseMatrix_Modular_double(Field F, Element*, size_t m, size_t n) - void setEntry(size_t i, size_t j, Element& a) - Element &getEntry(size_t i, size_t j) - -@@ -39,6 +40,7 @@ cdef extern from "linbox/matrix/dense-matrix.h": - ctypedef Modular_float Field - ctypedef float Element - DenseMatrix_Modular_float(Field F, size_t m, size_t n) -+ DenseMatrix_Modular_float(Field F, Element*, size_t m, size_t n) - void setEntry(size_t i, size_t j, Element& a) - Element &getEntry(size_t i, size_t j) - -@@ -125,7 +127,7 @@ cdef extern from "linbox/solutions/methods.h" namespace "LinBox": - pass - cdef struct WiedemannTraits: - pass -- cdef struct BlasEliminationTraits: -+ cdef struct DenseEliminationTraits: - pass - cdef struct SparseEliminationTraits: - pass -@@ -135,7 +137,7 @@ cdef extern from "linbox/solutions/methods.h" namespace "LinBox": - ctypedef BlackboxSpecifier Blackbox - ctypedef EliminationSpecifier Elimination - ctypedef WiedemannTraits Wiedemann -- ctypedef BlasEliminationTraits BlasElimination -+ ctypedef DenseEliminationTraits DenseElimination - ctypedef SparseEliminationTraits SparseElimination - - cdef extern from "linbox/solutions/charpoly.h" namespace "LinBox": -@@ -157,18 +159,24 @@ cdef extern from "linbox/algorithms/gauss.h": - unsigned long Ni, - unsigned long Nj) - --cdef extern from "linbox/algorithms/echelon-form.h": -- ## template<class Field> -- ## class EchelonFormDomain -- cdef cppclass EchelonForm_Modular_double "LinBox::EchelonFormDomain<Givaro::Modular<double>>": -- ctypedef double Element -- EchelonForm_Modular_double(Modular_double) -- int rowReducedEchelon(DenseMatrix_Modular_double&, const DenseMatrix_Modular_double&) -- -- cdef cppclass EchelonForm_Modular_float "LinBox::EchelonFormDomain<Givaro::Modular<float>>": -- ctypedef float Element -- EchelonForm_Modular_float(Modular_float) -- int rowReducedEchelon(DenseMatrix_Modular_float, const DenseMatrix_Modular_float) -+cdef extern from "linbox/solutions/echelon.h" namespace "LinBox": -+ size_t rowEchelon (DenseMatrix_Modular_float&, const DenseMatrix_Modular_float&) -+ size_t rowEchelonize (DenseMatrix_Modular_float&) -+ size_t reducedRowEchelon (DenseMatrix_Modular_float&, const DenseMatrix_Modular_float&) -+ size_t reducedRowEchelonize (DenseMatrix_Modular_float&) -+ size_t colEchelon (DenseMatrix_Modular_float&, const DenseMatrix_Modular_float&) -+ size_t colEchelonize (DenseMatrix_Modular_float&) -+ size_t reducedColEchelon (DenseMatrix_Modular_float&, const DenseMatrix_Modular_float&) -+ size_t reducedColEchelonize (DenseMatrix_Modular_float&) -+ -+ size_t rowEchelon (DenseMatrix_Modular_double&, const DenseMatrix_Modular_double&) -+ size_t rowEchelonize (DenseMatrix_Modular_double&) -+ size_t reducedRowEchelon (DenseMatrix_Modular_double&, const DenseMatrix_Modular_double&) -+ size_t reducedRowEchelonize (DenseMatrix_Modular_double&) -+ size_t colEchelon (DenseMatrix_Modular_double&, const DenseMatrix_Modular_double&) -+ size_t colEchelonize (DenseMatrix_Modular_double&) -+ size_t reducedColEchelon (DenseMatrix_Modular_double&, const DenseMatrix_Modular_double&) -+ size_t reducedColEchelonize (DenseMatrix_Modular_double&) - - cdef extern from "linbox/solutions/rank.h" namespace "LinBox": - unsigned long & rank (unsigned long&, DenseMatrix_integer) -@@ -185,7 +193,7 @@ cdef extern from "linbox/solutions/solve.h" namespace "LinBox": - Integer &, - SparseMatrix_integer &, - DenseVector_integer &, -- Method.BlasElimination) except + -+ Method.DenseElimination) except + - - DenseVector_integer& solve (DenseVector_integer &, - Integer &, -diff --git a/src/sage/libs/linbox/linbox_flint_interface.pxd b/src/sage/libs/linbox/linbox_flint_interface.pxd -index 388c146..6491cf5 100644 ---- a/src/sage/libs/linbox/linbox_flint_interface.pxd -+++ b/src/sage/libs/linbox/linbox_flint_interface.pxd -@@ -13,7 +13,7 @@ cdef void linbox_fmpz_mat_charpoly(fmpz_poly_t cp, fmpz_mat_t A) - cdef void linbox_fmpz_mat_minpoly(fmpz_poly_t mp, fmpz_mat_t A) - - # return the rank of A --cdef unsigned long linbox_fmpz_mat_rank(fmpz_mat_t A) -+cdef size_t linbox_fmpz_mat_rank(fmpz_mat_t A) - - # set det to the determinant of A - cdef void linbox_fmpz_mat_det(fmpz_t det, fmpz_mat_t A) -diff --git a/src/sage/libs/linbox/linbox_flint_interface.pyx b/src/sage/libs/linbox/linbox_flint_interface.pyx -index d5718a7..4c209fb 100644 ---- a/src/sage/libs/linbox/linbox_flint_interface.pyx -+++ b/src/sage/libs/linbox/linbox_flint_interface.pyx -@@ -15,7 +15,7 @@ and C. Pernet. The functions available are: - - ``void linbox_fmpz_mat_minpoly(fmpz_poly_t mp, fmpz_mat_t A)``: set ``mp`` - to be the minimal polynomial of the square matrix ``A`` - --- ``unsigned long linbox_fmpz_mat_rank(fmpz_mat_t A)``: return the rank of the -+- ``size_t linbox_fmpz_mat_rank(fmpz_mat_t A)``: return the rank of the - matrix ``A`` - - - ``void linbox_fmpz_mat_det(fmpz_t det, fmpz_mat_t A)``: set ``det`` to the -@@ -155,13 +155,13 @@ cdef void linbox_fmpz_mat_minpoly(fmpz_poly_t mp, fmpz_mat_t A): - del m_A - - --cdef unsigned long linbox_fmpz_mat_rank(fmpz_mat_t A): -+cdef size_t linbox_fmpz_mat_rank(fmpz_mat_t A): - r""" - Return the rank of A - """ - cdef givaro.ZRing ZZ - cdef linbox.DenseMatrix_integer * LBA -- cdef unsigned long r = 0 -+ cdef size_t r = 0 - - LBA = new linbox.DenseMatrix_integer(ZZ, fmpz_mat_nrows(A), fmpz_mat_ncols(A)) - fmpz_mat_get_linbox(LBA[0], A) -diff --git a/src/sage/matrix/matrix_integer_dense.pyx b/src/sage/matrix/matrix_integer_dense.pyx -index cd36b27..072122b 100644 ---- a/src/sage/matrix/matrix_integer_dense.pyx -+++ b/src/sage/matrix/matrix_integer_dense.pyx -@@ -3611,7 +3611,7 @@ cdef class Matrix_integer_dense(Matrix_dense): - 3 - """ - sig_on() -- cdef unsigned long r = linbox_fmpz_mat_rank(self._matrix) -+ cdef size_t r = linbox_fmpz_mat_rank(self._matrix) - sig_off() - return Integer(r) - -diff --git a/src/sage/matrix/matrix_integer_sparse.pyx b/src/sage/matrix/matrix_integer_sparse.pyx -index 7fa386e..6db9b2d 100644 ---- a/src/sage/matrix/matrix_integer_sparse.pyx -+++ b/src/sage/matrix/matrix_integer_sparse.pyx -@@ -31,7 +31,7 @@ from cysignals.memory cimport check_calloc, sig_free - - from collections import Iterator, Sequence - --from cpython.int cimport PyInt_FromLong -+from cpython.int cimport PyInt_FromSize_t - - from sage.ext.stdsage cimport PY_NEW - from sage.ext.mod_int cimport * -@@ -42,7 +42,7 @@ from sage.libs.linbox.conversion cimport ( - new_linbox_vector_integer_dense, - new_sage_vector_integer_dense, - new_linbox_matrix_integer_sparse, -- METHOD_DEFAULT, METHOD_BLAS_ELIMINATION, -+ METHOD_DEFAULT, METHOD_DENSE_ELIMINATION, - METHOD_SPARSE_ELIMINATION, METHOD_BLACKBOX, - METHOD_WIEDEMANN, get_method) - -@@ -647,13 +647,13 @@ cdef class Matrix_integer_sparse(Matrix_sparse): - - cdef givaro.ZRing givZZ - cdef linbox.SparseMatrix_integer * M = new_linbox_matrix_integer_sparse(givZZ, self) -- cdef unsigned long r = 0 -+ cdef size_t r = 0 - - linbox.rank(r, M[0]) - - del M - -- return PyInt_FromLong(r) -+ return PyInt_FromSize_t(r) - - def _det_linbox(self): - r""" -@@ -926,7 +926,7 @@ cdef class Matrix_integer_sparse(Matrix_sparse): - - ``'linbox'`` or ``'linbox_default'`` - (default) use LinBox - and let it chooses the appropriate algorithm - -- - ``linbox_blas_elimination'`` - use LinBox dense elimination -+ - ``linbox_dense_elimination'`` - use LinBox dense elimination - - - ``'linbox_sparse_elimination'`` - use LinBox sparse elimination - -@@ -993,7 +993,7 @@ cdef class Matrix_integer_sparse(Matrix_sparse): - - - ``b`` -- a dense integer vector - -- - ``algorithm`` -- (optional) either ``None``, ``'blas_elimination'``, -+ - ``algorithm`` -- (optional) either ``None``, ``'dense_elimination'``, - ``'sparse_elimination'``, ``'wiedemann'`` or ``'blackbox'``. - - OUTPUT: a pair ``(a, d)`` consisting of -@@ -1012,7 +1012,7 @@ cdef class Matrix_integer_sparse(Matrix_sparse): - sage: b0 = vector((1,1,1,1)) - sage: m._solve_vector_linbox(b0) - ((-1, -7, -3, -1), 1) -- sage: m._solve_vector_linbox(b0, 'blas_elimination') -+ sage: m._solve_vector_linbox(b0, 'dense_elimination') - ((-1, -7, -3, -1), 1) - sage: m._solve_vector_linbox(b0, 'sparse_elimination') - ((-1, -7, -3, -1), 1) -@@ -1024,7 +1024,7 @@ cdef class Matrix_integer_sparse(Matrix_sparse): - sage: b1 = vector((1,2,3,4)) - sage: m._solve_vector_linbox(b1) - ((-18, -92, -41, -17), 5) -- sage: m._solve_vector_linbox(b1, 'blas_elimination') -+ sage: m._solve_vector_linbox(b1, 'dense_elimination') - ((-18, -92, -41, -17), 5) - sage: m._solve_vector_linbox(b1, 'sparse_elimination') - ((-18, -92, -41, -17), 5) -@@ -1039,7 +1039,7 @@ cdef class Matrix_integer_sparse(Matrix_sparse): - - TESTS:: - -- sage: algos = ["default", "blas_elimination", "sparse_elimination", -+ sage: algos = ["default", "dense_elimination", "sparse_elimination", - ....: "blackbox", "wiedemann"] - sage: for i in range(20): - ....: dim = randint(1, 30) -@@ -1080,8 +1080,8 @@ cdef class Matrix_integer_sparse(Matrix_sparse): - linbox.solve(res[0], D, A[0], b[0]) - elif method == METHOD_WIEDEMANN: - linbox.solve(res[0], D, A[0], b[0], linbox.Method.Wiedemann()) -- elif method == METHOD_BLAS_ELIMINATION: -- linbox.solve(res[0], D, A[0], b[0], linbox.Method.BlasElimination()) -+ elif method == METHOD_DENSE_ELIMINATION: -+ linbox.solve(res[0], D, A[0], b[0], linbox.Method.DenseElimination()) - elif method == METHOD_SPARSE_ELIMINATION: - linbox.solve(res[0], D, A[0], b[0], linbox.Method.SparseElimination()) - elif method == METHOD_BLACKBOX: -@@ -1136,7 +1136,7 @@ cdef class Matrix_integer_sparse(Matrix_sparse): - - TESTS:: - -- sage: algos = ["default", "blas_elimination", "sparse_elimination", -+ sage: algos = ["default", "dense_elimination", "sparse_elimination", - ....: "blackbox", "wiedemann"] - - sage: for _ in range(10): -@@ -1191,8 +1191,8 @@ cdef class Matrix_integer_sparse(Matrix_sparse): - # solve the current row - if algo == METHOD_DEFAULT: - linbox.solve(res[0], D, A[0], b[0]) -- elif algo == METHOD_BLAS_ELIMINATION: -- linbox.solve(res[0], D, A[0], b[0], linbox.Method.BlasElimination()) -+ elif algo == METHOD_DENSE_ELIMINATION: -+ linbox.solve(res[0], D, A[0], b[0], linbox.Method.DenseElimination()) - elif algo == METHOD_SPARSE_ELIMINATION: - linbox.solve(res[0], D, A[0], b[0], linbox.Method.SparseElimination()) - elif algo == METHOD_BLACKBOX: -diff --git a/src/sage/matrix/matrix_modn_dense_double.pyx b/src/sage/matrix/matrix_modn_dense_double.pyx -index c4b1a46..880caec 100644 ---- a/src/sage/matrix/matrix_modn_dense_double.pyx -+++ b/src/sage/matrix/matrix_modn_dense_double.pyx -@@ -24,8 +24,8 @@ from sage.libs.linbox.givaro cimport \ - Poly1Dom, Dense - - from sage.libs.linbox.linbox cimport \ -- DenseMatrix_Modular_double as BlasMatrix, \ -- EchelonForm_Modular_double as EchelonFormDomain -+ reducedRowEchelonize, \ -+ DenseMatrix_Modular_double as DenseMatrix - - from sage.libs.linbox.fflas cimport \ - fgemm, fgemv, Det, Rank, ReducedRowEchelonForm, applyP, \ -diff --git a/src/sage/matrix/matrix_modn_dense_float.pyx b/src/sage/matrix/matrix_modn_dense_float.pyx -index 89d1a94..8a468c1 100644 ---- a/src/sage/matrix/matrix_modn_dense_float.pyx -+++ b/src/sage/matrix/matrix_modn_dense_float.pyx -@@ -23,8 +23,8 @@ from sage.libs.linbox.givaro cimport \ - Poly1Dom, Dense - - from sage.libs.linbox.linbox cimport \ -- DenseMatrix_Modular_float as BlasMatrix, \ -- EchelonForm_Modular_float as EchelonFormDomain -+ DenseMatrix_Modular_float as DenseMatrix, \ -+ reducedRowEchelonize - - from sage.libs.linbox.fflas cimport \ - fgemm, fgemv, Det, Rank, ReducedRowEchelonForm, applyP, \ -diff --git a/src/sage/matrix/matrix_modn_dense_template.pxi b/src/sage/matrix/matrix_modn_dense_template.pxi -index 6a5e164..230a16e 100644 ---- a/src/sage/matrix/matrix_modn_dense_template.pxi -+++ b/src/sage/matrix/matrix_modn_dense_template.pxi -@@ -207,21 +207,12 @@ cdef inline linbox_echelonize_efd(celement modulus, celement* entries, Py_ssize_ - return 0,[] - - cdef ModField *F = new ModField(<long>modulus) -- cdef EchelonFormDomain *EF = new EchelonFormDomain(F[0]) -- cdef BlasMatrix *A = new BlasMatrix(F[0], <uint64_t>nrows, <uint64_t>ncols) -- cdef BlasMatrix *E = new BlasMatrix(F[0], <uint64_t>nrows, <uint64_t>ncols) -- -+ cdef DenseMatrix *A = new DenseMatrix(F[0], <ModField.Element*>entries,<Py_ssize_t>nrows, <Py_ssize_t>ncols) -+ cdef Py_ssize_t r = reducedRowEchelonize(A[0]) - cdef Py_ssize_t i,j -- -- # TODO: can we avoid this copy? -- for i in range(nrows): -- for j in range(ncols): -- A.setEntry(i, j, <ModField.Element>entries[i*ncols+j]) -- -- cdef int r = EF.rowReducedEchelon(E[0], A[0]) - for i in range(nrows): - for j in range(ncols): -- entries[i*ncols+j] = <celement>E.getEntry(i,j) -+ entries[i*ncols+j] = <celement>A.getEntry(i,j) - - cdef Py_ssize_t ii = 0 - cdef list pivots = [] -@@ -232,7 +223,7 @@ cdef inline linbox_echelonize_efd(celement modulus, celement* entries, Py_ssize_ - ii = j+1 - break - -- del F, A, E, EF -+ del F - return r, pivots - - cdef inline celement *linbox_copy(celement modulus, celement *entries, Py_ssize_t nrows, Py_ssize_t ncols) except? NULL: -@@ -258,15 +249,16 @@ cdef inline int linbox_rank(celement modulus, celement* entries, Py_ssize_t nrow - del F - return r - --cdef inline celement linbox_det(celement modulus, celement* entries, Py_ssize_t nrows, Py_ssize_t ncols): -+cdef inline celement linbox_det(celement modulus, celement* entries, Py_ssize_t n): - """ - Return the determinant of this matrix. - """ - cdef ModField *F = new ModField(<long>modulus) -- cdef celement *cpy = linbox_copy(modulus, entries, nrows, ncols) -- if nrows*ncols > 1000: sig_on() -- d = <celement>Det(F[0], nrows, ncols, <ModField.Element*>cpy, ncols) -- if nrows*ncols > 1000: sig_off() -+ cdef celement *cpy = linbox_copy(modulus, entries, n, n) -+ if n*n > 1000: sig_on() -+ cdef celement d -+ Det(F[0], d, n, <ModField.Element*>cpy, n) -+ if n*n > 1000: sig_off() - sig_free(cpy) - del F - return d -@@ -1672,9 +1664,9 @@ cdef class Matrix_modn_dense_template(Matrix_dense): - - - ``algorithm`` - -- - ``linbox`` - uses the LinBox library (``EchelonFormDomain`` implementation, default) -+ - ``linbox`` - uses the LinBox library (wrapping fflas-ffpack) - -- - ``linbox_noefd`` - uses the LinBox library (FFPACK directly, less memory but slower) -+ - ``linbox_noefd`` - uses the FFPACK directly, less memory and faster - - - ``gauss`` - uses a custom slower `O(n^3)` Gauss - elimination implemented in Sage. -@@ -1929,7 +1921,6 @@ cdef class Matrix_modn_dense_template(Matrix_dense): - else: - r, pivots = linbox_echelonize(self.p, self._entries, self._nrows, self._ncols) - verbose('done with echelonize',t) -- - self.cache('in_echelon_form',True) - self.cache('rank', r) - self.cache('pivots', tuple(pivots)) -@@ -2468,7 +2459,7 @@ cdef class Matrix_modn_dense_template(Matrix_dense): - x = self.fetch('det') - if not x is None: - return x -- d = linbox_det(self.p, self._entries, self._nrows, self._ncols) -+ d = linbox_det(self.p, self._entries, self._nrows) - d2 = self._coerce_element(d) - self.cache('det', d2) - return d2 -diff --git a/src/sage/matrix/matrix_modn_sparse.pyx b/src/sage/matrix/matrix_modn_sparse.pyx -index 241167a..9b4184f 100644 ---- a/src/sage/matrix/matrix_modn_sparse.pyx -+++ b/src/sage/matrix/matrix_modn_sparse.pyx -@@ -677,10 +677,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse): - # TODO: bug in linbox (gives segfault) - return 0, self.base_ring().one() - -- # NOTE: the rank would more naturally be size_t but it is unsigned long -- # in LinBox -- # see https://github.com/linbox-team/linbox/issues/144 -- cdef unsigned long A_rank = 0 -+ cdef size_t A_rank = 0 - cdef uint64_t A_det = 0 - - if not is_prime(self.p): -@@ -696,9 +693,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse): - if A.rowdim() >= <size_t> UINT_MAX or A.coldim() >= <size_t> UINT_MAX: - raise ValueError("row/column size unsupported in LinBox") - -- dom.InPlaceLinearPivoting(A_rank, A_det, A[0], -- <unsigned long> A.rowdim(), -- <unsigned long> A.coldim()) -+ dom.InPlaceLinearPivoting(A_rank, A_det, A[0], A.rowdim(), A.coldim()) - - del A - del F -@@ -882,7 +877,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse): - - ``'linbox'`` or ``'linbox_default'`` - (default) use LinBox - and let it chooses the appropriate algorithm - -- - ``linbox_blas_elimination'`` - use LinBox dense elimination -+ - ``linbox_dense_elimination'`` - use LinBox dense elimination - - - ``'linbox_sparse_elimination'`` - use LinBox sparse elimination - -@@ -949,7 +944,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse): - - - ``b`` -- a dense integer vector - -- - ``algorithm`` -- (optional) either ``None``, ``'blas_elimination'``, -+ - ``algorithm`` -- (optional) either ``None``, ``'dense_elimination'``, - ``'sparse_elimination'``, ``'wiedemann'`` or ``'blackbox'``. - - OUTPUT: a pair ``(a, d)`` consisting of -@@ -968,7 +963,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse): - sage: b0 = vector((1,1,1,1)) - sage: m._solve_vector_linbox(b0) - ((-1, -7, -3, -1), 1) -- sage: m._solve_vector_linbox(b0, 'blas_elimination') -+ sage: m._solve_vector_linbox(b0, 'dense_elimination') - ((-1, -7, -3, -1), 1) - sage: m._solve_vector_linbox(b0, 'sparse_elimination') - ((-1, -7, -3, -1), 1) -@@ -984,7 +979,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse): - - TESTS:: - -- sage: algos = ["default", "blas_elimination", "sparse_elimination", -+ sage: algos = ["default", "dense_elimination", "sparse_elimination", - ....: "blackbox", "wiedemann"] - sage: for i in range(20): - ....: dim = randint(1, 30) -@@ -1025,8 +1020,8 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse): - linbox.solve(res[0], D, A[0], b[0]) - elif method == METHOD_WIEDEMANN: - linbox.solve(res[0], D, A[0], b[0], linbox.Method.Wiedemann()) -- elif method == METHOD_BLAS_ELIMINATION: -- linbox.solve(res[0], D, A[0], b[0], linbox.Method.BlasElimination()) -+ elif method == METHOD_DENSE_ELIMINATION: -+ linbox.solve(res[0], D, A[0], b[0], linbox.Method.DenseElimination()) - elif method == METHOD_SPARSE_ELIMINATION: - linbox.solve(res[0], D, A[0], b[0], linbox.Method.SparseElimination()) - elif method == METHOD_BLACKBOX: -@@ -1081,7 +1076,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse): - - TESTS:: - -- sage: algos = ["default", "blas_elimination", "sparse_elimination", -+ sage: algos = ["default", "dense_elimination", "sparse_elimination", - ....: "blackbox", "wiedemann"] - - sage: for _ in range(10): -@@ -1136,8 +1131,8 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse): - # solve the current row - if algo == METHOD_DEFAULT: - linbox.solve(res[0], D, A[0], b[0]) -- elif algo == METHOD_BLAS_ELIMINATION: -- linbox.solve(res[0], D, A[0], b[0], linbox.Method.BlasElimination()) -+ elif algo == METHOD_DENSE_ELIMINATION: -+ linbox.solve(res[0], D, A[0], b[0], linbox.Method.DenseElimination()) - elif algo == METHOD_SPARSE_ELIMINATION: - linbox.solve(res[0], D, A[0], b[0], linbox.Method.SparseElimination()) - elif algo == METHOD_BLACKBOX: -diff --git a/src/sage/rings/finite_rings/element_givaro.pxd b/src/sage/rings/finite_rings/element_givaro.pxd -index f0fd7e35..8ae25c5 100644 ---- a/src/sage/rings/finite_rings/element_givaro.pxd -+++ b/src/sage/rings/finite_rings/element_givaro.pxd -@@ -20,35 +20,35 @@ cdef extern from "givaro/givrandom.h": - GivRandom GivRandomSeeded "Givaro::GivRandom"(unsigned long seed) - - cdef extern from "givaro/gfq.h": -- ctypedef struct GivaroGfq "Givaro::GFqDom<int>": -+ cdef cppclass GivaroGfq "Givaro::GFqDom<int>": - #attributes - unsigned int one - unsigned int zero - - # methods -- int (* mul)(int r, int a, int b) -- int (* add)(int r, int a, int b) -- int (* sub)(int r, int a, int b) -- int (* div)(int r, int a, int b) -- int (* inv)(int r, int x) -- int (* neg)(int r, int x) -- int (* mulin)(int a, int b) -- unsigned int (* characteristic)() -- unsigned int (* cardinality)() -- int (* exponent)() -- int (* random)(GivRandom gen, int res) -- int (* initi "init")(int res, int64_t e) -- int (* initd "init")(int res, double e) -- int (* indeterminate)() -- int (* convert)(int64_t r, int p) -- int (* read)(int r, int p) -- int (* axpyin)(int r, int a, int x) -- int (* axpy)(int r, int a, int b, int c) -- int (* axmy)(int r, int a, int b, int c) -- int (* maxpy)(int r, int a, int b, int c) -- bint (* isZero)(int e) -- bint (* isOne)(int e) -- bint (* isunit)(int e) -+ int mul(int r, int a, int b) -+ int add(int r, int a, int b) -+ int sub(int r, int a, int b) -+ int div(int r, int a, int b) -+ int inv(int r, int x) -+ int neg(int r, int x) -+ int mulin(int a, int b) -+ unsigned int characteristic() -+ unsigned int cardinality() -+ int exponent() -+ int random(GivRandom gen, int res) -+ int initi "init"(int& res, int64_t e) -+ int initd "init"(int& res, double e) -+ int indeterminate() -+ int64_t convert(int64_t& r, int p) -+ int read(int& r, int p) -+ int axpyin(int r, int a, int x) -+ int axpy(int r, int a, int b, int c) -+ int axmy(int r, int a, int b, int c) -+ int maxpy(int r, int a, int b, int c) -+ bint isZero(int e) -+ bint isOne(int e) -+ bint isunit(int e) - - GivaroGfq *gfq_factorypk "new Givaro::GFqDom<int>" (unsigned int p, unsigned int k) - GivaroGfq *gfq_factorypkp "new Givaro::GFqDom<int>" (unsigned int p, unsigned int k, intvec poly) -diff --git a/src/sage/rings/finite_rings/element_givaro.pyx b/src/sage/rings/finite_rings/element_givaro.pyx -index 0d63a63..1bd35cf 100644 ---- a/src/sage/rings/finite_rings/element_givaro.pyx -+++ b/src/sage/rings/finite_rings/element_givaro.pyx -@@ -310,7 +310,7 @@ cdef class Cache_givaro(SageObject): - cdef int seed = current_randstate().c_random() - cdef int res - cdef GivRandom generator = GivRandomSeeded(seed) -- res = self.objectptr.random(generator,res) -+ self.objectptr.random(generator,res) - return make_FiniteField_givaroElement(self,res) - - cpdef FiniteField_givaroElement element_from_data(self, e): -@@ -386,16 +386,16 @@ cdef class Cache_givaro(SageObject): - isinstance(e, long) or is_IntegerMod(e): - try: - e_int = e % self.characteristic() -- res = self.objectptr.initi(res, e_int) -+ self.objectptr.initi(res, e_int) - except ArithmeticError: - raise TypeError("unable to coerce from a finite field other than the prime subfield") - elif e is None: - e_int = 0 -- res = self.objectptr.initi(res, e_int) -+ self.objectptr.initi(res, e_int) - - elif isinstance(e, float): - e_int = int(e) % self.characteristic() -- res = self.objectptr.initd(res, e_int) -+ self.objectptr.initd(res, e_int) - - elif isinstance(e, str): - return self.parent(eval(e.replace("^","**"),self.parent.gens_dict())) -@@ -406,7 +406,7 @@ cdef class Cache_givaro(SageObject): - ret = self._zero_element - for i in range(len(e)): - e_int = e[i] % self.characteristic() -- res = self.objectptr.initi(res, e_int) -+ self.objectptr.initi(res, e_int) - to_add = make_FiniteField_givaroElement(self, res) - ret = ret + to_add*self.parent.gen()**i - return ret -@@ -446,7 +446,7 @@ cdef class Cache_givaro(SageObject): - ret = self._zero_element - for i in range(len(e)): - e_int = e[i] % self.characteristic() -- res = self.objectptr.initi(res, e_int) -+ self.objectptr.initi(res, e_int) - to_add = make_FiniteField_givaroElement(self, res) - ret = ret + to_add*self.parent.gen()**i - return ret -@@ -475,8 +475,8 @@ cdef class Cache_givaro(SageObject): - - for i from 0 <= i <= degpol(t): - c = gtolong(gel(t, i+2)) -- res = self.objectptr.axpyin(res, self.int_to_log(c), x) -- x = self.objectptr.mul(x,x,g) -+ self.objectptr.axpyin(res, self.int_to_log(c), x) -+ self.objectptr.mulin(x,g) - clear_stack() - else: - clear_stack() -@@ -580,21 +580,10 @@ cdef class Cache_givaro(SageObject): - sage: 2^7 + 2^4 + 2^2 + 2 + 1 - 151 - """ -- cdef GivaroGfq *k = self.objectptr -- cdef int ret = k.zero -- cdef int a = k.indeterminate() -- cdef int at = k.one -- cdef int ch = k.characteristic() -- cdef int t, i -- -- if n<0 or n>k.cardinality(): -+ if n<0 or n>self.order(): - raise TypeError("n must be between 0 and self.order()") - -- for i from 0 <= i < k.exponent(): -- t = k.initi(t, n % ch) -- ret = k.axpy(ret, t, at, ret) -- at = k.mul(at,at,a) -- n //= ch -+ cdef int ret = self.int_to_log(n) - return make_FiniteField_givaroElement(self, ret) - - def _element_repr(self, FiniteField_givaroElement e): -@@ -715,7 +704,7 @@ cdef class Cache_givaro(SageObject): - """ - cdef int r - -- r = self.objectptr.axpy(r, a.element, b.element, c.element) -+ self.objectptr.axpy(r, a.element, b.element, c.element) - return make_FiniteField_givaroElement(self,r) - - def a_times_b_minus_c(self,FiniteField_givaroElement a, FiniteField_givaroElement b, FiniteField_givaroElement c): -@@ -734,7 +723,7 @@ cdef class Cache_givaro(SageObject): - """ - cdef int r - -- r = self.objectptr.axmy(r, a.element, b.element, c.element, ) -+ self.objectptr.axmy(r, a.element, b.element, c.element, ) - return make_FiniteField_givaroElement(self,r) - - def c_minus_a_times_b(self,FiniteField_givaroElement a, -@@ -754,7 +743,7 @@ cdef class Cache_givaro(SageObject): - """ - cdef int r - -- r = self.objectptr.maxpy(r , a.element, b.element, c.element, ) -+ self.objectptr.maxpy(r , a.element, b.element, c.element, ) - return make_FiniteField_givaroElement(self,r) - - def __reduce__(self): -@@ -1108,7 +1097,7 @@ cdef class FiniteField_givaroElement(FinitePolyExtElement): - 2*b^3 + 2*b^2 + 2*b + 1 - """ - cdef int r -- r = self._cache.objectptr.add(r, self.element , -+ self._cache.objectptr.add(r, self.element , - (<FiniteField_givaroElement>right).element ) - return make_FiniteField_givaroElement(self._cache,r) - -@@ -1125,7 +1114,7 @@ cdef class FiniteField_givaroElement(FinitePolyExtElement): - c^2 - """ - cdef int r -- r = self._cache.objectptr.mul(r, self.element, -+ self._cache.objectptr.mul(r, self.element, - (<FiniteField_givaroElement>right).element) - return make_FiniteField_givaroElement(self._cache,r) - -@@ -1147,7 +1136,7 @@ cdef class FiniteField_givaroElement(FinitePolyExtElement): - cdef int r - if (<FiniteField_givaroElement>right).element == 0: - raise ZeroDivisionError('division by zero in finite field') -- r = self._cache.objectptr.div(r, self.element, -+ self._cache.objectptr.div(r, self.element, - (<FiniteField_givaroElement>right).element) - return make_FiniteField_givaroElement(self._cache,r) - -@@ -1164,7 +1153,7 @@ cdef class FiniteField_givaroElement(FinitePolyExtElement): - 2*a^2 + 2*a - """ - cdef int r -- r = self._cache.objectptr.sub(r, self.element, -+ self._cache.objectptr.sub(r, self.element, - (<FiniteField_givaroElement>right).element) - return make_FiniteField_givaroElement(self._cache,r) - -@@ -1181,7 +1170,7 @@ cdef class FiniteField_givaroElement(FinitePolyExtElement): - """ - cdef int r - -- r = self._cache.objectptr.neg(r, self.element) -+ self._cache.objectptr.neg(r, self.element) - return make_FiniteField_givaroElement(self._cache,r) - - def __invert__(FiniteField_givaroElement self): diff --git a/sagemath-threejs.patch b/sagemath-threejs.patch deleted file mode 100644 index b6b6f61f775a..000000000000 --- a/sagemath-threejs.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/src/sage/repl/rich_output/display_manager.py -+++ b/src/sage/repl/rich_output/display_manager.py -@@ -746,7 +746,7 @@ class DisplayManager(SageObject): - """ - if online: - from sage.misc.package import installed_packages -- version = installed_packages()['threejs'].split('.')[0] -+ version = 'r100' - return """ - <script src="https://cdn.jsdelivr.net/gh/mrdoob/three.js@{0}/build/three.min.js"></script> - <script src="https://cdn.jsdelivr.net/gh/mrdoob/three.js@{0}/examples/js/controls/OrbitControls.js"></script> |