Also: - patch for singular 4.3.2p2 - patch for numpy 1.25.0 - patch for setuptools 68.0.0
587 lines
23 KiB
Diff
587 lines
23 KiB
Diff
diff --git a/build/pkgs/ecl/dependencies b/build/pkgs/ecl/dependencies
|
|
index cda6316bf5a..51a953403e9 100644
|
|
--- a/build/pkgs/ecl/dependencies
|
|
+++ b/build/pkgs/ecl/dependencies
|
|
@@ -1,4 +1,4 @@
|
|
-$(MP_LIBRARY) readline gc libffi
|
|
+$(MP_LIBRARY) readline gc libffi info
|
|
|
|
----------
|
|
All lines of this file are ignored except the first.
|
|
diff --git a/build/pkgs/ecl/spkg-configure.m4 b/build/pkgs/ecl/spkg-configure.m4
|
|
index ae1e0ac5e1a..7dbcfa6377b 100644
|
|
--- a/build/pkgs/ecl/spkg-configure.m4
|
|
+++ b/build/pkgs/ecl/spkg-configure.m4
|
|
@@ -35,10 +35,7 @@ SAGE_SPKG_CONFIGURE([ecl], [
|
|
AC_SUBST(SAGE_ECL_CONFIG, [$ECL_CONFIG])
|
|
fi
|
|
|
|
- # Maxima cannot yet be provided by the system, so we always use
|
|
+ # Kenzo cannot yet be provided by the system, so we always use
|
|
# the SAGE_LOCAL path for now.
|
|
- AC_SUBST(SAGE_MAXIMA_FAS, ['${prefix}'/lib/ecl/maxima.fas])
|
|
-
|
|
- # Likewise for the optional Kenzo SPKG
|
|
AC_SUBST(SAGE_KENZO_FAS, ['${prefix}'/lib/ecl/kenzo.fas])
|
|
])
|
|
diff --git a/build/pkgs/ecl/spkg-install.in b/build/pkgs/ecl/spkg-install.in
|
|
index ee1667aec16..72083337942 100644
|
|
--- a/build/pkgs/ecl/spkg-install.in
|
|
+++ b/build/pkgs/ecl/spkg-install.in
|
|
@@ -31,18 +31,6 @@ cp "$SAGE_ROOT"/config/config.* src
|
|
|
|
if [ x"$SAGE_SPKG_INSTALL_DOCS" != xyes ] ; then
|
|
ECL_CONFIGURE="$ECL_CONFIGURE --enable-manual=no"
|
|
-else
|
|
- # ECL 2020 needs modern makeinfo
|
|
- command -v texi2any >/dev/null 2>&1
|
|
- if [ $? -ne 0 ]; then # texi2any not found -> makeinfo too old, if present
|
|
- ECL_CONFIGURE="$ECL_CONFIGURE --enable-manual=no"
|
|
- else
|
|
- if makeinfo -c foo 2>&1 | grep -q invalid; then
|
|
- # makeinfo found but does not support all options that ecl
|
|
- # likes to use
|
|
- ECL_CONFIGURE="$ECL_CONFIGURE --enable-manual=no"
|
|
- fi
|
|
- fi
|
|
fi
|
|
|
|
sdh_configure $SAGE_CONFIGURE_GMP \
|
|
diff --git a/build/pkgs/giac/spkg-configure.m4 b/build/pkgs/giac/spkg-configure.m4
|
|
index 5859e35f12e..53e3a8301cd 100644
|
|
--- a/build/pkgs/giac/spkg-configure.m4
|
|
+++ b/build/pkgs/giac/spkg-configure.m4
|
|
@@ -5,7 +5,7 @@ SAGE_SPKG_CONFIGURE([giac], [
|
|
m4_pushdef([GIAC_MAX_VERSION], [1.9.999])
|
|
AC_CACHE_CHECK([for giac >= ]GIAC_MIN_VERSION[, <= ]GIAC_MAX_VERSION, [ac_cv_path_GIAC], [
|
|
AC_PATH_PROGS_FEATURE_CHECK([GIAC], [giac], [
|
|
- giac_version=$($ac_path_GIAC --version 2> /dev/null | tail -1)
|
|
+ giac_version=$($ac_path_GIAC --version 2> /dev/null | tail -n 1)
|
|
AS_IF([test -n "$giac_version"], [
|
|
AX_COMPARE_VERSION([$giac_version], [ge], GIAC_MIN_VERSION, [
|
|
AX_COMPARE_VERSION([$giac_version], [le], GIAC_MAX_VERSION, [
|
|
diff --git a/build/pkgs/info/distros/fedora.txt b/build/pkgs/info/distros/fedora.txt
|
|
index 283aa462f74..c0d8f74e0ad 100644
|
|
--- a/build/pkgs/info/distros/fedora.txt
|
|
+++ b/build/pkgs/info/distros/fedora.txt
|
|
@@ -1 +1 @@
|
|
-texinfo
|
|
+texinfo info
|
|
diff --git a/build/pkgs/info/spkg-configure.m4 b/build/pkgs/info/spkg-configure.m4
|
|
index 0980a4b8ef8..85fe1ea4731 100644
|
|
--- a/build/pkgs/info/spkg-configure.m4
|
|
+++ b/build/pkgs/info/spkg-configure.m4
|
|
@@ -1,4 +1,14 @@
|
|
SAGE_SPKG_CONFIGURE([info], [
|
|
AC_PATH_PROG(INFO, info)
|
|
- AS_IF([test -z "${INFO}"], [sage_spkg_install_info=yes])
|
|
+ AS_IF([test -z "${INFO}"], [sage_spkg_install_info=yes
|
|
+ ], [
|
|
+ dnl very old makeinfo are not texi2any, newer are symlinks to texi2any
|
|
+ AC_PATH_PROG(TEXI2ANY, texi2any)
|
|
+ AS_IF([test -z "${TEXI2ANY}"], [sage_spkg_install_info=yes
|
|
+ ], [
|
|
+ AS_IF([makeinfo -c foo 2>&1 | grep -q invalid], [
|
|
+ dnl makeinfo found, but too old, and does not support all options that ecl likes to use
|
|
+ sage_spkg_install_info=yes])
|
|
+ ])
|
|
+ ])
|
|
])
|
|
diff --git a/build/pkgs/info/spkg-install.in b/build/pkgs/info/spkg-install.in
|
|
index 8086e4b2ec8..3ea8c053669 100644
|
|
--- a/build/pkgs/info/spkg-install.in
|
|
+++ b/build/pkgs/info/spkg-install.in
|
|
@@ -1,2 +1,2 @@
|
|
-cd src/info
|
|
+cd src
|
|
sdh_make_install
|
|
diff --git a/build/pkgs/info/type b/build/pkgs/info/type
|
|
index 134d9bc32d5..a6a7b9cd726 100644
|
|
--- a/build/pkgs/info/type
|
|
+++ b/build/pkgs/info/type
|
|
@@ -1 +1 @@
|
|
-optional
|
|
+standard
|
|
diff --git a/build/pkgs/maxima/checksums.ini b/build/pkgs/maxima/checksums.ini
|
|
index a804c7b831f..0f594389fe6 100644
|
|
--- a/build/pkgs/maxima/checksums.ini
|
|
+++ b/build/pkgs/maxima/checksums.ini
|
|
@@ -1,5 +1,5 @@
|
|
tarball=maxima-VERSION.tar.gz
|
|
-sha1=ed15d5285794413ba94412079eca3d0fa55a47bf
|
|
-md5=9b9ae1dace55b1386739dabaa9122e60
|
|
-cksum=1765409766
|
|
+sha1=1010594e6d6082bbd8efaac1b7756ec1721a4ed5
|
|
+md5=3c01f1daa6936e11d8713fef7751d3fe
|
|
+cksum=2420393096
|
|
upstream_url=https://sourceforge.net/projects/maxima/files/Maxima-source/VERSION-source/maxima-VERSION.tar.gz/download
|
|
diff --git a/build/pkgs/maxima/dependencies b/build/pkgs/maxima/dependencies
|
|
index fffb89e2050..55c7e0d8d14 100644
|
|
--- a/build/pkgs/maxima/dependencies
|
|
+++ b/build/pkgs/maxima/dependencies
|
|
@@ -1,4 +1,4 @@
|
|
-ecl
|
|
+ecl info
|
|
|
|
----------
|
|
All lines of this file are ignored except the first.
|
|
diff --git a/build/pkgs/maxima/distros/arch.txt b/build/pkgs/maxima/distros/arch.txt
|
|
index 6400290f44d..6ac052fa62b 100644
|
|
--- a/build/pkgs/maxima/distros/arch.txt
|
|
+++ b/build/pkgs/maxima/distros/arch.txt
|
|
@@ -1 +1 @@
|
|
-maxima-ecl
|
|
+maxima-fas
|
|
diff --git a/build/pkgs/maxima/distros/cygwin.txt b/build/pkgs/maxima/distros/cygwin.txt
|
|
new file mode 100644
|
|
index 00000000000..f5fe3fdc6cb
|
|
--- /dev/null
|
|
+++ b/build/pkgs/maxima/distros/cygwin.txt
|
|
@@ -0,0 +1 @@
|
|
+maxima
|
|
diff --git a/build/pkgs/maxima/distros/freebsd.txt b/build/pkgs/maxima/distros/freebsd.txt
|
|
new file mode 100644
|
|
index 00000000000..766a71b5074
|
|
--- /dev/null
|
|
+++ b/build/pkgs/maxima/distros/freebsd.txt
|
|
@@ -0,0 +1 @@
|
|
+math/maxima
|
|
diff --git a/build/pkgs/maxima/distros/gentoo.txt b/build/pkgs/maxima/distros/gentoo.txt
|
|
new file mode 100644
|
|
index 00000000000..85fb33f1610
|
|
--- /dev/null
|
|
+++ b/build/pkgs/maxima/distros/gentoo.txt
|
|
@@ -0,0 +1,2 @@
|
|
+sci-mathematics/maxima[ecls]
|
|
+
|
|
diff --git a/build/pkgs/maxima/package-version.txt b/build/pkgs/maxima/package-version.txt
|
|
index 83476624dc0..5681375f3be 100644
|
|
--- a/build/pkgs/maxima/package-version.txt
|
|
+++ b/build/pkgs/maxima/package-version.txt
|
|
@@ -1 +1 @@
|
|
-5.45.0.p0
|
|
+5.46.0
|
|
diff --git a/build/pkgs/maxima/patches/matrixexp.patch b/build/pkgs/maxima/patches/matrixexp.patch
|
|
deleted file mode 100644
|
|
index 5c8527c33bf..00000000000
|
|
--- a/build/pkgs/maxima/patches/matrixexp.patch
|
|
+++ /dev/null
|
|
@@ -1,15 +0,0 @@
|
|
-diff --git a/share/linearalgebra/matrixexp.lisp b/share/linearalgebra/matrixexp.lisp
|
|
-index 218bf35..f2fd468 100644
|
|
---- a/share/linearalgebra/matrixexp.lisp
|
|
-+++ b/share/linearalgebra/matrixexp.lisp
|
|
-@@ -138,8 +138,8 @@
|
|
- (print `(ratvars = ,$ratvars gcd = '$gcd algebraic = ,$algebraic))
|
|
- (print `(ratfac = ,$ratfac))
|
|
- (merror "Unable to find the spectrum")))
|
|
--
|
|
-- (setq res ($fullratsimp (ncpower (sub (mult z ($ident n)) mat) -1) z))
|
|
-+
|
|
-+ (setq res ($fullratsimp ($invert_by_lu (sub (mult z ($ident n)) mat) '$crering) z))
|
|
- (setq m (length sp))
|
|
- (dotimes (i m)
|
|
- (setq zi (nth i sp))
|
|
diff --git a/build/pkgs/maxima/patches/maxima.system.patch b/build/pkgs/maxima/patches/maxima.system.patch
|
|
deleted file mode 100644
|
|
index 74db62e7f9f..00000000000
|
|
--- a/build/pkgs/maxima/patches/maxima.system.patch
|
|
+++ /dev/null
|
|
@@ -1,25 +0,0 @@
|
|
-diff --git a/src/maxima.system b/src/maxima.system
|
|
-index 76f2452..cf25f51 100644
|
|
---- a/src/maxima.system
|
|
-+++ b/src/maxima.system
|
|
-@@ -1,5 +1,8 @@
|
|
- ;;; -*- Lisp -*-
|
|
-
|
|
-+(require :cmp)
|
|
-+(setf c::*compile-in-constants* t)
|
|
-+
|
|
- (in-package :cl-user)
|
|
-
|
|
- (pushnew :cl *features*)
|
|
-@@ -75,6 +78,11 @@
|
|
- ;; Convert dir/foo.fas to dir/foo.o
|
|
- (make-pathname :type "o" :defaults p))
|
|
- files)))
|
|
-+ (c::build-fasl "binary-ecl/maxima" :lisp-files obj
|
|
-+ :ld-flags
|
|
-+ (let ((x (symbol-value (find-symbol "*AUTOCONF-LD-FLAGS*"
|
|
-+ (find-package "MAXIMA")))))
|
|
-+ (if (and x (not (string= x ""))) (list x))))
|
|
- (c::build-program "binary-ecl/maxima" :lisp-files obj
|
|
- :ld-flags
|
|
- (let ((x (symbol-value (find-symbol "*AUTOCONF-LD-FLAGS*"
|
|
diff --git a/build/pkgs/maxima/spkg-configure.m4 b/build/pkgs/maxima/spkg-configure.m4
|
|
new file mode 100644
|
|
index 00000000000..86de8c1dfc1
|
|
--- /dev/null
|
|
+++ b/build/pkgs/maxima/spkg-configure.m4
|
|
@@ -0,0 +1,46 @@
|
|
+SAGE_SPKG_CONFIGURE([maxima], [
|
|
+ m4_pushdef([SAGE_MAXIMA_MINVER],["5.45.0"])dnl this version and higher allowed
|
|
+ SAGE_SPKG_DEPCHECK([ecl], [
|
|
+ dnl First check for the "maxima" executable in the user's PATH, because
|
|
+ dnl we still use pexpect to communicate with it in a few places.
|
|
+ AC_CACHE_CHECK([for Maxima >= $SAGE_MAXIMA_MINVER], [ac_cv_path_MAXIMA], [
|
|
+ AC_PATH_PROGS_FEATURE_CHECK([MAXIMA], [maxima], [
|
|
+ maxima_version=`$ac_path_MAXIMA --version 2>&1 | tail -n 1\
|
|
+ | $SED -n -e 's/Maxima *\([[0-9]]*\.[[0-9]]*\.[[0-9]]*\)/\1/p'`
|
|
+ AS_IF([test -n "$maxima_version"], [
|
|
+ AX_COMPARE_VERSION([$maxima_version], [ge], [SAGE_MAXIMA_MINVER], [
|
|
+ ac_cv_path_MAXIMA="$ac_path_MAXIMA"
|
|
+ ac_path_MAXIMA_found=:
|
|
+ ])
|
|
+ ])
|
|
+ ])
|
|
+ ])
|
|
+ SAGE_MAXIMA="$ac_cv_path_MAXIMA"
|
|
+ AS_IF([test -z "${SAGE_MAXIMA}"], [
|
|
+ sage_spkg_install_maxima=yes
|
|
+ ],[
|
|
+ dnl If we have the executable, check also for the ECL library.
|
|
+ AC_MSG_CHECKING([if ECL can "require" the maxima module])
|
|
+ AS_IF([ecl --eval "(require 'maxima)" --eval "(quit)" \
|
|
+ >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD], [
|
|
+ AC_MSG_RESULT(yes)
|
|
+ ], [
|
|
+ AC_MSG_RESULT(no)
|
|
+ sage_spkg_install_maxima=yes
|
|
+ ])
|
|
+ ])
|
|
+ ])
|
|
+ m4_popdef([SAGE_MAXIMA_MINVER])
|
|
+],[],[],[
|
|
+ # post-check
|
|
+ AS_IF([test x$sage_spkg_install_maxima = xyes], [
|
|
+ dnl Leaving this variable empty will tell sagelib to load
|
|
+ dnl the maxima library (within ECL) by name instead of by
|
|
+ dnl absolute path.
|
|
+ SAGE_MAXIMA='${prefix}'/bin/maxima
|
|
+ SAGE_MAXIMA_FAS='${prefix}'/lib/ecl/maxima.fas
|
|
+ ])
|
|
+
|
|
+ AC_SUBST(SAGE_MAXIMA, "${SAGE_MAXIMA}")
|
|
+ AC_SUBST(SAGE_MAXIMA_FAS, "${SAGE_MAXIMA_FAS}")
|
|
+])
|
|
diff --git a/build/pkgs/maxima/spkg-install.in b/build/pkgs/maxima/spkg-install.in
|
|
index 3ae6382f9ba..cdb6fbf2069 100644
|
|
--- a/build/pkgs/maxima/spkg-install.in
|
|
+++ b/build/pkgs/maxima/spkg-install.in
|
|
@@ -28,28 +28,6 @@ echo
|
|
echo "Now configuring Maxima..."
|
|
sdh_configure --enable-ecl git_found=false
|
|
|
|
-# Note the following is regression in maxima build system
|
|
-# see https://sourceforge.net/p/maxima/bugs/3278/
|
|
-# and https://sourceforge.net/p/maxima/bugs/2878/
|
|
-# For the previous time it was fixed.
|
|
-#---------------------------------------------------------------
|
|
-# Touching html and info file to avoid to regenerate them.
|
|
-# This must be done after configuration since the timestamp need
|
|
-# to be later than include-maxima.texi which is generated at
|
|
-# configuration time
|
|
-for i in doc/info/*.html ; do
|
|
- touch "${i}"
|
|
-done
|
|
-touch doc/info/maxima.info*
|
|
-# Maxima 5.44.0 build_html.sh is not compatible with makeinfo 4.8
|
|
-# (which is /usr/bin/makeinfo on macOS). #30063
|
|
-# Do not build the HTML docs unless the user asks for it,
|
|
-# in which case it is their problem to install a better
|
|
-# makeinfo version.
|
|
-if [[ "$SAGE_SPKG_INSTALL_DOCS" != yes ]] ; then
|
|
-touch doc/info/maxima_toc.html interfaces/xmaxima/doc/xmaxima.html
|
|
-fi
|
|
-
|
|
#---------------------------------------------------------------
|
|
|
|
sdh_make
|
|
diff --git a/build/pkgs/tox/spkg-configure.m4 b/build/pkgs/tox/spkg-configure.m4
|
|
index 7d8ade4c14b..5a260439cdd 100644
|
|
--- a/build/pkgs/tox/spkg-configure.m4
|
|
+++ b/build/pkgs/tox/spkg-configure.m4
|
|
@@ -5,7 +5,7 @@ SAGE_SPKG_CONFIGURE([tox], [
|
|
m4_pushdef([TOX4_MIN_VERSION], [4.0.15])
|
|
AC_CACHE_CHECK([for tox 3 >= ]TOX3_MIN_VERSION[ or tox 4 >= ]TOX4_MIN_VERSION, [ac_cv_path_TOX], [
|
|
AC_PATH_PROGS_FEATURE_CHECK([TOX], [tox], [
|
|
- tox_version=$($ac_path_TOX --version 2> /dev/null | tail -1)
|
|
+ tox_version=$($ac_path_TOX --version 2> /dev/null | tail -n 1)
|
|
AS_IF([test -n "$tox_version"], [
|
|
AX_COMPARE_VERSION([$tox_version], [lt], [4], [
|
|
AX_COMPARE_VERSION([$tox_version], [ge], TOX3_MIN_VERSION, [
|
|
diff --git a/pkgs/sage-conf/_sage_conf/_conf.py.in b/pkgs/sage-conf/_sage_conf/_conf.py.in
|
|
index d66bdb3d264..f2e197b45ed 100644
|
|
--- a/pkgs/sage-conf/_sage_conf/_conf.py.in
|
|
+++ b/pkgs/sage-conf/_sage_conf/_conf.py.in
|
|
@@ -9,9 +9,11 @@ VERSION = "@PACKAGE_VERSION@"
|
|
SAGE_LOCAL = "@prefix@"
|
|
SAGE_ROOT = "@SAGE_ROOT@"
|
|
|
|
-MAXIMA = "@prefix@/bin/maxima"
|
|
+# The path to the standalone maxima executable.
|
|
+MAXIMA = "@SAGE_MAXIMA@".replace('${prefix}', SAGE_LOCAL)
|
|
|
|
-# Delete this line if your ECL can load maxima without further prodding.
|
|
+# Set this to the empty string if your ECL can load maxima without
|
|
+# further prodding.
|
|
MAXIMA_FAS = "@SAGE_MAXIMA_FAS@".replace('${prefix}', SAGE_LOCAL)
|
|
|
|
# Delete this line if your ECL can load Kenzo without further prodding.
|
|
diff --git a/src/bin/sage-env b/src/bin/sage-env
|
|
index a7da60df28f..13b54fa7e92 100644
|
|
--- a/src/bin/sage-env
|
|
+++ b/src/bin/sage-env
|
|
@@ -440,9 +440,6 @@ if [ -d "$DOT_SAGE" ] ; then
|
|
fi
|
|
fi
|
|
|
|
-if [ -n "$SAGE_LOCAL" ]; then
|
|
- export MAXIMA_PREFIX="$SAGE_LOCAL"
|
|
-fi
|
|
export MAXIMA_USERDIR="$DOT_SAGE/maxima"
|
|
|
|
if [ -n "$SAGE_LOCAL" ]; then
|
|
diff --git a/src/sage/calculus/calculus.py b/src/sage/calculus/calculus.py
|
|
index dae380180ac..ee8f632e94c 100644
|
|
--- a/src/sage/calculus/calculus.py
|
|
+++ b/src/sage/calculus/calculus.py
|
|
@@ -136,10 +136,11 @@
|
|
[ 1/2*(e^(2*sqrt(x)) + 1)*e^(x - sqrt(x)) 1/2*(x*e^(2*sqrt(x)) - x)*sqrt(x)*e^(x - sqrt(x))]
|
|
[ 1/2*(e^(2*sqrt(x)) - 1)*e^(x - sqrt(x))/x^(3/2) 1/2*(e^(2*sqrt(x)) + 1)*e^(x - sqrt(x))]
|
|
|
|
-And complex exponentiation works now::
|
|
+Complex exponentiation works, but may require a patched version of
|
|
+maxima (:trac:`32898`) for now::
|
|
|
|
sage: M = i*matrix([[pi]])
|
|
- sage: e^M
|
|
+ sage: e^M # not tested, requires patched maxima
|
|
[-1]
|
|
sage: M = i*matrix([[pi,0],[0,2*pi]])
|
|
sage: e^M
|
|
@@ -1186,8 +1187,18 @@ def limit(ex, dir=None, taylor=False, algorithm='maxima', **argv):
|
|
e
|
|
sage: f.limit(x=5)
|
|
7776/3125
|
|
- sage: f.limit(x=1.2)
|
|
+
|
|
+ Domain to real, a regression in 5.46.0, see https://sf.net/p/maxima/bugs/4138 ::
|
|
+
|
|
+ sage: maxima_calculus.eval("domain:real")
|
|
+ ...
|
|
+ sage: f.limit(x=1.2).n()
|
|
2.06961575467...
|
|
+ sage: maxima_calculus.eval("domain:complex");
|
|
+ ...
|
|
+
|
|
+ Otherwise, it works ::
|
|
+
|
|
sage: f.limit(x=I, taylor=True)
|
|
(-I + 1)^I
|
|
sage: f(x=1.2)
|
|
@@ -1215,7 +1226,7 @@ def limit(ex, dir=None, taylor=False, algorithm='maxima', **argv):
|
|
With this example, Maxima is looking for a LOT of information::
|
|
|
|
sage: assume(a>0)
|
|
- sage: limit(x^a,x=0)
|
|
+ sage: limit(x^a,x=0) # random - maxima 5.46.0 does not need extra assumption
|
|
Traceback (most recent call last):
|
|
...
|
|
ValueError: Computation failed since Maxima requested additional
|
|
@@ -1224,7 +1235,7 @@ def limit(ex, dir=None, taylor=False, algorithm='maxima', **argv):
|
|
more details)
|
|
Is a an integer?
|
|
sage: assume(a,'integer')
|
|
- sage: limit(x^a, x=0)
|
|
+ sage: limit(x^a, x=0) # random - maxima 5.46.0 does not need extra assumption
|
|
Traceback (most recent call last):
|
|
...
|
|
ValueError: Computation failed since Maxima requested additional
|
|
@@ -2251,10 +2262,10 @@ def symbolic_expression_from_maxima_string(x, equals_sub=False, maxima=maxima):
|
|
True
|
|
sage: sefms("x # 3") == SR(x != 3)
|
|
True
|
|
- sage: solve([x != 5], x)
|
|
- [[x - 5 != 0]]
|
|
+ sage: solve([x != 5], x) in [[[x - 5 != 0]], [[x < 5], [5 < x]]]
|
|
+ True
|
|
sage: solve([2*x==3, x != 5], x)
|
|
- [[x == (3/2), (-7/2) != 0]]
|
|
+ [[x == (3/2)...
|
|
|
|
Make sure that we don't accidentally pick up variables in the maxima namespace (:trac:`8734`)::
|
|
|
|
diff --git a/src/sage/functions/exp_integral.py b/src/sage/functions/exp_integral.py
|
|
index e6c888c64b6..f314e525145 100644
|
|
--- a/src/sage/functions/exp_integral.py
|
|
+++ b/src/sage/functions/exp_integral.py
|
|
@@ -601,8 +601,8 @@ class Function_log_integral_offset(BuiltinFunction):
|
|
1/log(x)
|
|
sage: f.integrate(x)
|
|
-x*log_integral(2) + x*log_integral(x) - Ei(2*log(x))
|
|
- sage: Li(x).integrate(x,2.0,4.5)
|
|
- -2.5*log_integral(2) + 5.799321147411334
|
|
+ sage: Li(x).integrate(x,2.0,4.5).n(digits=10)
|
|
+ 3.186411697
|
|
sage: N(f.integrate(x,2.0,3.0)) # abs tol 1e-15
|
|
0.601621785860587
|
|
|
|
diff --git a/src/sage/interfaces/expect.py b/src/sage/interfaces/expect.py
|
|
index 68ae715e4c3..84adf0341b5 100644
|
|
--- a/src/sage/interfaces/expect.py
|
|
+++ b/src/sage/interfaces/expect.py
|
|
@@ -620,7 +620,7 @@ def quit(self, verbose=False):
|
|
|
|
sage: a = maxima('y')
|
|
sage: maxima.quit(verbose=True)
|
|
- Exiting Maxima with PID ... running .../bin/maxima...
|
|
+ Exiting Maxima with PID ... running ...maxima...
|
|
sage: a._check_valid()
|
|
Traceback (most recent call last):
|
|
...
|
|
diff --git a/src/sage/interfaces/maxima.py b/src/sage/interfaces/maxima.py
|
|
index 27b1e98a6ac..4829560f98b 100644
|
|
--- a/src/sage/interfaces/maxima.py
|
|
+++ b/src/sage/interfaces/maxima.py
|
|
@@ -622,11 +622,6 @@ def _start(self):
|
|
sage: m.is_running()
|
|
True
|
|
|
|
- Test that we can use more than 256MB RAM (see :trac:`6772`)::
|
|
-
|
|
- sage: a = maxima(10)^(10^5)
|
|
- sage: b = a^600 # long time -- about 10-15 seconds
|
|
-
|
|
"""
|
|
Expect._start(self)
|
|
self._sendline(r":lisp (defun tex-derivative (x l r) (tex (if $derivabbrev (tex-dabbrev x) (tex-d x '\\partial)) l r lop rop ))")
|
|
@@ -634,9 +629,6 @@ def _start(self):
|
|
# Don't use ! for factorials (#11539)
|
|
self._sendline(":lisp (remprop 'mfactorial 'grind)")
|
|
|
|
- # Remove limit on the max heapsize (since otherwise it defaults
|
|
- # to 256MB with ECL).
|
|
- self._sendline(":lisp (ext:set-limit 'ext:heap-size 0)")
|
|
self._eval_line('0;')
|
|
|
|
# set random seed
|
|
diff --git a/src/sage/interfaces/maxima_lib.py b/src/sage/interfaces/maxima_lib.py
|
|
index c263ac65f02..bba8504aa92 100644
|
|
--- a/src/sage/interfaces/maxima_lib.py
|
|
+++ b/src/sage/interfaces/maxima_lib.py
|
|
@@ -934,8 +934,15 @@ def sr_limit(self, expr, v, a, dir=None):
|
|
e
|
|
sage: limit(f,x = 5)
|
|
7776/3125
|
|
- sage: limit(f,x = 1.2)
|
|
+
|
|
+ Domain to real, a regression in 5.46.0, see https://sf.net/p/maxima/bugs/4138 ::
|
|
+
|
|
+ sage: maxima_calculus.eval("domain:real")
|
|
+ ...
|
|
+ sage: limit(f,x = 1.2).n()
|
|
2.06961575467...
|
|
+ sage: maxima_calculus.eval("domain:complex");
|
|
+ ...
|
|
sage: var('a')
|
|
a
|
|
sage: limit(x^a,x=0)
|
|
@@ -947,7 +954,7 @@ def sr_limit(self, expr, v, a, dir=None):
|
|
for more details)
|
|
Is a positive, negative or zero?
|
|
sage: assume(a>0)
|
|
- sage: limit(x^a,x=0)
|
|
+ sage: limit(x^a,x=0) # random - not needed for maxima 5.46.0
|
|
Traceback (most recent call last):
|
|
...
|
|
ValueError: Computation failed ...
|
|
diff --git a/src/sage/matrix/matrix2.pyx b/src/sage/matrix/matrix2.pyx
|
|
index e2e6449dfa9..15914b0be3e 100644
|
|
--- a/src/sage/matrix/matrix2.pyx
|
|
+++ b/src/sage/matrix/matrix2.pyx
|
|
@@ -15425,9 +15425,10 @@ cdef class Matrix(Matrix1):
|
|
|
|
TESTS:
|
|
|
|
- Check that sparse matrices are handled correctly (:trac:`28935`)::
|
|
+ Sparse matrices are handled correctly (:trac:`28935`), but may
|
|
+ require a patched version of maxima (:trac:`32898`) for now::
|
|
|
|
- sage: matrix.diagonal([0], sparse=True).exp()
|
|
+ sage: matrix.diagonal([0], sparse=True).exp() # not tested, requires patched maxima
|
|
[1]
|
|
sage: matrix.zero(CBF, 2, sparse=True).exp()
|
|
[1.000000000000000 0]
|
|
diff --git a/src/sage/matrix/matrix_symbolic_dense.pyx b/src/sage/matrix/matrix_symbolic_dense.pyx
|
|
index 19ca5c85cb2..58a25e002f6 100644
|
|
--- a/src/sage/matrix/matrix_symbolic_dense.pyx
|
|
+++ b/src/sage/matrix/matrix_symbolic_dense.pyx
|
|
@@ -402,7 +402,8 @@ cdef class Matrix_symbolic_dense(Matrix_generic_dense):
|
|
[1/2*(e^(2*x) + 1)*e^(-x) 1/2*(e^(2*x) - 1)*e^(-x)]
|
|
[1/2*(e^(2*x) - 1)*e^(-x) 1/2*(e^(2*x) + 1)*e^(-x)]
|
|
|
|
- Exp works on 0x0 and 1x1 matrices::
|
|
+ Exponentiation works on 0x0 and 1x1 matrices, but the 1x1 example
|
|
+ requires a patched version of maxima (:trac:`32898`) for now::
|
|
|
|
sage: m = matrix(SR,0,[]); m
|
|
[]
|
|
@@ -410,7 +411,7 @@ cdef class Matrix_symbolic_dense(Matrix_generic_dense):
|
|
[]
|
|
sage: m = matrix(SR,1,[2]); m
|
|
[2]
|
|
- sage: m.exp()
|
|
+ sage: m.exp() # not tested, requires patched maxima
|
|
[e^2]
|
|
|
|
Commuting matrices `m, n` have the property that
|
|
@@ -451,7 +452,6 @@ cdef class Matrix_symbolic_dense(Matrix_generic_dense):
|
|
[ 0 1/2*(e^(2*x) + 1)*e^(-x) 1/2*(e^(2*x) - 1)*e^(-x) 0]
|
|
[ 0 1/2*(e^(2*x) - 1)*e^(-x) 1/2*(e^(2*x) + 1)*e^(-x) 0]
|
|
[1/2*(e^(2*x) - 1)*e^(-x) 0 0 1/2*(e^(2*x) + 1)*e^(-x)]
|
|
-
|
|
"""
|
|
if not self.is_square():
|
|
raise ValueError("exp only defined on square matrices")
|
|
diff --git a/src/sage/symbolic/integration/integral.py b/src/sage/symbolic/integration/integral.py
|
|
index c82e9ed73c3..e84ad357ee2 100644
|
|
--- a/src/sage/symbolic/integration/integral.py
|
|
+++ b/src/sage/symbolic/integration/integral.py
|
|
@@ -741,14 +741,14 @@ def integrate(expression, v=None, a=None, b=None, algorithm=None, hold=False):
|
|
|
|
sage: _ = var('x,y')
|
|
sage: f = log(x^2+y^2)
|
|
- sage: res = integral(f,x,0.0001414, 1.); res
|
|
+ sage: res = integral(f,x,1414/10^7, 1); res
|
|
Traceback (most recent call last):
|
|
...
|
|
- ValueError: Computation failed since Maxima requested additional constraints; using the 'assume' command before evaluation *may* help (example of legal syntax is 'assume(50015104*y^2-50015103>0)', see `assume?` for more details)
|
|
- Is 50015104*y^2-50015103 positive, negative or zero?
|
|
+ ValueError: Computation failed since Maxima requested additional constraints; using the 'assume' command before evaluation *may* help ...
|
|
+ Is ... positive, negative or zero?
|
|
sage: assume(y>1)
|
|
- sage: res = integral(f,x,0.0001414, 1.); res
|
|
- 2*y*arctan(1.0/y) - 2*y*arctan(0.0001414/y) + 1.0*log(1.0*y^2 + 1.0) - 0.0001414*log(1.0*y^2 + 1.9993959999999997e-08) - 1.9997172
|
|
+ sage: res = integral(f,x,1414/10^7, 1); res
|
|
+ -2*y*arctan(707/5000000/y) + 2*y*arctan(1/y) + log(y^2 + 1) - 707/5000000*log(y^2 + 499849/25000000000000) - 4999293/2500000
|
|
sage: nres = numerical_integral(f.subs(y=2), 0.0001414, 1.); nres
|
|
(1.4638323264144..., 1.6251803529759...e-14)
|
|
sage: res.subs(y=2).n()
|
|
diff --git a/src/sage/symbolic/relation.py b/src/sage/symbolic/relation.py
|
|
index 94813315181..a72ab547c76 100644
|
|
--- a/src/sage/symbolic/relation.py
|
|
+++ b/src/sage/symbolic/relation.py
|
|
@@ -1787,8 +1787,8 @@ def solve_ineq_fourier(ineq, vars=None):
|
|
sage: y = var('y')
|
|
sage: solve_ineq_fourier([x+y<9,x-y>4],[x,y])
|
|
[[y + 4 < x, x < -y + 9, y < (5/2)]]
|
|
- sage: solve_ineq_fourier([x+y<9,x-y>4],[y,x])
|
|
- [[y < min(x - 4, -x + 9)]]
|
|
+ sage: solve_ineq_fourier([x+y<9,x-y>4],[y,x])[0][0](x=42)
|
|
+ y < -33
|
|
|
|
sage: solve_ineq_fourier([x^2>=0])
|
|
[[x < +Infinity]]
|