Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
mkoeppe committed Jan 30, 2023
2 parents 031ebaa + 7305a7c commit 4353e01
Show file tree
Hide file tree
Showing 13 changed files with 61 additions and 46 deletions.
25 changes: 13 additions & 12 deletions src/sage/functions/hypergeometric.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,27 +162,28 @@
# https://www.gnu.org/licenses/
# ****************************************************************************

from functools import reduce

from sage.arith.misc import binomial, factorial, rising_factorial
from sage.calculus.functional import derivative
from sage.libs.mpmath import utils as mpmath_utils
from sage.misc.latex import latex
from sage.misc.misc_c import prod
from sage.rings.infinity import Infinity
from sage.rings.integer import Integer
from sage.rings.integer_ring import ZZ
from sage.rings.rational_field import QQ
from sage.rings.infinity import Infinity
from sage.arith.all import binomial, rising_factorial, factorial
from sage.structure.element import get_coercion_model
from sage.symbolic.constants import pi
from sage.symbolic.expression import Expression
from sage.symbolic.function import BuiltinFunction
from sage.symbolic.ring import SR
from sage.structure.element import get_coercion_model
from sage.misc.latex import latex
from sage.misc.misc_c import prod
from sage.libs.mpmath import utils as mpmath_utils
from sage.symbolic.expression import Expression
from sage.calculus.functional import derivative
from functools import reduce

from .error import erf
from .gamma import gamma
from .other import sqrt, real_part
from .log import exp, log
from .hyperbolic import cosh, sinh
from .error import erf
from .log import exp, log
from .other import sqrt, real_part


