mirror of
https://github.com/void-linux/void-packages.git
synced 2025-06-05 06:33:50 +02:00
parent
faa986d152
commit
c8b116c72d
8 changed files with 937 additions and 264 deletions
76
srcpkgs/sagemath/patches/36641-sympy_1.13.patch
Normal file
76
srcpkgs/sagemath/patches/36641-sympy_1.13.patch
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
diff --git a/build/pkgs/sympy/requirements.txt b/build/pkgs/sympy/requirements.txt
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..3ef8f90b550
|
||||||
|
diff --git a/src/sage/doctest/forker.py b/src/sage/doctest/forker.py
|
||||||
|
index 7e9eab2ff2e..43365cd645e 100644
|
||||||
|
--- a/src/sage/doctest/forker.py
|
||||||
|
+++ b/src/sage/doctest/forker.py
|
||||||
|
@@ -150,14 +150,15 @@ def init_sage(controller=None):
|
||||||
|
sage: from sympy.printing.pretty.pretty import PrettyPrinter
|
||||||
|
sage: s = sympify('+x^'.join(str(i) for i in range(30)))
|
||||||
|
sage: print(PrettyPrinter(settings={'wrap_line': True}).doprint(s))
|
||||||
|
- 29 28 27 26 25 24 23 22 21 20 19 18 17
|
||||||
|
- x + x + x + x + x + x + x + x + x + x + x + x + x +
|
||||||
|
+ 29 28 27 26 25 24 23 22 21 20 19 18 17 ↪
|
||||||
|
+ x + x + x + x + x + x + x + x + x + x + x + x + x + ↪
|
||||||
|
<BLANKLINE>
|
||||||
|
- 16 15 14 13 12 11 10 9 8 7 6 5 4 3
|
||||||
|
- x + x + x + x + x + x + x + x + x + x + x + x + x + x + x
|
||||||
|
+ ↪ 16 15 14 13 12 11 10 9 8 7 6 5 4 3 ↪
|
||||||
|
+ ↪ x + x + x + x + x + x + x + x + x + x + x + x + x + x + ↪
|
||||||
|
<BLANKLINE>
|
||||||
|
- 2
|
||||||
|
- + x
|
||||||
|
+ ↪ 2
|
||||||
|
+ ↪ x + x
|
||||||
|
+
|
||||||
|
|
||||||
|
The displayhook sorts dictionary keys to simplify doctesting of
|
||||||
|
dictionary output::
|
||||||
|
diff --git a/src/sage/functions/hypergeometric.py b/src/sage/functions/hypergeometric.py
|
||||||
|
index 010c61febe0..bbccbd20032 100644
|
||||||
|
--- a/src/sage/functions/hypergeometric.py
|
||||||
|
+++ b/src/sage/functions/hypergeometric.py
|
||||||
|
@@ -124,7 +124,7 @@
|
||||||
|
sage: maxima(hypergeometric([1, 1, 1], [3, 3, 3], x)) # needs sage.symbolic
|
||||||
|
hypergeometric([1,1,1],[3,3,3],_SAGE_VAR_x)
|
||||||
|
sage: hypergeometric((5, 4), (4, 4), 3)._sympy_() # needs sympy sage.symbolic
|
||||||
|
- hyper((5, 4), (4, 4), 3)
|
||||||
|
+ hyper((5,), (4,), 3)
|
||||||
|
sage: hypergeometric((5, 4), (4, 4), 3)._mathematica_init_() # needs sage.symbolic
|
||||||
|
'HypergeometricPFQ[{5,4},{4,4},3]'
|
||||||
|
|
||||||
|
diff --git a/src/sage/symbolic/expression.pyx b/src/sage/symbolic/expression.pyx
|
||||||
|
index a92fe241355..f62311423be 100644
|
||||||
|
--- a/src/sage/symbolic/expression.pyx
|
||||||
|
+++ b/src/sage/symbolic/expression.pyx
|
||||||
|
@@ -1167,7 +1167,7 @@ cdef class Expression(Expression_abc):
|
||||||
|
sage: unicode_art(SR(13 - I))
|
||||||
|
13 - ⅈ
|
||||||
|
sage: unicode_art(SR(1.3 - I))
|
||||||
|
- 1.3 - ⅈ
|
||||||
|
+ 1.3 - 1.0⋅ⅈ
|
||||||
|
sage: unicode_art(cos(I))
|
||||||
|
cosh(1)
|
||||||
|
|
||||||
|
diff --git a/src/sage/typeset/ascii_art.py b/src/sage/typeset/ascii_art.py
|
||||||
|
index 28024405d27..458fa8724a3 100644
|
||||||
|
--- a/src/sage/typeset/ascii_art.py
|
||||||
|
+++ b/src/sage/typeset/ascii_art.py
|
||||||
|
@@ -44,11 +44,12 @@
|
||||||
|
sage: shell.run_cell('%display ascii_art')
|
||||||
|
sage: shell.run_cell("i = var('i')") # needs sage.symbolic
|
||||||
|
sage: shell.run_cell('sum(factorial(i)*x^i, i, 0, 10)') # needs sage.symbolic
|
||||||
|
- 10 9 8 7 6 5 4 3
|
||||||
|
- 3628800*x + 362880*x + 40320*x + 5040*x + 720*x + 120*x + 24*x + 6*x
|
||||||
|
+ 10 9 8 7 6 5 4 3 >
|
||||||
|
+ 3628800*x + 362880*x + 40320*x + 5040*x + 720*x + 120*x + 24*x + 6*x >
|
||||||
|
<BLANKLINE>
|
||||||
|
- 2
|
||||||
|
- + 2*x + x + 1
|
||||||
|
+ > 2
|
||||||
|
+ > + 2*x + x + 1
|
||||||
|
+
|
||||||
|
sage: shell.run_cell('3/(7*x)') # needs sage.symbolic
|
||||||
|
3
|
||||||
|
---
|
|
@ -1,229 +0,0 @@
|
||||||
diff --git a/src/sage/interfaces/singular.py b/src/sage/interfaces/singular.py
|
|
||||||
index 9c9b8ffb8b9..12a9aa582a6 100644
|
|
||||||
--- a/src/sage/interfaces/singular.py
|
|
||||||
+++ b/src/sage/interfaces/singular.py
|
|
||||||
@@ -1211,14 +1211,14 @@ def current_ring(self):
|
|
||||||
polynomial ring, over a field, global ordering
|
|
||||||
// coefficients: ZZ/127
|
|
||||||
// number of vars : 3
|
|
||||||
- // block 1 : ordering rp
|
|
||||||
+ // block 1 : ordering ip
|
|
||||||
// : names x y z
|
|
||||||
// block 2 : ordering C
|
|
||||||
sage: singular.current_ring()
|
|
||||||
polynomial ring, over a field, global ordering
|
|
||||||
// coefficients: ZZ/127
|
|
||||||
// number of vars : 3
|
|
||||||
- // block 1 : ordering rp
|
|
||||||
+ // block 1 : ordering ip
|
|
||||||
// : names x y z
|
|
||||||
// block 2 : ordering C
|
|
||||||
"""
|
|
||||||
@@ -2040,6 +2040,9 @@ def _sage_(self, R=None):
|
|
||||||
elif typ == 'intvec':
|
|
||||||
from sage.modules.free_module_element import vector
|
|
||||||
return vector([sage.rings.integer.Integer(str(e)) for e in self])
|
|
||||||
+ elif typ == 'bigintvec':
|
|
||||||
+ from sage.modules.free_module_element import vector
|
|
||||||
+ return vector([sage.rings.rational.Rational(str(e)) for e in self])
|
|
||||||
elif typ == 'intmat':
|
|
||||||
from sage.matrix.constructor import matrix
|
|
||||||
from sage.rings.integer_ring import ZZ
|
|
||||||
diff --git a/src/sage/libs/singular/decl.pxd b/src/sage/libs/singular/decl.pxd
|
|
||||||
index e36216d6395..855c95b00bd 100644
|
|
||||||
--- a/src/sage/libs/singular/decl.pxd
|
|
||||||
+++ b/src/sage/libs/singular/decl.pxd
|
|
||||||
@@ -243,7 +243,7 @@ cdef extern from "singular/Singular/libsingular.h":
|
|
||||||
ringorder_s
|
|
||||||
ringorder_lp
|
|
||||||
ringorder_dp
|
|
||||||
- ringorder_rp
|
|
||||||
+ ringorder_ip
|
|
||||||
ringorder_Dp
|
|
||||||
ringorder_wp
|
|
||||||
ringorder_Wp
|
|
||||||
@@ -291,6 +291,10 @@ cdef extern from "singular/Singular/libsingular.h":
|
|
||||||
int row
|
|
||||||
int col
|
|
||||||
|
|
||||||
+ cdef cppclass bigintmat:
|
|
||||||
+ int (*length)()
|
|
||||||
+ number* (*get)(int i)
|
|
||||||
+
|
|
||||||
# omalloc bins
|
|
||||||
|
|
||||||
ctypedef struct omBin "omBin_s"
|
|
||||||
@@ -921,6 +925,7 @@ cdef extern from "singular/Singular/libsingular.h":
|
|
||||||
cdef int MATRIX_CMD
|
|
||||||
cdef int LIST_CMD
|
|
||||||
cdef int INTVEC_CMD
|
|
||||||
+ cdef int BIGINTVEC_CMD
|
|
||||||
cdef int NONE
|
|
||||||
cdef int RESOLUTION_CMD
|
|
||||||
cdef int PACKAGE_CMD
|
|
||||||
diff --git a/src/sage/libs/singular/function.pyx b/src/sage/libs/singular/function.pyx
|
|
||||||
index ac4bde0c20b..8284cb921a3 100644
|
|
||||||
--- a/src/sage/libs/singular/function.pyx
|
|
||||||
+++ b/src/sage/libs/singular/function.pyx
|
|
||||||
@@ -98,7 +98,7 @@ from sage.rings.polynomial.multi_polynomial_sequence import PolynomialSequence_g
|
|
||||||
from sage.libs.singular.decl cimport *
|
|
||||||
from sage.libs.singular.option import opt_ctx
|
|
||||||
from sage.libs.singular.polynomial cimport singular_vector_maximal_component
|
|
||||||
-from sage.libs.singular.singular cimport sa2si, si2sa, si2sa_intvec
|
|
||||||
+from sage.libs.singular.singular cimport sa2si, si2sa, si2sa_intvec, si2sa_bigintvec
|
|
||||||
from sage.libs.singular.singular import error_messages
|
|
||||||
|
|
||||||
from sage.interfaces.singular import get_docstring
|
|
||||||
@@ -954,6 +954,8 @@ cdef class Converter(SageObject):
|
|
||||||
return si2sa(<number *>to_convert.data, self._singular_ring, self._sage_ring.base_ring())
|
|
||||||
elif rtyp == INTVEC_CMD:
|
|
||||||
return si2sa_intvec(<intvec *> to_convert.data)
|
|
||||||
+ elif rtyp == BIGINTVEC_CMD:
|
|
||||||
+ return si2sa_bigintvec(<bigintmat *> to_convert.data)
|
|
||||||
elif rtyp == STRING_CMD:
|
|
||||||
# TODO: Need to determine what kind of data can be returned by a
|
|
||||||
# STRING_CMD--is it just ASCII strings or can it be an arbitrary
|
|
||||||
@@ -1231,7 +1233,7 @@ cdef class SingularFunction(SageObject):
|
|
||||||
Traceback (most recent call last):
|
|
||||||
...
|
|
||||||
RuntimeError: error in Singular function call 'size':
|
|
||||||
- Wrong number of arguments (got 2 arguments, arity code is 302)
|
|
||||||
+ Wrong number of arguments (got 2 arguments, arity code is 303)
|
|
||||||
sage: size('foobar', ring=P)
|
|
||||||
6
|
|
||||||
|
|
||||||
@@ -1634,17 +1636,17 @@ def singular_function(name):
|
|
||||||
Traceback (most recent call last):
|
|
||||||
...
|
|
||||||
RuntimeError: error in Singular function call 'factorize':
|
|
||||||
- Wrong number of arguments (got 0 arguments, arity code is 305)
|
|
||||||
+ Wrong number of arguments (got 0 arguments, arity code is 306)
|
|
||||||
sage: factorize(f, 1, 2)
|
|
||||||
Traceback (most recent call last):
|
|
||||||
...
|
|
||||||
RuntimeError: error in Singular function call 'factorize':
|
|
||||||
- Wrong number of arguments (got 3 arguments, arity code is 305)
|
|
||||||
+ Wrong number of arguments (got 3 arguments, arity code is 306)
|
|
||||||
sage: factorize(f, 1, 2, 3)
|
|
||||||
Traceback (most recent call last):
|
|
||||||
...
|
|
||||||
RuntimeError: error in Singular function call 'factorize':
|
|
||||||
- Wrong number of arguments (got 4 arguments, arity code is 305)
|
|
||||||
+ Wrong number of arguments (got 4 arguments, arity code is 306)
|
|
||||||
|
|
||||||
The Singular function ``list`` can be called with any number of
|
|
||||||
arguments::
|
|
||||||
diff --git a/src/sage/libs/singular/ring.pyx b/src/sage/libs/singular/ring.pyx
|
|
||||||
index 494fd2c0caf..7b05d63e7c7 100644
|
|
||||||
--- a/src/sage/libs/singular/ring.pyx
|
|
||||||
+++ b/src/sage/libs/singular/ring.pyx
|
|
||||||
@@ -24,7 +24,7 @@ from sage.libs.gmp.mpz cimport mpz_init_set_ui
|
|
||||||
from sage.libs.singular.decl cimport ring, currRing
|
|
||||||
from sage.libs.singular.decl cimport rChangeCurrRing, rComplete, rDelete, idInit
|
|
||||||
from sage.libs.singular.decl cimport omAlloc0, omStrDup, omAlloc
|
|
||||||
-from sage.libs.singular.decl cimport ringorder_dp, ringorder_Dp, ringorder_lp, ringorder_rp, ringorder_ds, ringorder_Ds, ringorder_ls, ringorder_M, ringorder_c, ringorder_C, ringorder_wp, ringorder_Wp, ringorder_ws, ringorder_Ws, ringorder_a, rRingOrder_t
|
|
||||||
+from sage.libs.singular.decl cimport ringorder_dp, ringorder_Dp, ringorder_lp, ringorder_ip, ringorder_ds, ringorder_Ds, ringorder_ls, ringorder_M, ringorder_c, ringorder_C, ringorder_wp, ringorder_Wp, ringorder_ws, ringorder_Ws, ringorder_a, rRingOrder_t
|
|
||||||
from sage.libs.singular.decl cimport prCopyR
|
|
||||||
from sage.libs.singular.decl cimport n_unknown, n_algExt, n_transExt, n_Z, n_Zn, n_Znm, n_Z2m
|
|
||||||
from sage.libs.singular.decl cimport n_coeffType
|
|
||||||
@@ -60,7 +60,7 @@ order_dict = {
|
|
||||||
"dp": ringorder_dp,
|
|
||||||
"Dp": ringorder_Dp,
|
|
||||||
"lp": ringorder_lp,
|
|
||||||
- "rp": ringorder_rp,
|
|
||||||
+ "ip": ringorder_ip,
|
|
||||||
"ds": ringorder_ds,
|
|
||||||
"Ds": ringorder_Ds,
|
|
||||||
"ls": ringorder_ls,
|
|
||||||
diff --git a/src/sage/libs/singular/singular.pxd b/src/sage/libs/singular/singular.pxd
|
|
||||||
index d943a1018a2..f398d27a1fa 100644
|
|
||||||
--- a/src/sage/libs/singular/singular.pxd
|
|
||||||
+++ b/src/sage/libs/singular/singular.pxd
|
|
||||||
@@ -1,4 +1,4 @@
|
|
||||||
-from sage.libs.singular.decl cimport ring, poly, number, intvec
|
|
||||||
+from sage.libs.singular.decl cimport ring, poly, number, intvec, bigintmat
|
|
||||||
from sage.libs.singular.function cimport Resolution
|
|
||||||
|
|
||||||
from sage.rings.rational cimport Rational
|
|
||||||
@@ -29,6 +29,7 @@ cdef object si2sa_ZZmod(number *n, ring *_ring, object base) noexcept
|
|
||||||
cdef object si2sa_NF(number *n, ring *_ring, object base) noexcept
|
|
||||||
|
|
||||||
cdef object si2sa_intvec(intvec *v) noexcept
|
|
||||||
+cdef object si2sa_bigintvec(bigintmat *v) noexcept
|
|
||||||
|
|
||||||
# dispatches to all the above.
|
|
||||||
cdef object si2sa(number *n, ring *_ring, object base) noexcept
|
|
||||||
diff --git a/src/sage/libs/singular/singular.pyx b/src/sage/libs/singular/singular.pyx
|
|
||||||
index cf0124e0a35..0e5c7774e80 100644
|
|
||||||
--- a/src/sage/libs/singular/singular.pyx
|
|
||||||
+++ b/src/sage/libs/singular/singular.pyx
|
|
||||||
@@ -1699,6 +1699,25 @@ cdef object si2sa_intvec(intvec *v) noexcept:
|
|
||||||
l.append(v.get(r))
|
|
||||||
return tuple(l)
|
|
||||||
|
|
||||||
+cdef object si2sa_bigintvec(bigintmat *v) noexcept:
|
|
||||||
+ r"""
|
|
||||||
+ create a sage tuple from a singular vector of big integers
|
|
||||||
+
|
|
||||||
+ INPUT:
|
|
||||||
+
|
|
||||||
+ - ``v`` -- a (pointer to) singular bigintmat
|
|
||||||
+
|
|
||||||
+ OUTPUT:
|
|
||||||
+
|
|
||||||
+ a sage tuple
|
|
||||||
+ """
|
|
||||||
+ cdef int r
|
|
||||||
+ cdef list l = list()
|
|
||||||
+ for r in range(v.length()):
|
|
||||||
+ n = v.get(r)
|
|
||||||
+ l.append(si2sa_QQ(n, &n, currRing))
|
|
||||||
+ return tuple(l)
|
|
||||||
+
|
|
||||||
# ==============
|
|
||||||
# Initialisation
|
|
||||||
# ==============
|
|
||||||
diff --git a/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx b/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
|
|
||||||
index 70386eb0b50..b18c53de177 100644
|
|
||||||
--- a/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
|
|
||||||
+++ b/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
|
|
||||||
@@ -1285,7 +1285,7 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
|
|
||||||
polynomial ring, over a field, global ordering
|
|
||||||
// coefficients: ZZ/2[a]/(a^8+a^4+a^3+a^2+1)
|
|
||||||
// number of vars : 10
|
|
||||||
- // block 1 : ordering rp
|
|
||||||
+ // block 1 : ordering ip
|
|
||||||
// : names x0 x1 x2 x3 x4 x5 x6 x7 x8 x9
|
|
||||||
// block 2 : ordering C
|
|
||||||
|
|
||||||
@@ -1294,7 +1294,7 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
|
|
||||||
polynomial ring, over a field, global ordering
|
|
||||||
// coefficients: ZZ/127
|
|
||||||
// number of vars : 2
|
|
||||||
- // block 1 : ordering rp
|
|
||||||
+ // block 1 : ordering ip
|
|
||||||
// : names x0 x1
|
|
||||||
// block 2 : ordering C
|
|
||||||
|
|
||||||
@@ -1303,7 +1303,7 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
|
|
||||||
polynomial ring, over a field, global ordering
|
|
||||||
// coefficients: QQ
|
|
||||||
// number of vars : 2
|
|
||||||
- // block 1 : ordering rp
|
|
||||||
+ // block 1 : ordering ip
|
|
||||||
// : names x0 x1
|
|
||||||
// block 2 : ordering C
|
|
||||||
|
|
||||||
diff --git a/src/sage/rings/polynomial/term_order.py b/src/sage/rings/polynomial/term_order.py
|
|
||||||
index 48e49ac89fa..65e68681485 100644
|
|
||||||
--- a/src/sage/rings/polynomial/term_order.py
|
|
||||||
+++ b/src/sage/rings/polynomial/term_order.py
|
|
||||||
@@ -388,7 +388,7 @@
|
|
||||||
|
|
||||||
singular_name_mapping = {
|
|
||||||
'lex' : 'lp',
|
|
||||||
- 'invlex' : 'rp',
|
|
||||||
+ 'invlex' : 'ip',
|
|
||||||
'degrevlex' : 'dp',
|
|
||||||
'deglex' : 'Dp',
|
|
||||||
'neglex' : 'ls',
|
|
|
@ -1,13 +0,0 @@
|
||||||
diff --git a/src/sage/matrix/matrix_double_dense.pyx b/src/sage/matrix/matrix_double_dense.pyx
|
|
||||||
index 6877a924de2..a01defad999 100644
|
|
||||||
--- a/src/sage/matrix/matrix_double_dense.pyx
|
|
||||||
+++ b/src/sage/matrix/matrix_double_dense.pyx
|
|
||||||
@@ -3683,7 +3683,7 @@ cdef class Matrix_double_dense(Matrix_numpy_dense):
|
|
||||||
sage: A = matrix(CDF, 2, [1,2+I,3*I,4]); A # needs sage.symbolic
|
|
||||||
[ 1.0 2.0 + 1.0*I]
|
|
||||||
[ 3.0*I 4.0]
|
|
||||||
- sage: A.exp() # tol 1.1e-14 # needs sage.symbolic
|
|
||||||
+ sage: A.exp() # tol 3e-14 # needs sage.symbolic
|
|
||||||
[-19.614602953804912 + 12.517743846762578*I 3.7949636449582176 + 28.88379930658099*I]
|
|
||||||
[ -32.383580980922254 + 21.88423595789845*I 2.269633004093535 + 44.901324827684824*I]
|
|
||||||
|
|
203
srcpkgs/sagemath/patches/37884-gap_4.13.1.patch
Normal file
203
srcpkgs/sagemath/patches/37884-gap_4.13.1.patch
Normal file
|
@ -0,0 +1,203 @@
|
||||||
|
diff --git a/src/sage/algebras/fusion_rings/fusion_double.py b/src/sage/algebras/fusion_rings/fusion_double.py
|
||||||
|
index 7ce086f70d0..954513572c3 100644
|
||||||
|
--- a/src/sage/algebras/fusion_rings/fusion_double.py
|
||||||
|
+++ b/src/sage/algebras/fusion_rings/fusion_double.py
|
||||||
|
@@ -133,7 +133,7 @@ class FusionDouble(CombinatorialFreeModule):
|
||||||
|
sage: G = SmallPermutationGroup(16,9)
|
||||||
|
sage: F = FusionDouble(G, prefix="b",inject_variables=True)
|
||||||
|
sage: b13^2 # long time (4s)
|
||||||
|
- b0 + b2 + b4 + b15 + b16 + b17 + b18 + b24 + b26 + b27
|
||||||
|
+ b0 + b3 + b4
|
||||||
|
|
||||||
|
"""
|
||||||
|
@staticmethod
|
||||||
|
diff --git a/src/sage/categories/simplicial_sets.py b/src/sage/categories/simplicial_sets.py
|
||||||
|
index e714a4571c4..a2b87a729d1 100644
|
||||||
|
--- a/src/sage/categories/simplicial_sets.py
|
||||||
|
+++ b/src/sage/categories/simplicial_sets.py
|
||||||
|
@@ -593,9 +593,9 @@ def _canonical_twisting_operator(self):
|
||||||
|
sage: X = simplicial_sets.Torus()
|
||||||
|
sage: d = X._canonical_twisting_operator()
|
||||||
|
sage: d
|
||||||
|
- {(s_0 v_0, sigma_1): f3, (sigma_1, s_0 v_0): f2*f3^-1, (sigma_1, sigma_1): f2}
|
||||||
|
+ {(s_0 v_0, sigma_1): f2, (sigma_1, s_0 v_0): f1*f2^-1, (sigma_1, sigma_1): f1}
|
||||||
|
sage: list(d.values())[0].parent()
|
||||||
|
- Multivariate Laurent Polynomial Ring in f2, f3 over Integer Ring
|
||||||
|
+ Multivariate Laurent Polynomial Ring in f1, f2 over Integer Ring
|
||||||
|
sage: Y = simplicial_sets.RealProjectiveSpace(2)
|
||||||
|
sage: d2 = Y._canonical_twisting_operator()
|
||||||
|
sage: d2
|
||||||
|
@@ -677,10 +677,10 @@ def twisted_chain_complex(self, twisting_operator=None, dimensions=None, augment
|
||||||
|
sage: X = simplicial_sets.Torus()
|
||||||
|
sage: C = X.twisted_chain_complex()
|
||||||
|
sage: C.differential(1)
|
||||||
|
- [ f3 - 1 f2*f3^-1 - 1 f2 - 1]
|
||||||
|
+ [ f2 - 1 f1*f2^-1 - 1 f1 - 1]
|
||||||
|
sage: C.differential(2)
|
||||||
|
- [ 1 f2*f3^-1]
|
||||||
|
- [ f3 1]
|
||||||
|
+ [ 1 f1*f2^-1]
|
||||||
|
+ [ f2 1]
|
||||||
|
[ -1 -1]
|
||||||
|
sage: C.differential(3)
|
||||||
|
[]
|
||||||
|
@@ -848,29 +848,29 @@ def twisted_homology(self, n, reduced=False):
|
||||||
|
sage: # needs sage.graphs
|
||||||
|
sage: Y = simplicial_sets.Torus()
|
||||||
|
sage: Y.twisted_homology(1)
|
||||||
|
- Quotient module by Submodule of Ambient free module of rank 5 over the integral domain Multivariate Polynomial Ring in f2, f2inv, f3, f3inv over Integer Ring
|
||||||
|
+ Quotient module by Submodule of Ambient free module of rank 5 over the integral domain Multivariate Polynomial Ring in f1, f1inv, f2, f2inv over Integer Ring
|
||||||
|
Generated by the rows of the matrix:
|
||||||
|
[ 1 0 0 0 0]
|
||||||
|
[ 0 1 0 0 0]
|
||||||
|
[ 0 0 1 0 0]
|
||||||
|
[ 0 0 0 1 0]
|
||||||
|
[ 0 0 0 0 1]
|
||||||
|
+ [f1*f1inv - 1 0 0 0 0]
|
||||||
|
+ [ 0 f1*f1inv - 1 0 0 0]
|
||||||
|
+ [ 0 0 f1*f1inv - 1 0 0]
|
||||||
|
+ [ 0 0 0 f1*f1inv - 1 0]
|
||||||
|
+ [ 0 0 0 0 f1*f1inv - 1]
|
||||||
|
[f2*f2inv - 1 0 0 0 0]
|
||||||
|
[ 0 f2*f2inv - 1 0 0 0]
|
||||||
|
[ 0 0 f2*f2inv - 1 0 0]
|
||||||
|
[ 0 0 0 f2*f2inv - 1 0]
|
||||||
|
[ 0 0 0 0 f2*f2inv - 1]
|
||||||
|
- [f3*f3inv - 1 0 0 0 0]
|
||||||
|
- [ 0 f3*f3inv - 1 0 0 0]
|
||||||
|
- [ 0 0 f3*f3inv - 1 0 0]
|
||||||
|
- [ 0 0 0 f3*f3inv - 1 0]
|
||||||
|
- [ 0 0 0 0 f3*f3inv - 1]
|
||||||
|
sage: Y.twisted_homology(2)
|
||||||
|
- Quotient module by Submodule of Ambient free module of rank 0 over the integral domain Multivariate Polynomial Ring in f2, f2inv, f3, f3inv over Integer Ring
|
||||||
|
+ Quotient module by Submodule of Ambient free module of rank 0 over the integral domain Multivariate Polynomial Ring in f1, f1inv, f2, f2inv over Integer Ring
|
||||||
|
Generated by the rows of the matrix:
|
||||||
|
[]
|
||||||
|
sage: Y.twisted_homology(1, reduced=True)
|
||||||
|
- Quotient module by Submodule of Ambient free module of rank 5 over the integral domain Multivariate Polynomial Ring in f2, f2inv, f3, f3inv over Integer Ring
|
||||||
|
+ Quotient module by Submodule of Ambient free module of rank 5 over the integral domain Multivariate Polynomial Ring in f1, f1inv, f2, f2inv over Integer Ring
|
||||||
|
Generated by the rows of the matrix:
|
||||||
|
[1 0 0 0 0]
|
||||||
|
[0 1 0 0 0]
|
||||||
|
diff --git a/src/sage/combinat/matrices/latin.py b/src/sage/combinat/matrices/latin.py
|
||||||
|
index 936edcc6ea4..c06a53d9afd 100644
|
||||||
|
--- a/src/sage/combinat/matrices/latin.py
|
||||||
|
+++ b/src/sage/combinat/matrices/latin.py
|
||||||
|
@@ -2453,7 +2453,7 @@ def p3_group_bitrade_generators(p):
|
||||||
|
EXAMPLES::
|
||||||
|
|
||||||
|
sage: from sage.combinat.matrices.latin import *
|
||||||
|
- sage: p3_group_bitrade_generators(3)
|
||||||
|
+ sage: p3_group_bitrade_generators(3) # random output
|
||||||
|
((2,6,7)(3,8,9),
|
||||||
|
(1,2,3)(4,7,8)(5,6,9),
|
||||||
|
(1,9,2)(3,7,4)(5,8,6),
|
||||||
|
diff --git a/src/sage/groups/cubic_braid.py b/src/sage/groups/cubic_braid.py
|
||||||
|
index 257b400f1c7..36423c756aa 100644
|
||||||
|
--- a/src/sage/groups/cubic_braid.py
|
||||||
|
+++ b/src/sage/groups/cubic_braid.py
|
||||||
|
@@ -282,7 +282,7 @@ def _richcmp_(self, other, op):
|
||||||
|
EXAMPLES::
|
||||||
|
|
||||||
|
sage: CBG3 = CubicBraidGroup(3)
|
||||||
|
- sage: sorted(CBG3) # indirect doctest
|
||||||
|
+ sage: sorted(CBG3) # indirect doctest, random output
|
||||||
|
[(c0*c1^-1)^2, c0*c1^-1*c0, c0^-1*c1*c0^-1, c0^-1*c1^-1*c0,
|
||||||
|
c1*c0^-1*c1, c0^-1*c1^-1*c0^-1, c0^-1*c1^-1, c1^-1*c0*c1^-1,
|
||||||
|
c0*c1^-1*c0^-1, c0^-1*c1, c0^-1*c1*c0, c0*c1^-1, c1*c0^-1,
|
||||||
|
diff --git a/src/sage/groups/finitely_presented.py b/src/sage/groups/finitely_presented.py
|
||||||
|
index 4bb52ee4efb..85f572fac6c 100644
|
||||||
|
--- a/src/sage/groups/finitely_presented.py
|
||||||
|
+++ b/src/sage/groups/finitely_presented.py
|
||||||
|
@@ -1344,8 +1344,8 @@ def abelianization_map(self):
|
||||||
|
sage: H = G.quotient([g1^2, g2*g1*g2^(-1)*g1^(-1), g1*g3^(-2), g0^4])
|
||||||
|
sage: H.abelianization_map()
|
||||||
|
Group morphism:
|
||||||
|
- From: Finitely presented group < g0, g1, g2, g3 | g1^2, g2*g1*g2^-1*g1^-1, g1*g3^-2, g0^4 >
|
||||||
|
- To: Finitely presented group < f2, f3, f4 | f2^-1*f3^-1*f2*f3, f2^-1*f4^-1*f2*f4, f3^-1*f4^-1*f3*f4, f2^4, f3^4 >
|
||||||
|
+ From: Finitely presented group < g0, g1, g2, g3 | g1^2, g2*g1*g2^-1*g1^-1, g1*g3^-2, g0^4 >
|
||||||
|
+ To: Finitely presented group < f1, f2, f3 | f1^4, f2^-1*f1^-1*f2*f1, f2^4, f3^-1*f1^-1*f3*f1, f3^-1*f2^-1*f3*f2 >
|
||||||
|
sage: g = FreeGroup(0) / []
|
||||||
|
sage: g.abelianization_map()
|
||||||
|
Group endomorphism of Finitely presented group < | >
|
||||||
|
@@ -1394,10 +1394,10 @@ def abelianization_to_algebra(self, ring=QQ):
|
||||||
|
Defining g0, g1, g2, g3
|
||||||
|
sage: H = G.quotient([g1^2, g2*g1*g2^(-1)*g1^(-1), g1*g3^(-2), g0^4])
|
||||||
|
sage: H.abelianization_to_algebra()
|
||||||
|
- (Finitely presented group < f2, f3, f4 | f2^-1*f3^-1*f2*f3, f2^-1*f4^-1*f2*f4,
|
||||||
|
- f3^-1*f4^-1*f3*f4, f2^4, f3^4 >,
|
||||||
|
- Multivariate Laurent Polynomial Ring in f2, f3, f4 over Rational Field,
|
||||||
|
- [f2^4 - 1, f3^4 - 1], [f2^-1*f3^-2, f3^-2, f4, f3])
|
||||||
|
+ (Finitely presented group < f1, f2, f3 | f1^4, f2^-1*f1^-1*f2*f1, f2^4, f3^-1*f1^-1*f3*f1, f3^-1*f2^-1*f3*f2 >,
|
||||||
|
+ Multivariate Laurent Polynomial Ring in f1, f2, f3 over Rational Field,
|
||||||
|
+ [f1^4 - 1, f2^4 - 1],
|
||||||
|
+ [f1^3*f2^2, f2^2, f3, f2])
|
||||||
|
sage: g=FreeGroup(0) / []
|
||||||
|
sage: g.abelianization_to_algebra()
|
||||||
|
(Finitely presented group < | >, Rational Field, [], [])
|
||||||
|
@@ -1673,7 +1673,7 @@ def abelian_alexander_matrix(self, ring=QQ, simplified=True):
|
||||||
|
[]
|
||||||
|
sage: G = FreeGroup(3)/[(2, 1, 1), (1, 2, 2, 3, 3)]
|
||||||
|
sage: A, ideal = G.abelian_alexander_matrix(simplified=True); A
|
||||||
|
- [-f3^2 - f3^4 - f3^6 f3^3 + f3^6]
|
||||||
|
+ [-f1^2 - f1^4 - f1^6 f1^3 + f1^6]
|
||||||
|
sage: g = FreeGroup(1) / []
|
||||||
|
sage: g.abelian_alexander_matrix()
|
||||||
|
([], [])
|
||||||
|
@@ -1773,11 +1773,11 @@ def characteristic_varieties(self, ring=QQ, matrix_ideal=None, groebner=False):
|
||||||
|
3: Ideal (1) of Multivariate Laurent Polynomial Ring in f1, f2 over Integer Ring}
|
||||||
|
sage: G = FreeGroup(2)/[(1,2,1,-2,-1,-2)]
|
||||||
|
sage: G.characteristic_varieties()
|
||||||
|
- {0: Ideal (0) of Univariate Laurent Polynomial Ring in f2 over Rational Field,
|
||||||
|
- 1: Ideal (-1 + 2*f2 - 2*f2^2 + f2^3) of Univariate Laurent Polynomial Ring in f2 over Rational Field,
|
||||||
|
- 2: Ideal (1) of Univariate Laurent Polynomial Ring in f2 over Rational Field}
|
||||||
|
+ {0: Ideal (0) of Univariate Laurent Polynomial Ring in f1 over Rational Field,
|
||||||
|
+ 1: Ideal (-1 + 2*f1 - 2*f1^2 + f1^3) of Univariate Laurent Polynomial Ring in f1 over Rational Field,
|
||||||
|
+ 2: Ideal (1) of Univariate Laurent Polynomial Ring in f1 over Rational Field}
|
||||||
|
sage: G.characteristic_varieties(groebner=True)
|
||||||
|
- {0: [0], 1: [-1 + f2, 1 - f2 + f2^2], 2: []}
|
||||||
|
+ {0: [0], 1: [-1 + f1, 1 - f1 + f1^2], 2: []}
|
||||||
|
sage: G = FreeGroup(2)/[3 * (1, ), 2 * (2, )]
|
||||||
|
sage: G.characteristic_varieties(groebner=True)
|
||||||
|
{0: [-1 + F1, 1 + F1, 1 - F1 + F1^2, 1 + F1 + F1^2], 1: [1 - F1 + F1^2], 2: []}
|
||||||
|
diff --git a/src/sage/groups/perm_gps/permgroup_named.py b/src/sage/groups/perm_gps/permgroup_named.py
|
||||||
|
index c1f2683907b..d219e104a2c 100644
|
||||||
|
--- a/src/sage/groups/perm_gps/permgroup_named.py
|
||||||
|
+++ b/src/sage/groups/perm_gps/permgroup_named.py
|
||||||
|
@@ -3468,16 +3468,14 @@ class SmallPermutationGroup(PermutationGroup_generic):
|
||||||
|
sage: G = SmallPermutationGroup(12,4); G
|
||||||
|
Group of order 12 and GAP Id 4 as a permutation group
|
||||||
|
sage: G.gens()
|
||||||
|
- ((1,2)(3,5)(4,10)(6,8)(7,12)(9,11),
|
||||||
|
- (1,3)(2,5)(4,7)(6,9)(8,11)(10,12),
|
||||||
|
- (1,4,8)(2,6,10)(3,7,11)(5,9,12))
|
||||||
|
+ ((4,5), (1,2), (3,4,5))
|
||||||
|
sage: G.character_table() # needs sage.rings.number_field
|
||||||
|
[ 1 1 1 1 1 1]
|
||||||
|
- [ 1 -1 -1 1 1 -1]
|
||||||
|
+ [ 1 -1 1 -1 1 -1]
|
||||||
|
[ 1 -1 1 1 -1 1]
|
||||||
|
- [ 1 1 -1 1 -1 -1]
|
||||||
|
- [ 2 0 -2 -1 0 1]
|
||||||
|
- [ 2 0 2 -1 0 -1]
|
||||||
|
+ [ 1 1 1 -1 -1 -1]
|
||||||
|
+ [ 2 0 -1 -2 0 1]
|
||||||
|
+ [ 2 0 -1 2 0 -1]
|
||||||
|
sage: def numgps(n): return ZZ(libgap.NumberSmallGroups(n))
|
||||||
|
sage: all(SmallPermutationGroup(n,k).id() == [n,k]
|
||||||
|
....: for n in [1..64] for k in [1..numgps(n)])
|
||||||
|
@@ -3486,11 +3484,11 @@ class SmallPermutationGroup(PermutationGroup_generic):
|
||||||
|
sage: H.is_abelian()
|
||||||
|
False
|
||||||
|
sage: [H.centralizer(g) for g in H.conjugacy_classes_representatives()]
|
||||||
|
- [Subgroup generated by [(1,2)(3,6)(4,5), (1,3,5)(2,4,6)] of
|
||||||
|
+ [Subgroup generated by [(1,3), (2,3)] of
|
||||||
|
(Group of order 6 and GAP Id 1 as a permutation group),
|
||||||
|
- Subgroup generated by [(1,2)(3,6)(4,5)] of
|
||||||
|
+ Subgroup generated by [(2,3)] of
|
||||||
|
(Group of order 6 and GAP Id 1 as a permutation group),
|
||||||
|
- Subgroup generated by [(1,3,5)(2,4,6), (1,5,3)(2,6,4)] of
|
||||||
|
+ Subgroup generated by [(1,2,3)] of
|
||||||
|
(Group of order 6 and GAP Id 1 as a permutation group)]
|
||||||
|
"""
|
||||||
|
|
587
srcpkgs/sagemath/patches/38250-numpy_2.0.patch
Normal file
587
srcpkgs/sagemath/patches/38250-numpy_2.0.patch
Normal file
|
@ -0,0 +1,587 @@
|
||||||
|
diff --git a/src/sage/arith/misc.py b/src/sage/arith/misc.py
|
||||||
|
index 28f81d7b798..d184c52bf19 100644
|
||||||
|
--- a/src/sage/arith/misc.py
|
||||||
|
+++ b/src/sage/arith/misc.py
|
||||||
|
@@ -2277,7 +2277,7 @@ def power_mod(a, n, m):
|
||||||
|
|
||||||
|
sage: from numpy import int32 # needs numpy
|
||||||
|
sage: power_mod(int32(2), int32(390), int32(391)) # needs numpy
|
||||||
|
- 285
|
||||||
|
+ ...285...
|
||||||
|
sage: from gmpy2 import mpz
|
||||||
|
sage: power_mod(mpz(2), mpz(390), mpz(391))
|
||||||
|
mpz(285)
|
||||||
|
diff --git a/src/sage/calculus/interpolators.pyx b/src/sage/calculus/interpolators.pyx
|
||||||
|
index 221b52369e2..bb0be7bab0c 100644
|
||||||
|
--- a/src/sage/calculus/interpolators.pyx
|
||||||
|
+++ b/src/sage/calculus/interpolators.pyx
|
||||||
|
@@ -27,6 +27,9 @@ Development supported by NSF award No. 0702939.
|
||||||
|
import numpy as np
|
||||||
|
cimport numpy as np
|
||||||
|
|
||||||
|
+if int(np.version.short_version[0]) > 1:
|
||||||
|
+ np.set_printoptions(legacy="1.25")
|
||||||
|
+
|
||||||
|
from math import pi
|
||||||
|
cdef double TWOPI = 2*pi
|
||||||
|
|
||||||
|
diff --git a/src/sage/calculus/riemann.pyx b/src/sage/calculus/riemann.pyx
|
||||||
|
index 6ec80d89aa7..c09d93c4260 100644
|
||||||
|
--- a/src/sage/calculus/riemann.pyx
|
||||||
|
+++ b/src/sage/calculus/riemann.pyx
|
||||||
|
@@ -44,6 +44,9 @@ from sage.calculus.integration import numerical_integral
|
||||||
|
import numpy as np
|
||||||
|
cimport numpy as np
|
||||||
|
|
||||||
|
+if int(np.version.short_version[0]) > 1:
|
||||||
|
+ np.set_printoptions(legacy="1.25")
|
||||||
|
+
|
||||||
|
from math import pi
|
||||||
|
from math import sin
|
||||||
|
from math import cos
|
||||||
|
diff --git a/src/sage/combinat/fully_packed_loop.py b/src/sage/combinat/fully_packed_loop.py
|
||||||
|
index b198fed0c0d..b3ebd206cd2 100644
|
||||||
|
--- a/src/sage/combinat/fully_packed_loop.py
|
||||||
|
+++ b/src/sage/combinat/fully_packed_loop.py
|
||||||
|
@@ -66,6 +66,9 @@ def _make_color_list(n, colors=None, color_map=None, randomize=False):
|
||||||
|
r"""
|
||||||
|
TESTS::
|
||||||
|
|
||||||
|
+ sage: import numpy as np
|
||||||
|
+ sage: if int(np.version.short_version[0]) > 1:
|
||||||
|
+ ....: np.set_printoptions(legacy="1.25")
|
||||||
|
sage: from sage.combinat.fully_packed_loop import _make_color_list
|
||||||
|
sage: _make_color_list(5)
|
||||||
|
sage: _make_color_list(5, ['blue', 'red'])
|
||||||
|
diff --git a/src/sage/env.py b/src/sage/env.py
|
||||||
|
index 722649ab3da..abb9b19f9e3 100644
|
||||||
|
--- a/src/sage/env.py
|
||||||
|
+++ b/src/sage/env.py
|
||||||
|
@@ -296,7 +296,7 @@ def sage_include_directories(use_sources=False):
|
||||||
|
sage: import sage.env
|
||||||
|
sage: sage.env.sage_include_directories()
|
||||||
|
['...',
|
||||||
|
- '.../numpy/core/include',
|
||||||
|
+ '.../numpy/...core/include',
|
||||||
|
'.../include/python...']
|
||||||
|
|
||||||
|
To check that C/C++ files are correctly found, we verify that we can
|
||||||
|
diff --git a/src/sage/functions/special.py b/src/sage/functions/special.py
|
||||||
|
index e100ba3ee23..2a03bb68f67 100644
|
||||||
|
--- a/src/sage/functions/special.py
|
||||||
|
+++ b/src/sage/functions/special.py
|
||||||
|
@@ -217,6 +217,9 @@ class SphericalHarmonic(BuiltinFunction):
|
||||||
|
sage: spherical_harmonic(1, 1, pi/2, pi).n() # abs tol 1e-14 # needs sage.symbolic
|
||||||
|
0.345494149471335
|
||||||
|
sage: from scipy.special import sph_harm # NB: arguments x and y are swapped # needs scipy
|
||||||
|
+ sage: import numpy as np # needs scipy
|
||||||
|
+ sage: if int(np.version.short_version[0]) > 1: # needs scipy
|
||||||
|
+ ....: np.set_printoptions(legacy="1.25") # needs scipy
|
||||||
|
sage: sph_harm(1, 1, pi.n(), (pi/2).n()) # abs tol 1e-14 # needs scipy sage.symbolic
|
||||||
|
(0.3454941494713355-4.231083042742082e-17j)
|
||||||
|
|
||||||
|
diff --git a/src/sage/graphs/generators/classical_geometries.py b/src/sage/graphs/generators/classical_geometries.py
|
||||||
|
index da04362eef3..957f88d2061 100644
|
||||||
|
--- a/src/sage/graphs/generators/classical_geometries.py
|
||||||
|
+++ b/src/sage/graphs/generators/classical_geometries.py
|
||||||
|
@@ -1315,7 +1315,7 @@ def CossidentePenttilaGraph(q):
|
||||||
|
|
||||||
|
from sage.libs.gap.libgap import libgap
|
||||||
|
adj_list = libgap.function_factory("""function(q)
|
||||||
|
- local z, e, so, G, nu, G1, G0, B, T, s, O1, O2, x;
|
||||||
|
+ local z, e, so, G, nu, G1, G0, B, T, s, O1, O2, x, sqo;
|
||||||
|
LoadPackage("grape");
|
||||||
|
G0:=SO(3,q^2);
|
||||||
|
so:=GeneratorsOfGroup(G0);
|
||||||
|
diff --git a/src/sage/graphs/generic_graph.py b/src/sage/graphs/generic_graph.py
|
||||||
|
index 063931ae274..0bafbd00564 100644
|
||||||
|
--- a/src/sage/graphs/generic_graph.py
|
||||||
|
+++ b/src/sage/graphs/generic_graph.py
|
||||||
|
@@ -18420,6 +18420,9 @@ def shortest_path_all_pairs(self, by_weight=False, algorithm=None,
|
||||||
|
M = self.adjacency_matrix(vertices=int_to_vertex)
|
||||||
|
|
||||||
|
# We call the Floyd-Warshall method from SciPy
|
||||||
|
+ import numpy # to ensure numpy 2.0 compatibility
|
||||||
|
+ if int(numpy.version.short_version[0]) > 1:
|
||||||
|
+ numpy.set_printoptions(legacy="1.25")
|
||||||
|
from numpy import array as np_array
|
||||||
|
from scipy.sparse.csgraph import floyd_warshall
|
||||||
|
dd, pp = floyd_warshall(np_array(M), directed=self.is_directed(),
|
||||||
|
diff --git a/src/sage/graphs/graph_generators_pyx.pyx b/src/sage/graphs/graph_generators_pyx.pyx
|
||||||
|
index 033e8b22adc..04b20d3229b 100644
|
||||||
|
--- a/src/sage/graphs/graph_generators_pyx.pyx
|
||||||
|
+++ b/src/sage/graphs/graph_generators_pyx.pyx
|
||||||
|
@@ -57,7 +57,7 @@ def RandomGNP(n, p, bint directed=False, bint loops=False, seed=None):
|
||||||
|
|
||||||
|
sage: from numpy import mean # needs numpy
|
||||||
|
sage: abs(mean([RandomGNP(200, .2).density() for i in range(30)]) - .2) < .001 # needs numpy
|
||||||
|
- True
|
||||||
|
+ ...True...
|
||||||
|
sage: RandomGNP(150, .2, loops=True)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
diff --git a/src/sage/matrix/matrix1.pyx b/src/sage/matrix/matrix1.pyx
|
||||||
|
index a810418389c..c38df5412f0 100644
|
||||||
|
--- a/src/sage/matrix/matrix1.pyx
|
||||||
|
+++ b/src/sage/matrix/matrix1.pyx
|
||||||
|
@@ -705,12 +705,15 @@ cdef class Matrix(Matrix0):
|
||||||
|
Type ``numpy.typecodes`` for a list of the possible
|
||||||
|
typecodes::
|
||||||
|
|
||||||
|
- sage: import numpy # needs numpy
|
||||||
|
- sage: sorted(numpy.typecodes.items()) # needs numpy
|
||||||
|
+ sage: import numpy # needs numpy
|
||||||
|
+ sage: numpy.typecodes.items() # needs numpy # random
|
||||||
|
[('All', '?bhilqpBHILQPefdgFDGSUVOMm'), ('AllFloat', 'efdgFDG'),
|
||||||
|
- ('AllInteger', 'bBhHiIlLqQpP'), ('Character', 'c'), ('Complex', 'FDG'),
|
||||||
|
- ('Datetime', 'Mm'), ('Float', 'efdg'), ('Integer', 'bhilqp'),
|
||||||
|
- ('UnsignedInteger', 'BHILQP')]
|
||||||
|
+ ...
|
||||||
|
+
|
||||||
|
+ For instance, you can see possibilities for real floating point numbers::
|
||||||
|
+
|
||||||
|
+ sage: numpy.typecodes['Float'] # needs numpy
|
||||||
|
+ 'efdg'
|
||||||
|
|
||||||
|
Alternatively, numpy automatically calls this function (via
|
||||||
|
the magic :meth:`__array__` method) to convert Sage matrices
|
||||||
|
diff --git a/src/sage/modules/free_module_element.pyx b/src/sage/modules/free_module_element.pyx
|
||||||
|
index d71d22ac1f7..b6f297a3510 100644
|
||||||
|
--- a/src/sage/modules/free_module_element.pyx
|
||||||
|
+++ b/src/sage/modules/free_module_element.pyx
|
||||||
|
@@ -555,7 +555,11 @@ def vector(arg0, arg1=None, arg2=None, sparse=None, immutable=False):
|
||||||
|
R = None
|
||||||
|
|
||||||
|
try:
|
||||||
|
+ import numpy
|
||||||
|
from numpy import ndarray
|
||||||
|
+ if int(numpy.version.short_version[0]) > 1:
|
||||||
|
+ numpy.set_printoptions(legacy="1.25")
|
||||||
|
+
|
||||||
|
except ImportError:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
@@ -1188,7 +1192,11 @@ cdef class FreeModuleElement(Vector): # abstract base class
|
||||||
|
over Rational Field to numpy array of type <... 'float'>:
|
||||||
|
setting an array element with a sequence.
|
||||||
|
"""
|
||||||
|
+ import numpy
|
||||||
|
from numpy import array
|
||||||
|
+ if int(numpy.version.short_version[0]) > 1:
|
||||||
|
+ numpy.set_printoptions(legacy="1.25")
|
||||||
|
+
|
||||||
|
try:
|
||||||
|
return array(self, dtype=dtype)
|
||||||
|
except ValueError as e:
|
||||||
|
diff --git a/src/sage/numerical/optimize.py b/src/sage/numerical/optimize.py
|
||||||
|
index e3d94d1746e..7ae8ca4966f 100644
|
||||||
|
--- a/src/sage/numerical/optimize.py
|
||||||
|
+++ b/src/sage/numerical/optimize.py
|
||||||
|
@@ -155,6 +155,10 @@ def find_root(f, a, b, xtol=10e-13, rtol=2.0**-50, maxiter=100, full_output=Fals
|
||||||
|
b = max(s_1, s_2)
|
||||||
|
|
||||||
|
import scipy.optimize
|
||||||
|
+ import numpy
|
||||||
|
+ if int(numpy.version.short_version[0]) > 1:
|
||||||
|
+ numpy.set_printoptions(legacy="1.25")
|
||||||
|
+
|
||||||
|
g = lambda x: float(f(x))
|
||||||
|
brentqRes = scipy.optimize.brentq(g, a, b,
|
||||||
|
full_output=full_output, xtol=xtol, rtol=rtol, maxiter=maxiter)
|
||||||
|
@@ -288,6 +292,10 @@ def find_local_minimum(f, a, b, tol=1.48e-08, maxfun=500):
|
||||||
|
a = float(a)
|
||||||
|
b = float(b)
|
||||||
|
import scipy.optimize
|
||||||
|
+ import numpy
|
||||||
|
+ if int(numpy.version.short_version[0]) > 1:
|
||||||
|
+ numpy.set_printoptions(legacy="1.25")
|
||||||
|
+
|
||||||
|
xmin, fval, iter, funcalls = scipy.optimize.fminbound(f, a, b, full_output=1, xtol=tol, maxfun=maxfun)
|
||||||
|
return fval, xmin
|
||||||
|
|
||||||
|
@@ -376,6 +384,8 @@ def minimize(func, x0, gradient=None, hessian=None, algorithm="default",
|
||||||
|
sage: def rosen(x): # The Rosenbrock function
|
||||||
|
....: return sum(100.0r*(x[1r:]-x[:-1r]**2.0r)**2.0r + (1r-x[:-1r])**2.0r)
|
||||||
|
sage: import numpy
|
||||||
|
+ sage: if int(numpy.version.short_version[0]) > 1:
|
||||||
|
+ ....: numpy.set_printoptions(legacy="1.25")
|
||||||
|
sage: from numpy import zeros
|
||||||
|
sage: def rosen_der(x):
|
||||||
|
....: xm = x[1r:-1r]
|
||||||
|
@@ -393,6 +403,9 @@ def minimize(func, x0, gradient=None, hessian=None, algorithm="default",
|
||||||
|
from sage.structure.element import Expression
|
||||||
|
from sage.ext.fast_callable import fast_callable
|
||||||
|
import numpy
|
||||||
|
+ if int(numpy.version.short_version[0]) > 1:
|
||||||
|
+ numpy.set_printoptions(legacy="1.25")
|
||||||
|
+
|
||||||
|
from scipy import optimize
|
||||||
|
if isinstance(func, Expression):
|
||||||
|
var_list = func.variables()
|
||||||
|
@@ -530,6 +543,8 @@ def minimize_constrained(func,cons,x0,gradient=None,algorithm='default', **args)
|
||||||
|
from sage.structure.element import Expression
|
||||||
|
from sage.ext.fast_callable import fast_callable
|
||||||
|
import numpy
|
||||||
|
+ if int(numpy.version.short_version[0]) > 1:
|
||||||
|
+ numpy.set_printoptions(legacy="1.25")
|
||||||
|
from scipy import optimize
|
||||||
|
function_type = type(lambda x,y: x+y)
|
||||||
|
|
||||||
|
@@ -652,6 +667,8 @@ def find_fit(data, model, initial_guess=None, parameters=None, variables=None, s
|
||||||
|
``lmdif`` and ``lmder`` algorithms.
|
||||||
|
"""
|
||||||
|
import numpy
|
||||||
|
+ if int(numpy.version.short_version[0]) > 1:
|
||||||
|
+ numpy.set_printoptions(legacy="1.25")
|
||||||
|
|
||||||
|
if not isinstance(data, numpy.ndarray):
|
||||||
|
try:
|
||||||
|
diff --git a/src/sage/plot/arrow.py b/src/sage/plot/arrow.py
|
||||||
|
index ac1dc79d802..23e2517ca56 100644
|
||||||
|
--- a/src/sage/plot/arrow.py
|
||||||
|
+++ b/src/sage/plot/arrow.py
|
||||||
|
@@ -53,6 +53,9 @@ def get_minmax_data(self):
|
||||||
|
|
||||||
|
EXAMPLES::
|
||||||
|
|
||||||
|
+ sage: import numpy # to ensure numpy 2.0 compatibility
|
||||||
|
+ sage: if int(numpy.version.short_version[0]) > 1:
|
||||||
|
+ ....: numpy.set_printoptions(legacy="1.25")
|
||||||
|
sage: from sage.plot.arrow import CurveArrow
|
||||||
|
sage: b = CurveArrow(path=[[(0,0),(.5,.5),(1,0)],[(.5,1),(0,0)]],
|
||||||
|
....: options={})
|
||||||
|
diff --git a/src/sage/plot/complex_plot.pyx b/src/sage/plot/complex_plot.pyx
|
||||||
|
index f1f2671a803..4d71414e1c2 100644
|
||||||
|
--- a/src/sage/plot/complex_plot.pyx
|
||||||
|
+++ b/src/sage/plot/complex_plot.pyx
|
||||||
|
@@ -1282,15 +1282,13 @@ def rgb_to_hls(rgb):
|
||||||
|
raise ValueError("Last dimension of input array must be 3; "
|
||||||
|
"shape {} was found.".format(rgb.shape))
|
||||||
|
in_shape = rgb.shape
|
||||||
|
- rgb = np.array(
|
||||||
|
- rgb, copy=False, dtype=np.dtype(float), ndmin=2
|
||||||
|
- )
|
||||||
|
+ rgb = np.asarray(rgb, dtype=np.dtype(float))
|
||||||
|
rgb_max = rgb.max(-1)
|
||||||
|
rgb_min = rgb.min(-1)
|
||||||
|
l = (rgb_max + rgb_min)/2.0 # lightness
|
||||||
|
|
||||||
|
hls = np.zeros_like(rgb)
|
||||||
|
- delta = rgb.ptp(-1)
|
||||||
|
+ delta = np.ptp(rgb, -1)
|
||||||
|
s = np.zeros_like(delta)
|
||||||
|
|
||||||
|
ipos = delta > 0
|
||||||
|
diff --git a/src/sage/plot/graphics.py b/src/sage/plot/graphics.py
|
||||||
|
index a84d162cb56..94f5db09d83 100644
|
||||||
|
--- a/src/sage/plot/graphics.py
|
||||||
|
+++ b/src/sage/plot/graphics.py
|
||||||
|
@@ -2754,7 +2754,7 @@ def matplotlib(self, filename=None,
|
||||||
|
sage: xmin, xmax = sub.get_xlim()
|
||||||
|
sage: ymin, ymax = sub.get_ylim()
|
||||||
|
sage: xmin > xmax, ymin > ymax
|
||||||
|
- (True, True)
|
||||||
|
+ (...True..., ...True...)
|
||||||
|
"""
|
||||||
|
if not isinstance(ticks, (list, tuple)):
|
||||||
|
ticks = (ticks, None)
|
||||||
|
diff --git a/src/sage/plot/histogram.py b/src/sage/plot/histogram.py
|
||||||
|
index fa86a44bd0a..a585cacf9cd 100644
|
||||||
|
--- a/src/sage/plot/histogram.py
|
||||||
|
+++ b/src/sage/plot/histogram.py
|
||||||
|
@@ -92,6 +92,8 @@ def get_minmax_data(self):
|
||||||
|
{'xmax': 10.0, 'xmin': 3.0, 'ymax': 0.476190476190..., 'ymin': 0}
|
||||||
|
"""
|
||||||
|
import numpy
|
||||||
|
+ if int(numpy.version.short_version[0]) > 1:
|
||||||
|
+ numpy.set_printoptions(legacy="1.25")
|
||||||
|
|
||||||
|
# Extract these options (if they are not None) and pass them to
|
||||||
|
# histogram()
|
||||||
|
diff --git a/src/sage/plot/multigraphics.py b/src/sage/plot/multigraphics.py
|
||||||
|
index b583be32317..6be448f1e04 100644
|
||||||
|
--- a/src/sage/plot/multigraphics.py
|
||||||
|
+++ b/src/sage/plot/multigraphics.py
|
||||||
|
@@ -784,6 +784,9 @@ def _add_subplot(self, figure, index, **options):
|
||||||
|
True
|
||||||
|
sage: G.position(1)
|
||||||
|
(0.2, 0.3, 0.4, 0.1)
|
||||||
|
+ sage: import numpy # to ensure numpy 2.0 compatibility
|
||||||
|
+ sage: if int(numpy.version.short_version[0]) > 1:
|
||||||
|
+ ....: numpy.set_printoptions(legacy="1.25")
|
||||||
|
sage: ax1.get_position().bounds # tol 1.0e-13
|
||||||
|
(0.2, 0.3, 0.4000000000000001, 0.10000000000000003)
|
||||||
|
|
||||||
|
@@ -1295,6 +1298,9 @@ def position(self, index):
|
||||||
|
sage: g1 = plot(sin(x), (x, -pi, pi))
|
||||||
|
sage: g2 = circle((0,1), 1.)
|
||||||
|
sage: G = graphics_array([g1, g2])
|
||||||
|
+ sage: import numpy # to ensure numpy 2.0 compatibility
|
||||||
|
+ sage: if int(numpy.version.short_version[0]) > 1:
|
||||||
|
+ ....: numpy.set_printoptions(legacy="1.25")
|
||||||
|
sage: G.position(0) # tol 5.0e-3
|
||||||
|
(0.025045451349937315,
|
||||||
|
0.03415488992713045,
|
||||||
|
diff --git a/src/sage/plot/plot3d/implicit_surface.pyx b/src/sage/plot/plot3d/implicit_surface.pyx
|
||||||
|
index ce0da48a4e0..f4d5059b620 100644
|
||||||
|
--- a/src/sage/plot/plot3d/implicit_surface.pyx
|
||||||
|
+++ b/src/sage/plot/plot3d/implicit_surface.pyx
|
||||||
|
@@ -468,6 +468,7 @@ cdef class MarchingCubesTriangles(MarchingCubes):
|
||||||
|
sage: cube_marcher.y_vertices.tolist()
|
||||||
|
[[[<1.0, 0.5, 0.0>, None]], [[None, None]]]
|
||||||
|
sage: cube_marcher.x_vertices.any() # This shouldn't affect the X vertices.
|
||||||
|
+ ...
|
||||||
|
"""
|
||||||
|
(self.y_vertices, self.y_vertices_swapped) = \
|
||||||
|
(self.y_vertices_swapped, self.y_vertices)
|
||||||
|
@@ -574,6 +575,7 @@ cdef class MarchingCubesTriangles(MarchingCubes):
|
||||||
|
sage: cube_marcher.x_vertices.tolist()
|
||||||
|
[[None, None], [None, <1.5, 1.0, 1.0>]]
|
||||||
|
sage: cube_marcher.y_vertices.any() or cube_marcher.z_vertices.any() # This shouldn't affect the Y or Z vertices.
|
||||||
|
+ ...
|
||||||
|
"""
|
||||||
|
cdef bint has_prev = (_prev is not None)
|
||||||
|
cdef bint has_next = (_next is not None)
|
||||||
|
diff --git a/src/sage/plot/scatter_plot.py b/src/sage/plot/scatter_plot.py
|
||||||
|
index 4ad418f040b..781854d372c 100644
|
||||||
|
--- a/src/sage/plot/scatter_plot.py
|
||||||
|
+++ b/src/sage/plot/scatter_plot.py
|
||||||
|
@@ -63,9 +63,9 @@ def get_minmax_data(self):
|
||||||
|
sage: s = scatter_plot([[0,1],[2,4],[3.2,6]])
|
||||||
|
sage: d = s.get_minmax_data()
|
||||||
|
sage: d['xmin']
|
||||||
|
- 0.0
|
||||||
|
+ ...0.0...
|
||||||
|
sage: d['ymin']
|
||||||
|
- 1.0
|
||||||
|
+ ...1.0...
|
||||||
|
"""
|
||||||
|
return {'xmin': self.xdata.min(),
|
||||||
|
'xmax': self.xdata.max(),
|
||||||
|
diff --git a/src/sage/plot/streamline_plot.py b/src/sage/plot/streamline_plot.py
|
||||||
|
index 663d3aee70b..d2cb11088c7 100644
|
||||||
|
--- a/src/sage/plot/streamline_plot.py
|
||||||
|
+++ b/src/sage/plot/streamline_plot.py
|
||||||
|
@@ -71,6 +71,9 @@ def get_minmax_data(self):
|
||||||
|
EXAMPLES::
|
||||||
|
|
||||||
|
sage: x, y = var('x y')
|
||||||
|
+ sage: import numpy # to ensure numpy 2.0 compatibility
|
||||||
|
+ sage: if int(numpy.version.short_version[0]) > 1:
|
||||||
|
+ ....: numpy.set_printoptions(legacy="1.25")
|
||||||
|
sage: d = streamline_plot((.01*x, x+y), (x,10,20), (y,10,20))[0].get_minmax_data()
|
||||||
|
sage: d['xmin']
|
||||||
|
10.0
|
||||||
|
diff --git a/src/sage/probability/probability_distribution.pyx b/src/sage/probability/probability_distribution.pyx
|
||||||
|
index e2c71af9c25..59ba4a95ab6 100644
|
||||||
|
--- a/src/sage/probability/probability_distribution.pyx
|
||||||
|
+++ b/src/sage/probability/probability_distribution.pyx
|
||||||
|
@@ -140,6 +140,9 @@ cdef class ProbabilityDistribution:
|
||||||
|
1.8,
|
||||||
|
2.0]
|
||||||
|
"""
|
||||||
|
+ import numpy as np
|
||||||
|
+ if int(np.version.short_version[0]) > 1:
|
||||||
|
+ np.set_printoptions(legacy="1.25")
|
||||||
|
import pylab
|
||||||
|
ell = [float(self.get_random_element()) for _ in range(num_samples)]
|
||||||
|
S = pylab.hist(ell, bins, density=True)
|
||||||
|
diff --git a/src/sage/rings/complex_double.pyx b/src/sage/rings/complex_double.pyx
|
||||||
|
index c59a2b46d6f..b4dddebb4dc 100644
|
||||||
|
--- a/src/sage/rings/complex_double.pyx
|
||||||
|
+++ b/src/sage/rings/complex_double.pyx
|
||||||
|
@@ -2558,10 +2558,10 @@ cdef class ComplexToCDF(Morphism):
|
||||||
|
|
||||||
|
sage: # needs numpy
|
||||||
|
sage: import numpy
|
||||||
|
- sage: f = CDF.coerce_map_from(numpy.complex_)
|
||||||
|
- sage: f(numpy.complex_(I))
|
||||||
|
+ sage: f = CDF.coerce_map_from(numpy.complex128)
|
||||||
|
+ sage: f(numpy.complex128(I))
|
||||||
|
1.0*I
|
||||||
|
- sage: f(numpy.complex_(I)).parent()
|
||||||
|
+ sage: f(numpy.complex128(I)).parent()
|
||||||
|
Complex Double Field
|
||||||
|
"""
|
||||||
|
def __init__(self, R):
|
||||||
|
@@ -2578,7 +2578,7 @@ cdef class ComplexToCDF(Morphism):
|
||||||
|
EXAMPLES::
|
||||||
|
|
||||||
|
sage: import numpy # needs numpy
|
||||||
|
- sage: CDF(numpy.complex_(I)) # indirect doctest # needs numpy
|
||||||
|
+ sage: CDF(numpy.complex128(I)) # indirect doctest # needs numpy
|
||||||
|
1.0*I
|
||||||
|
"""
|
||||||
|
cdef ComplexDoubleElement z = <ComplexDoubleElement>ComplexDoubleElement.__new__(ComplexDoubleElement)
|
||||||
|
@@ -2592,7 +2592,7 @@ cdef class ComplexToCDF(Morphism):
|
||||||
|
EXAMPLES::
|
||||||
|
|
||||||
|
sage: import numpy # needs numpy
|
||||||
|
- sage: f = sage.rings.complex_double.ComplexToCDF(numpy.complex_) # needs numpy
|
||||||
|
+ sage: f = sage.rings.complex_double.ComplexToCDF(numpy.complex128) # needs numpy
|
||||||
|
sage: f._repr_type() # needs numpy
|
||||||
|
'Native'
|
||||||
|
"""
|
||||||
|
diff --git a/src/sage/rings/integer.pyx b/src/sage/rings/integer.pyx
|
||||||
|
index b4a1fa5039b..38c30f7627b 100644
|
||||||
|
--- a/src/sage/rings/integer.pyx
|
||||||
|
+++ b/src/sage/rings/integer.pyx
|
||||||
|
@@ -593,6 +593,8 @@ cdef class Integer(sage.structure.element.EuclideanDomainElement):
|
||||||
|
Test comparisons with numpy types (see :issue:`13386` and :issue:`18076`)::
|
||||||
|
|
||||||
|
sage: import numpy # needs numpy
|
||||||
|
+ sage: if int(numpy.version.short_version[0]) > 1: # needs numpy
|
||||||
|
+ ....: numpy.set_printoptions(legacy="1.25") # needs numpy
|
||||||
|
sage: numpy.int8('12') == 12 # needs numpy
|
||||||
|
True
|
||||||
|
sage: 12 == numpy.int8('12') # needs numpy
|
||||||
|
diff --git a/src/sage/rings/polynomial/polynomial_element.pyx b/src/sage/rings/polynomial/polynomial_element.pyx
|
||||||
|
index dcf2af7cdf2..c87eccd44f1 100644
|
||||||
|
--- a/src/sage/rings/polynomial/polynomial_element.pyx
|
||||||
|
+++ b/src/sage/rings/polynomial/polynomial_element.pyx
|
||||||
|
@@ -8851,7 +8851,7 @@ cdef class Polynomial(CommutativePolynomial):
|
||||||
|
'you expect.')
|
||||||
|
|
||||||
|
import numpy
|
||||||
|
- from numpy.linalg.linalg import LinAlgError
|
||||||
|
+ from numpy.linalg import LinAlgError
|
||||||
|
from sage.rings.complex_double import CDF
|
||||||
|
|
||||||
|
numpy_dtype = ('complex' if input_complex else 'double')
|
||||||
|
diff --git a/src/sage/rings/real_mpfi.pyx b/src/sage/rings/real_mpfi.pyx
|
||||||
|
index 95b472e912c..76fbfedab95 100644
|
||||||
|
--- a/src/sage/rings/real_mpfi.pyx
|
||||||
|
+++ b/src/sage/rings/real_mpfi.pyx
|
||||||
|
@@ -231,6 +231,8 @@ specified if given a non-interval and an interval::
|
||||||
|
TESTS::
|
||||||
|
|
||||||
|
sage: import numpy # needs numpy
|
||||||
|
+ sage: if int(numpy.version.short_version[0]) > 1: # needs numpy
|
||||||
|
+ ....: numpy.set_printoptions(legacy="1.25") # needs numpy
|
||||||
|
sage: RIF(2) == numpy.int8('2') # needs numpy
|
||||||
|
True
|
||||||
|
sage: numpy.int8('2') == RIF(2) # needs numpy
|
||||||
|
diff --git a/src/sage/schemes/elliptic_curves/period_lattice_region.pyx b/src/sage/schemes/elliptic_curves/period_lattice_region.pyx
|
||||||
|
index 8f240627e77..70ce616f92f 100644
|
||||||
|
--- a/src/sage/schemes/elliptic_curves/period_lattice_region.pyx
|
||||||
|
+++ b/src/sage/schemes/elliptic_curves/period_lattice_region.pyx
|
||||||
|
@@ -77,6 +77,8 @@ cdef class PeriodicRegion:
|
||||||
|
EXAMPLES::
|
||||||
|
|
||||||
|
sage: import numpy as np
|
||||||
|
+ sage: if int(np.version.short_version[0]) > 1:
|
||||||
|
+ ....: np.set_printoptions(legacy="1.25")
|
||||||
|
sage: from sage.schemes.elliptic_curves.period_lattice_region import PeriodicRegion
|
||||||
|
sage: data = np.zeros((4, 4))
|
||||||
|
sage: PeriodicRegion(CDF(2), CDF(2*I), data).is_empty()
|
||||||
|
@@ -295,6 +297,8 @@ cdef class PeriodicRegion:
|
||||||
|
EXAMPLES::
|
||||||
|
|
||||||
|
sage: import numpy as np
|
||||||
|
+ sage: if int(np.version.short_version[0]) > 1:
|
||||||
|
+ ....: np.set_printoptions(legacy="1.25")
|
||||||
|
sage: from sage.schemes.elliptic_curves.period_lattice_region import PeriodicRegion
|
||||||
|
sage: data = np.zeros((10, 10))
|
||||||
|
sage: data[1:4,1:4] = True
|
||||||
|
@@ -317,6 +321,8 @@ cdef class PeriodicRegion:
|
||||||
|
EXAMPLES::
|
||||||
|
|
||||||
|
sage: import numpy as np
|
||||||
|
+ sage: if int(np.version.short_version[0]) > 1:
|
||||||
|
+ ....: np.set_printoptions(legacy="1.25")
|
||||||
|
sage: from sage.schemes.elliptic_curves.period_lattice_region import PeriodicRegion
|
||||||
|
sage: data = np.zeros((4, 4))
|
||||||
|
sage: data[1,1] = True
|
||||||
|
@@ -370,6 +376,8 @@ cdef class PeriodicRegion:
|
||||||
|
EXAMPLES::
|
||||||
|
|
||||||
|
sage: import numpy as np
|
||||||
|
+ sage: if int(np.version.short_version[0]) > 1:
|
||||||
|
+ ....: np.set_printoptions(legacy="1.25")
|
||||||
|
sage: from sage.schemes.elliptic_curves.period_lattice_region import PeriodicRegion
|
||||||
|
|
||||||
|
sage: data = np.zeros((20, 20))
|
||||||
|
@@ -520,6 +528,8 @@ cdef class PeriodicRegion:
|
||||||
|
TESTS::
|
||||||
|
|
||||||
|
sage: import numpy as np
|
||||||
|
+ sage: if int(np.version.short_version[0]) > 1:
|
||||||
|
+ ....: np.set_printoptions(legacy="1.25")
|
||||||
|
sage: from sage.schemes.elliptic_curves.period_lattice_region import PeriodicRegion
|
||||||
|
sage: data = np.zeros((4, 4))
|
||||||
|
sage: data[1, 1] = True
|
||||||
|
diff --git a/src/sage/stats/basic_stats.py b/src/sage/stats/basic_stats.py
|
||||||
|
index b2e6b301bf7..6937f6cb410 100644
|
||||||
|
--- a/src/sage/stats/basic_stats.py
|
||||||
|
+++ b/src/sage/stats/basic_stats.py
|
||||||
|
@@ -227,6 +227,8 @@ def std(v, bias=False):
|
||||||
|
|
||||||
|
sage: # needs numpy
|
||||||
|
sage: import numpy
|
||||||
|
+ sage: if int(numpy.version.short_version[0]) > 1:
|
||||||
|
+ ....: numpy.set_printoptions(legacy="1.25")
|
||||||
|
sage: x = numpy.array([1,2,3,4,5])
|
||||||
|
sage: std(x, bias=False)
|
||||||
|
1.5811388300841898
|
||||||
|
@@ -304,6 +306,8 @@ def variance(v, bias=False):
|
||||||
|
sage: variance([RIF(1.0103, 1.0103), RIF(2)])
|
||||||
|
0.4897530450000000?
|
||||||
|
sage: import numpy # needs numpy
|
||||||
|
+ sage: if int(numpy.version.short_version[0]) > 1: # needs numpy
|
||||||
|
+ ....: numpy.set_printoptions(legacy="1.25") # needs numpy
|
||||||
|
sage: x = numpy.array([1,2,3,4,5]) # needs numpy
|
||||||
|
sage: variance(x, bias=False) # needs numpy
|
||||||
|
2.5
|
||||||
|
diff --git a/src/sage/stats/time_series.pyx b/src/sage/stats/time_series.pyx
|
||||||
|
index 2e22ec45c69..23adae84fb4 100644
|
||||||
|
--- a/src/sage/stats/time_series.pyx
|
||||||
|
+++ b/src/sage/stats/time_series.pyx
|
||||||
|
@@ -1718,6 +1718,8 @@ cdef class TimeSeries:
|
||||||
|
if len(v0) == 1:
|
||||||
|
return v1[0]/v0[0]
|
||||||
|
import numpy
|
||||||
|
+ if int(numpy.version.short_version[0]) > 1:
|
||||||
|
+ numpy.set_printoptions(legacy="1.25")
|
||||||
|
coeffs = numpy.polyfit(v0,v1,1)
|
||||||
|
return coeffs[0]
|
||||||
|
|
||||||
|
diff --git a/src/sage/structure/coerce.pyx b/src/sage/structure/coerce.pyx
|
||||||
|
index dfbd5ff82fa..955a256e9b4 100644
|
||||||
|
--- a/src/sage/structure/coerce.pyx
|
||||||
|
+++ b/src/sage/structure/coerce.pyx
|
||||||
|
@@ -520,6 +520,8 @@ cdef class CoercionModel:
|
||||||
|
Check that :issue:`8426` is fixed (see also :issue:`18076`)::
|
||||||
|
|
||||||
|
sage: import numpy # needs numpy
|
||||||
|
+ sage: if int(numpy.version.short_version[0]) > 1: # needs numpy
|
||||||
|
+ ....: numpy.set_printoptions(legacy="1.25") # needs numpy
|
||||||
|
|
||||||
|
sage: # needs sage.rings.real_mpfr
|
||||||
|
sage: x = polygen(RR)
|
||||||
|
diff --git a/src/sage/symbolic/function.pyx b/src/sage/symbolic/function.pyx
|
||||||
|
index 2cb2f09c715..cd89ad2a256 100644
|
||||||
|
--- a/src/sage/symbolic/function.pyx
|
||||||
|
+++ b/src/sage/symbolic/function.pyx
|
||||||
|
@@ -964,6 +964,9 @@ cdef class BuiltinFunction(Function):
|
||||||
|
mpc(real='0.83373002513114902', imag='-0.98889770576286506')
|
||||||
|
|
||||||
|
sage: import numpy # needs numpy
|
||||||
|
+ sage: if int(numpy.version.short_version[0]) > 1: # needs numpy
|
||||||
|
+ ....: numpy.set_printoptions(legacy="1.25") # needs numpy
|
||||||
|
+
|
||||||
|
sage: sin(numpy.int32(0)) # needs numpy
|
||||||
|
0.0
|
||||||
|
sage: type(_) # needs numpy
|
||||||
|
diff --git a/src/sage/symbolic/ring.pyx b/src/sage/symbolic/ring.pyx
|
||||||
|
index 501b0920898..5b007d9e5fd 100644
|
||||||
|
--- a/src/sage/symbolic/ring.pyx
|
||||||
|
+++ b/src/sage/symbolic/ring.pyx
|
||||||
|
@@ -1162,6 +1162,8 @@ cdef class NumpyToSRMorphism(Morphism):
|
||||||
|
We check that :issue:`8949` and :issue:`9769` are fixed (see also :issue:`18076`)::
|
||||||
|
|
||||||
|
sage: import numpy # needs numpy
|
||||||
|
+ sage: if int(numpy.version.short_version[0]) > 1: # needs numpy
|
||||||
|
+ ....: numpy.set_printoptions(legacy="1.25") # needs numpy
|
||||||
|
sage: f(x) = x^2
|
||||||
|
sage: f(numpy.int8('2')) # needs numpy
|
||||||
|
4
|
43
srcpkgs/sagemath/patches/38344-ecm_7.0.6.patch
Normal file
43
srcpkgs/sagemath/patches/38344-ecm_7.0.6.patch
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
diff --git a/src/sage/interfaces/ecm.py b/src/sage/interfaces/ecm.py
|
||||||
|
index 99287dec718..98011970404 100644
|
||||||
|
--- a/src/sage/interfaces/ecm.py
|
||||||
|
+++ b/src/sage/interfaces/ecm.py
|
||||||
|
@@ -508,7 +508,6 @@ def _find_factor(self, n, factor_digits, B1, **kwds):
|
||||||
|
"""
|
||||||
|
n = self._validate(n)
|
||||||
|
kwds.setdefault('c', 1000000000)
|
||||||
|
- kwds.setdefault('I', 1)
|
||||||
|
if factor_digits is not None:
|
||||||
|
B1 = self.recommended_B1(factor_digits)
|
||||||
|
kwds['one'] = True
|
||||||
|
diff --git a/src/sage/libs/libecm.pyx b/src/sage/libs/libecm.pyx
|
||||||
|
index 886a9b816e4..83fb7adaf8d 100644
|
||||||
|
--- a/src/sage/libs/libecm.pyx
|
||||||
|
+++ b/src/sage/libs/libecm.pyx
|
||||||
|
@@ -149,11 +149,13 @@ def ecmfactor(number, double B1, verbose=False, sigma=0):
|
||||||
|
Some special cases::
|
||||||
|
|
||||||
|
sage: ecmfactor(1, 100)
|
||||||
|
- (True, 1, ...)
|
||||||
|
+ Traceback (most recent call last):
|
||||||
|
+ ...
|
||||||
|
+ ValueError: Input number (1) must be greater than 1
|
||||||
|
sage: ecmfactor(0, 100)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
- ValueError: Input number (0) must be positive
|
||||||
|
+ ValueError: Input number (0) must be greater than 1
|
||||||
|
"""
|
||||||
|
cdef mpz_t n, f
|
||||||
|
cdef int res
|
||||||
|
@@ -164,8 +166,8 @@ def ecmfactor(number, double B1, verbose=False, sigma=0):
|
||||||
|
sage_int_number = Integer(number)
|
||||||
|
sage_int_sigma = Integer(sigma)
|
||||||
|
|
||||||
|
- if number <= 0:
|
||||||
|
- raise ValueError("Input number (%s) must be positive"%number)
|
||||||
|
+ if number <= 1:
|
||||||
|
+ raise ValueError("Input number (%s) must be greater than 1"%number)
|
||||||
|
|
||||||
|
if verbose:
|
||||||
|
print("Performing one curve with B1=%1.0f" % B1)
|
|
@ -1,12 +1,12 @@
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
|
|
||||||
version=10.2
|
version=10.4
|
||||||
|
|
||||||
URL_BASE_PR="https://github.com/sagemath/sage/pull/"
|
URL_BASE_PR="https://github.com/sagemath/sage/pull/"
|
||||||
URL_BASE_COMPARE="https://github.com/sagemath/sage/compare/${version}..."
|
URL_BASE_COMPARE="https://github.com/sagemath/sage/compare/${version}..."
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-n) DO=echo ;;
|
-n) dry=true ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# get_pr <PR number> <description> [ext]
|
# get_pr <PR number> <description> [ext]
|
||||||
|
@ -14,12 +14,23 @@ get_pr() {
|
||||||
pr=$1
|
pr=$1
|
||||||
desc=$(echo "$2" | sed -e 's/ /_/g')
|
desc=$(echo "$2" | sed -e 's/ /_/g')
|
||||||
ext=${3-diff}
|
ext=${3-diff}
|
||||||
$DO wget "$URL_BASE_PR$pr.$ext" -O "$pr-$desc.patch"
|
url="$URL_BASE_PR$pr.$ext"
|
||||||
|
out="$pr-$desc.patch"
|
||||||
|
echo "curl -sL \"$url\" | filterdiff ... > \"$pr-$desc.patch\""
|
||||||
|
if [ -z "$dry" ]; then
|
||||||
|
curl -sL "$url" |
|
||||||
|
filterdiff -p1 -x src/setup.py -x build/* -x src/doc/* |
|
||||||
|
cat > "$pr-$desc.patch"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# run from patches dir
|
# run from patches dir
|
||||||
cd $(dirname "$0")
|
cd $(dirname "$0")
|
||||||
|
|
||||||
# needs review
|
get_pr 36641 "sympy 1.13"
|
||||||
get_pr 37492 "singular 4.3.2p16"
|
get_pr 37884 "gap 4.13.1"
|
||||||
get_pr 37763 "scipy 1.13"
|
get_pr 38250 "numpy 2.0"
|
||||||
|
get_pr 38344 "ecm 7.0.6"
|
||||||
|
|
||||||
|
#get_pr 37645 "fix doctest"
|
||||||
|
#get_pr 37885 "cython warnings"
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
# Template file for 'sagemath'
|
# Template file for 'sagemath'
|
||||||
pkgname=sagemath
|
pkgname=sagemath
|
||||||
version=10.3
|
version=10.4
|
||||||
revision=2
|
revision=1
|
||||||
build_wrksrc=pkgs/sagemath-standard
|
_pypi_version=${version/.beta/b}
|
||||||
|
_pypi_version=${_pypi_version/.rc/rc}
|
||||||
build_style=python3-pep517
|
build_style=python3-pep517
|
||||||
make_build_args="--skip-dependency-check"
|
hostmakedepends="pkg-config python3-Cython python3-Jinja2
|
||||||
hostmakedepends="m4 pkg-config python3-Cython python3-Jinja2
|
|
||||||
python3-pkgconfig python3-setuptools python3-wheel"
|
python3-pkgconfig python3-setuptools python3-wheel"
|
||||||
makedepends="boost-devel brial-devel cliquer-devel ecl eclib-devel
|
makedepends="boost-devel brial-devel cliquer-devel ecl eclib-devel
|
||||||
ecm-devel fflas-ffpack flintlib-devel gap-devel gd-devel giac-devel glpk-devel
|
ecm-devel fflas-ffpack flintlib-devel gap-devel gd-devel giac-devel glpk-devel
|
||||||
|
@ -25,27 +25,22 @@ depends="eclib-devel fflas-ffpack flintlib-devel gcc-fortran meson gd-devel
|
||||||
python3-sympy python3-traitlets sage-data-combinatorial_designs
|
python3-sympy python3-traitlets sage-data-combinatorial_designs
|
||||||
python3-conway-polynomials sage-data-elliptic_curves sage-data-graphs
|
python3-conway-polynomials sage-data-elliptic_curves sage-data-graphs
|
||||||
sage-data-polytopes_db sympow tachyon threejs-sage"
|
sage-data-polytopes_db sympow tachyon threejs-sage"
|
||||||
checkdepends="$depends pythran python3-Sphinx"
|
checkdepends="$depends pythran python3-Sphinx gdb"
|
||||||
short_desc="Open source mathematics software"
|
short_desc="Open source mathematics software"
|
||||||
maintainer="Gonzalo Tornaría <tornaria@cmat.edu.uy>"
|
maintainer="Gonzalo Tornaría <tornaria@cmat.edu.uy>"
|
||||||
license="GPL-2.0-or-later"
|
license="GPL-2.0-or-later"
|
||||||
homepage="https://www.sagemath.org/"
|
homepage="https://www.sagemath.org/"
|
||||||
changelog="https://github.com/sagemath/sage/releases"
|
changelog="https://github.com/sagemath/sage/releases"
|
||||||
distfiles="https://github.com/sagemath/sage/archive/refs/tags/$version.tar.gz"
|
distfiles="${PYPI_SITE}/s/sagemath-standard/sagemath_standard-${_pypi_version}.tar.gz"
|
||||||
checksum=59feb92c05e74d6db7a75f398c45c24b5157b1ecd3d8ac198806e2e6add77d96
|
checksum=f6579e85f33bd9bb6e9b991bfc4c49dab1e649858ed9ee41c7cec75cb92d4c62
|
||||||
nocross="due to ntl (eclib, singular), fflas-ffpack, givaro, linbox, sympow, maxima"
|
nocross="due to ntl (eclib, singular), fflas-ffpack, givaro, linbox, sympow, maxima"
|
||||||
|
|
||||||
|
# main repo `.../src/sage/` is `.../sage/` here
|
||||||
|
patch_args=-Np2
|
||||||
|
|
||||||
# parallel build
|
# parallel build
|
||||||
export SAGE_NUM_THREADS="$XBPS_MAKEJOBS"
|
export SAGE_NUM_THREADS="$XBPS_MAKEJOBS"
|
||||||
|
|
||||||
post_patch() {
|
|
||||||
# git tree needs bootstrapping
|
|
||||||
$wrksrc/bootstrap sagelib
|
|
||||||
|
|
||||||
# we need sage_setup here
|
|
||||||
ln -s ../../src/sage_setup .
|
|
||||||
}
|
|
||||||
|
|
||||||
post_install() {
|
post_install() {
|
||||||
# move scripts to /usr/libexec
|
# move scripts to /usr/libexec
|
||||||
vmkdir usr/libexec
|
vmkdir usr/libexec
|
||||||
|
|
Loading…
Add table
Reference in a new issue