def test_undefined_function():
f = sympy.Function('f')
sf = sage.function('f')
x = sympy.symbols('x')
sx = sage.var('x')
assert bool(sf(sx) == f(x)._sage_())
#assert bool(f == sympy.sympify(sf))
# This string contains Sage doctests, that execute all the functions above.
# When you add a new function, please add it here as well.
python类var()的实例源码
def test_subresultants_bezout():
x = var('x')
p = x**8 + x**6 - 3*x**4 - 3*x**3 + 8*x**2 + 2*x - 5
q = 3*x**6 + 5*x**4 - 4*x**2 - 9*x + 21
assert subresultants_bezout(p, q, x) == subresultants(p, q, x)
assert subresultants_bezout(p, q, x)[-1] == sylvester(p, q, x).det()
assert subresultants_bezout(p, q, x) != euclid_amv(p, q, x)
amv_factors = [1, 1, -1, 1, -1, 1]
assert subresultants_bezout(p, q, x) == [i*j for i, j in zip(amv_factors, modified_subresultants_amv(p, q, x))]
p = x**3 - 7*x + 7
q = 3*x**2 - 7
assert subresultants_bezout(p, q, x) == euclid_amv(p, q, x)
def test_modified_subresultants_bezout():
x = var('x')
p = x**8 + x**6 - 3*x**4 - 3*x**3 + 8*x**2 + 2*x - 5
q = 3*x**6 + 5*x**4 - 4*x**2 - 9*x + 21
amv_factors = [1, 1, -1, 1, -1, 1]
assert modified_subresultants_bezout(p, q, x) == [i*j for i, j in zip(amv_factors, subresultants_amv(p, q, x))]
assert modified_subresultants_bezout(p, q, x)[-1] != sylvester(p + x**8, q, x).det()
assert modified_subresultants_bezout(p, q, x) != sturm_amv(p, q, x)
p = x**3 - 7*x + 7
q = 3*x**2 - 7
assert modified_subresultants_bezout(p, q, x) == sturm_amv(p, q, x)
assert modified_subresultants_bezout(-p, q, x) != sturm_amv(-p, q, x)
def test_sturm_pg():
x = var('x')
p = x**8 + x**6 - 3*x**4 - 3*x**3 + 8*x**2 + 2*x - 5
q = 3*x**6 + 5*x**4 - 4*x**2 - 9*x + 21
assert sturm_pg(p, q, x)[-1] != sylvester(p, q, x, 2).det()
sam_factors = [1, 1, -1, -1, 1, 1]
assert sturm_pg(p, q, x) == [i*j for i,j in zip(sam_factors, euclid_pg(p, q, x))]
p = -9*x**5 - 5*x**3 - 9
q = -45*x**4 - 15*x**2
assert sturm_pg(p, q, x, 1)[-1] == sylvester(p, q, x, 1).det()
assert sturm_pg(p, q, x)[-1] != sylvester(p, q, x, 2).det()
assert sturm_pg(-p, q, x)[-1] == sylvester(-p, q, x, 2).det()
assert sturm_pg(-p, q, x) == modified_subresultants_pg(-p, q, x)
def test_sturm_q():
x = var('x')
p = x**3 - 7*x + 7
q = 3*x**2 - 7
assert sturm_q(p, q, x) == sturm(p)
assert sturm_q(-p, -q, x) != sturm(-p)
def test_sturm_amv():
x = var('x')
p = x**8 + x**6 - 3*x**4 - 3*x**3 + 8*x**2 + 2*x - 5
q = 3*x**6 + 5*x**4 - 4*x**2 - 9*x + 21
assert sturm_amv(p, q, x)[-1] != sylvester(p, q, x, 2).det()
sam_factors = [1, 1, -1, -1, 1, 1]
assert sturm_amv(p, q, x) == [i*j for i,j in zip(sam_factors, euclid_amv(p, q, x))]
p = -9*x**5 - 5*x**3 - 9
q = -45*x**4 - 15*x**2
assert sturm_amv(p, q, x, 1)[-1] == sylvester(p, q, x, 1).det()
assert sturm_amv(p, q, x)[-1] != sylvester(p, q, x, 2).det()
assert sturm_amv(-p, q, x)[-1] == sylvester(-p, q, x, 2).det()
assert sturm_pg(-p, q, x) == modified_subresultants_pg(-p, q, x)
def test_euclid_q():
x = var('x')
p = x**3 - 7*x + 7
q = 3*x**2 - 7
assert euclid_q(p, q, x)[-1] == -sturm(p)[-1]
def test_euclid_amv():
x = var('x')
p = x**3 - 7*x + 7
q = 3*x**2 - 7
assert euclid_amv(p, q, x)[-1] == sylvester(p, q, x).det()
assert euclid_amv(p, q, x) == subresultants_amv(p, q, x)
p = x**8 + x**6 - 3*x**4 - 3*x**3 + 8*x**2 + 2*x - 5
q = 3*x**6 + 5*x**4 - 4*x**2 - 9*x + 21
assert euclid_amv(p, q, x)[-1] != sylvester(p, q, x, 2).det()
sam_factors = [1, 1, -1, -1, 1, 1]
assert euclid_amv(p, q, x) == [i*j for i,j in zip(sam_factors, sturm_amv(p, q, x))]
def test_modified_subresultants_pg():
x = var('x')
p = x**8 + x**6 - 3*x**4 - 3*x**3 + 8*x**2 + 2*x - 5
q = 3*x**6 + 5*x**4 - 4*x**2 - 9*x + 21
amv_factors = [1, 1, -1, 1, -1, 1]
assert modified_subresultants_pg(p, q, x) == [i*j for i, j in zip(amv_factors, subresultants_pg(p, q, x))]
assert modified_subresultants_pg(p, q, x)[-1] != sylvester(p + x**8, q, x).det()
assert modified_subresultants_pg(p, q, x) != sturm_pg(p, q, x)
p = x**3 - 7*x + 7
q = 3*x**2 - 7
assert modified_subresultants_pg(p, q, x) == sturm_pg(p, q, x)
assert modified_subresultants_pg(-p, q, x) != sturm_pg(-p, q, x)
def test_subresultants_pg():
x = var('x')
p = x**8 + x**6 - 3*x**4 - 3*x**3 + 8*x**2 + 2*x - 5
q = 3*x**6 + 5*x**4 - 4*x**2 - 9*x + 21
assert subresultants_pg(p, q, x) == subresultants(p, q, x)
assert subresultants_pg(p, q, x)[-1] == sylvester(p, q, x).det()
assert subresultants_pg(p, q, x) != euclid_pg(p, q, x)
amv_factors = [1, 1, -1, 1, -1, 1]
assert subresultants_pg(p, q, x) == [i*j for i, j in zip(amv_factors, modified_subresultants_amv(p, q, x))]
p = x**3 - 7*x + 7
q = 3*x**2 - 7
assert subresultants_pg(p, q, x) == euclid_pg(p, q, x)
def test_subresultants_amv_q():
x = var('x')
p = x**8 + x**6 - 3*x**4 - 3*x**3 + 8*x**2 + 2*x - 5
q = 3*x**6 + 5*x**4 - 4*x**2 - 9*x + 21
assert subresultants_amv_q(p, q, x) == subresultants(p, q, x)
assert subresultants_amv_q(p, q, x)[-1] == sylvester(p, q, x).det()
assert subresultants_amv_q(p, q, x) != euclid_amv(p, q, x)
amv_factors = [1, 1, -1, 1, -1, 1]
assert subresultants_amv_q(p, q, x) == [i*j for i, j in zip(amv_factors, modified_subresultants_amv(p, q, x))]
p = x**3 - 7*x + 7
q = 3*x**2 - 7
assert subresultants_amv(p, q, x) == euclid_amv(p, q, x)
def test_quo_z():
x = var('x')
p = x**8 + x**6 - 3*x**4 - 3*x**3 + 8*x**2 + 2*x - 5
q = 3*x**6 + 5*x**4 - 4*x**2 - 9*x + 21
assert quo_z(p, -q, x) != pquo(p, -q, x)
def test_subresultants_amv():
x = var('x')
p = x**8 + x**6 - 3*x**4 - 3*x**3 + 8*x**2 + 2*x - 5
q = 3*x**6 + 5*x**4 - 4*x**2 - 9*x + 21
assert subresultants_amv(p, q, x) == subresultants(p, q, x)
assert subresultants_amv(p, q, x)[-1] == sylvester(p, q, x).det()
assert subresultants_amv(p, q, x) != euclid_amv(p, q, x)
amv_factors = [1, 1, -1, 1, -1, 1]
assert subresultants_amv(p, q, x) == [i*j for i, j in zip(amv_factors, modified_subresultants_amv(p, q, x))]
p = x**3 - 7*x + 7
q = 3*x**2 - 7
assert subresultants_amv(p, q, x) == euclid_amv(p, q, x)
def test_modified_subresultants_amv():
x = var('x')
p = x**8 + x**6 - 3*x**4 - 3*x**3 + 8*x**2 + 2*x - 5
q = 3*x**6 + 5*x**4 - 4*x**2 - 9*x + 21
amv_factors = [1, 1, -1, 1, -1, 1]
assert modified_subresultants_amv(p, q, x) == [i*j for i, j in zip(amv_factors, subresultants_amv(p, q, x))]
assert modified_subresultants_amv(p, q, x)[-1] != sylvester(p + x**8, q, x).det()
assert modified_subresultants_amv(p, q, x) != sturm_amv(p, q, x)
p = x**3 - 7*x + 7
q = 3*x**2 - 7
assert modified_subresultants_amv(p, q, x) == sturm_amv(p, q, x)
assert modified_subresultants_amv(-p, q, x) != sturm_amv(-p, q, x)
def test_subresultants_rem():
x = var('x')
p = x**8 + x**6 - 3*x**4 - 3*x**3 + 8*x**2 + 2*x - 5
q = 3*x**6 + 5*x**4 - 4*x**2 - 9*x + 21
assert subresultants_rem(p, q, x) == subresultants(p, q, x)
assert subresultants_rem(p, q, x)[-1] == sylvester(p, q, x).det()
assert subresultants_rem(p, q, x) != euclid_amv(p, q, x)
amv_factors = [1, 1, -1, 1, -1, 1]
assert subresultants_rem(p, q, x) == [i*j for i, j in zip(amv_factors, modified_subresultants_amv(p, q, x))]
p = x**3 - 7*x + 7
q = 3*x**2 - 7
assert subresultants_rem(p, q, x) == euclid_amv(p, q, x)
def test_subresultants_vv():
x = var('x')
p = x**8 + x**6 - 3*x**4 - 3*x**3 + 8*x**2 + 2*x - 5
q = 3*x**6 + 5*x**4 - 4*x**2 - 9*x + 21
assert subresultants_vv(p, q, x) == subresultants(p, q, x)
assert subresultants_vv(p, q, x)[-1] == sylvester(p, q, x).det()
assert subresultants_vv(p, q, x) != euclid_amv(p, q, x)
amv_factors = [1, 1, -1, 1, -1, 1]
assert subresultants_vv(p, q, x) == [i*j for i, j in zip(amv_factors, modified_subresultants_amv(p, q, x))]
p = x**3 - 7*x + 7
q = 3*x**2 - 7
assert subresultants_vv(p, q, x) == euclid_amv(p, q, x)
def test_print_as_sparse():
xvar = sympy.var('xvar')
yvar = sympy.var('yvar')
m = sympy.Matrix([[1, 2*xvar + yvar**3]])
res1 = """
# test_m
# test_m_num=2
c += 1
test_mr[c] = row+0
test_mc[c] = col+0
test_mv[c] += 1
c += 1
test_mr[c] = row+0
test_mc[c] = col+1
test_mv[c] += 2*xvar + (yvar*yvar*yvar)
"""
res1 = res1.strip()
print_as_sparse(m, 'test_m', print_file=False) == res1
print_as_sparse(m, 'test_m', print_file=False, full_symmetric=True) == res1
res2 = """
# test_m
# test_m_num=2
c += 1
test_mr[c] = row+0
test_mc[c] = col+0
test_mv[c] += 1
c += 1
test_mr[c] = row+0
test_mc[c] = col+1
test_mv[c] += (yvar*yvar*yvar) + 2*yvar
"""
res2 = res2.strip()
print_as_sparse(m, 'test_m', print_file=False, subs={xvar: yvar}) == res2
def test_print_as_array():
xvar = sympy.var('xvar')
yvar = sympy.var('yvar')
m = sympy.Matrix([[1, 2*xvar + yvar**3, + 2*xvar*(yvar+1)]])
res1 = '''
# m
# m_num=3
m[pos+0] += 1
m[pos+1] += 2*xvar + (yvar*yvar*yvar)
m[pos+2] += 2*xvar*(yvar + 1)
'''
res1 = res1.strip()
assert print_as_array(m, 'm') == res1
res2 = '''
# cdefs
cdef double x0
# subs
x0 = 2*xvar
# m
# m_num=3
m[pos+0] += 1
m[pos+1] += x0 + (yvar*yvar*yvar)
m[pos+2] += x0*(yvar + 1)
'''
res2 = res2.strip()
assert print_as_array(m, 'm', use_cse=True) == res2