def rational_param_as_tuple(x):
Expand Down
15 changes: 11 additions & 4 deletions src/sage/functions/piecewise.py
Original file line number Diff line number Diff line change
Expand Up @@ -1089,7 +1089,9 @@ def laplace(self, parameters, variable, x='x', s='t'):
sage: f.laplace(t,s)
(s + 1)*e^(-s)/s^2 + 2*e^(-s)/s - 1/s^2
"""
from sage.all import assume, exp, forget
from sage.symbolic.assumptions import assume, forget
from sage.functions.log import exp

x = SR.var(x)
s = SR.var(s)
assume(s>0)
Expand Down Expand Up @@ -1180,7 +1182,8 @@ def fourier_series_cosine_coefficient(self, parameters,
-3/5/pi
"""
from sage.all import cos, pi
from sage.functions.trig import cos
from sage.symbolic.constants import pi
L0 = (self.domain().sup() - self.domain().inf()) / 2
if not L:
L = L0
Expand Down Expand Up @@ -1270,7 +1273,8 @@ def fourier_series_sine_coefficient(self, parameters, variable,
4/3/pi
"""
from sage.all import sin, pi
from sage.functions.trig import sin
from sage.symbolic.constants import pi
L0 = (self.domain().sup() - self.domain().inf()) / 2
if not L:
L = L0
Expand Down Expand Up @@ -1358,7 +1362,10 @@ def fourier_series_partial_sum(self, parameters, variable, N,
- 4/9*sin(3*pi*x)/pi^2 + 4*sin(pi*x)/pi^2 + 1/4
"""
from sage.all import pi, sin, cos, srange
from sage.symbolic.constants import pi
from sage.functions.trig import cos, sin
from sage.arith.srange import srange

if not L:
L = (self.domain().sup() - self.domain().inf()) / 2
x = self.default_variable()
Expand Down
3 changes: 2 additions & 1 deletion src/sage/interfaces/axiom.py
Original file line number Diff line number Diff line change
Expand Up @@ -836,7 +836,8 @@ def _sage_(self):
return self._sage_domain()

if type == "Float":
from sage.rings.all import RealField, ZZ
from sage.rings.real_mpfr import RealField
from sage.rings.integer_ring import ZZ
prec = max(self.mantissa().length()._sage_(), 53)
R = RealField(prec)
x,e,b = self.unparsed_input_form().lstrip('float(').rstrip(')').split(',')
Expand Down
7 changes: 5 additions & 2 deletions src/sage/interfaces/fricas.py
Original file line number Diff line number Diff line change
Expand Up @@ -1217,7 +1217,9 @@ def _get_sage_type(self, domain):
sage: fricas(0)._get_sage_type(m) # optional - fricas
Univariate Polynomial Ring in y over Univariate Polynomial Ring in x over Algebraic Field
"""
from sage.rings.all import QQbar, RDF, PolynomialRing
from sage.rings.qqbar import QQbar
from sage.rings.real_double import RDF
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
from sage.rings.fraction_field import FractionField
from sage.rings.finite_rings.integer_mod_ring import Integers
from sage.rings.finite_rings.finite_field_constructor import FiniteField
Expand Down Expand Up @@ -1730,7 +1732,8 @@ def convert_rootOf(x, y):

ex, _ = FriCASElement._parse_and_eval(fricas_InputForm)
# postprocessing of rootOf
from sage.rings.all import QQbar, PolynomialRing
from sage.rings.qqbar import QQbar
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
while rootOf:
for var, poly in rootOf.items():
pvars = poly.variables()
Expand Down
4 changes: 3 additions & 1 deletion src/sage/interfaces/genus2reduction.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,9 @@
# ****************************************************************************

from sage.structure.sage_object import SageObject
from sage.rings.all import ZZ, QQ, PolynomialRing
from sage.rings.integer_ring import ZZ
from sage.rings.rational_field import QQ
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
from sage.libs.pari.all import pari

roman_numeral = ["", "I", "II", "III", "IV", "V", "VI", "VII"]
Expand Down
2 changes: 1 addition & 1 deletion src/sage/interfaces/maxima_abstract.py
Original file line number Diff line number Diff line change
Expand Up @@ -1846,7 +1846,7 @@ def _matrix_(self, R):
[ 3 3/2 1 3/4]
[ 4 2 4/3 1]
"""
from sage.matrix.all import MatrixSpace
from sage.matrix.matrix_space import MatrixSpace
self._check_valid()
P = self.parent()
nrows = int(P.eval('length(%s)'%self.name()))
Expand Down
4 changes: 2 additions & 2 deletions src/sage/interfaces/octave.py
Original file line number Diff line number Diff line change
Expand Up @@ -508,7 +508,7 @@ def solve_linear_system(self, A, b):
m = A.nrows()
if m != len(b):
raise ValueError("dimensions of A and b must be compatible")
from sage.matrix.all import MatrixSpace
from sage.matrix.matrix_space import MatrixSpace
from sage.rings.rational_field import QQ
MS = MatrixSpace(QQ,m,1)
b = MS(list(b)) # converted b to a "column vector"
Expand Down Expand Up @@ -707,7 +707,7 @@ def _matrix_(self, R=None):
if self.iscomplex():
w = [[to_complex(x,R) for x in row] for row in w]

from sage.matrix.all import MatrixSpace
from sage.matrix.matrix_space import MatrixSpace
return MatrixSpace(R, nrows, ncols)(w)

def _vector_(self, R=None):
Expand Down
3 changes: 2 additions & 1 deletion src/sage/interfaces/sage0.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,8 @@ def __init__(self,
if python:
command = 'python -u'
prompt = re.compile(b'>>> ')
init_code.append('from sage.all import *')
environment = 'sage.all'
init_code.append(f'from {environment} import *')
else:
command = ' '.join([
'sage-ipython',
Expand Down
2 changes: 1 addition & 1 deletion src/sage/interfaces/scilab.py
Original file line number Diff line number Diff line change
Expand Up @@ -486,7 +486,7 @@ def _matrix_(self, R):
[1.00000000000000 2.00000000000000]
[3.00000000000000 4.50000000000000]
"""
from sage.matrix.all import MatrixSpace
from sage.matrix.matrix_space import MatrixSpace
s = str(self).strip()
v = s.split('\n ')
nrows = len(v)
Expand Down
14 changes: 9 additions & 5 deletions src/sage/interfaces/singular.py
Original file line number Diff line number Diff line change
Expand Up @@ -1656,15 +1656,19 @@ def sage_global_ring(self):
br = ZZ
is_extension = False
elif charstr[0] in ['0', 'QQ']:
from sage.all import QQ
from sage.rings.rational_field import QQ
br = QQ
elif charstr[0].startswith('Float'):
from sage.all import RealField, ceil, log
from sage.rings.real_mpfr import RealField
from sage.functions.other import ceil
from sage.misc.functional import log
prec = singular.eval('ringlist(basering)[1][2][1]')
br = RealField(ceil((ZZ(prec)+1)/log(2,10)))
is_extension = False
elif charstr[0]=='complex':
from sage.all import ComplexField, ceil, log
from sage.rings.complex_mpfr import ComplexField
from sage.functions.other import ceil
from sage.misc.functional import log
prec = singular.eval('ringlist(basering)[1][2][1]')
br = ComplexField(ceil((ZZ(prec)+1)/log(2,10)))
is_extension = False
Expand All @@ -1684,7 +1688,7 @@ def sage_global_ring(self):
if is_extension:
minpoly = singular.eval('minpoly')
if minpoly == '0':
from sage.all import Frac
from sage.rings.fraction_field import FractionField as Frac
BR = Frac(br[charstr[1]])
else:
is_short = singular.eval('short')
Expand All @@ -1701,7 +1705,7 @@ def sage_global_ring(self):
# Now, we form the polynomial ring over BR with the given variables,
# using Singular's term order
from sage.rings.polynomial.term_order import termorder_from_singular
from sage.all import PolynomialRing
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
# Meanwhile Singulars quotient rings are also of 'ring' type, not 'qring' as it was in the past.
# To find out if a singular ring is a quotient ring or not checking for ring type does not help
# and instead of that we check if the quotient ring is zero or not:
Expand Down
4 changes: 2 additions & 2 deletions src/sage/interfaces/sympy.py
Original file line number Diff line number Diff line change
Expand Up @@ -453,7 +453,7 @@ def _sympysage_rf(self):
sage: assert rising_factorial(x,y)._sympy_() == rfxy.rewrite('gamma', piecewise=False)
sage: assert rising_factorial(x,y) == rfxy._sage_()
"""
from sage.arith.all import rising_factorial
from sage.arith.misc import rising_factorial
return rising_factorial(self.args[0]._sage_(), self.args[1]._sage_())

def _sympysage_ff(self):
Expand All @@ -466,7 +466,7 @@ def _sympysage_ff(self):
sage: assert falling_factorial(x,y)._sympy_() == ffxy.rewrite('gamma') # known bug
sage: assert falling_factorial(x,y) == ffxy._sage_()
"""
from sage.arith.all import falling_factorial
from sage.arith.misc import falling_factorial
return falling_factorial(self.args[0]._sage_(), self.args[1]._sage_())

def _sympysage_lgamma(self):
Expand Down
16 changes: 6 additions & 10 deletions src/sage/symbolic/pynac_impl.pxi
Original file line number Diff line number Diff line change
Expand Up @@ -35,30 +35,26 @@ Pynac interface
from cpython cimport *
from libc cimport math

from sage.arith.misc import bernoulli, factorial, GCD as gcd, is_prime
from sage.arith.functions import lcm
from sage.cpython.string cimport str_to_bytes, char_to_str
from sage.ext.stdsage cimport PY_NEW
from sage.libs.gmp.all cimport *
from sage.libs.gsl.types cimport *
from sage.libs.gsl.complex cimport *
from sage.libs.gsl.gamma cimport gsl_sf_lngamma_complex_e
from sage.libs.mpmath import utils as mpmath_utils
from sage.libs.pari.all import pari

from sage.cpython.string cimport str_to_bytes, char_to_str

from sage.arith.all import gcd, lcm, is_prime, factorial, bernoulli

from sage.structure.coerce cimport coercion_model
from sage.structure.element cimport Element, parent
from sage.misc.persist import loads, dumps

from sage.rings.integer_ring import ZZ
from sage.rings.integer cimport Integer, smallInteger
from sage.rings.rational cimport Rational
from sage.rings.real_mpfr import RR, RealField
from sage.rings.rational cimport rational_power_parts
from sage.rings.real_double cimport RealDoubleElement
from sage.rings.cc import CC

from sage.structure.coerce cimport coercion_model
from sage.structure.element cimport Element, parent
from sage.symbolic.function cimport Function


Expand Down Expand Up @@ -2391,7 +2387,7 @@ def register_symbol(obj, conversions, nargs=None):
this can be deduced automatically.
EXAMPLES::
sage: from sage.symbolic.expression import register_symbol as rs
sage: rs(SR(5),{'maxima':'five'})
sage: SR(maxima_calculus('five'))
Expand Down
8 changes: 4 additions & 4 deletions src/sage/symbolic/substitution_map_impl.pxi
Original file line number Diff line number Diff line change
Expand Up @@ -29,21 +29,21 @@ cdef class SubstitutionMap(SageObject):
Apply the substitution to a symbolic expression
EXAMPLES::
sage: from sage.symbolic.expression import make_map
sage: subs = make_map({x:x+1})
sage: subs.apply_to(x^2, 0)
(x + 1)^2
"""
return new_Expression_from_GEx(expr._parent,
return new_Expression_from_GEx(expr._parent,
expr._gobj.subs_map(self._gmapobj, options))

def _repr_(self):
"""
Return the string representation
EXAMPLES::
sage: from sage.symbolic.expression import make_map
sage: make_map({x:x+1})
SubsMap
Expand Down Expand Up @@ -94,4 +94,4 @@ cpdef SubstitutionMap make_map(subs_dict):
smap.insert(make_pair((<Expression>k)._gobj,
(<Expression>v)._gobj))
return new_SubstitutionMap_from_GExMap(smap)

0 comments on commit 4353e01

Please sign in to comment.