Esempio n. 1
0
def test_DUP_to_dict():
    f = DUP([3,0,0,2,0,0,0,0,8], ZZ)

    assert f.to_dict() == \
        {8: 3, 5: 2, 0: 8}
    assert f.to_sympy_dict() == \
        {8: ZZ.to_sympy(3), 5: ZZ.to_sympy(2), 0: ZZ.to_sympy(8)}
Esempio n. 2
0
def test_DUP_to_dict():
    f = DUP([3,0,0,2,0,0,0,0,8], ZZ)

    assert f.to_dict() == \
        {8: 3, 5: 2, 0: 8}
    assert f.to_sympy_dict() == \
        {8: ZZ.to_sympy(3), 5: ZZ.to_sympy(2), 0: ZZ.to_sympy(8)}
Esempio n. 3
0
def test_DUP___eq__():
    assert DUP([ZZ(1),ZZ(2),ZZ(3)], ZZ) == \
           DUP([ZZ(1),ZZ(2),ZZ(3)], ZZ)
    assert DUP([QQ(1),QQ(2),QQ(3)], QQ) == \
           DUP([ZZ(1),ZZ(2),ZZ(3)], ZZ)
    assert DUP([ZZ(1),ZZ(2),ZZ(3)], ZZ) == \
           DUP([QQ(1),QQ(2),QQ(3)], QQ)

    assert DUP([ZZ(1),ZZ(2),ZZ(4)], ZZ) != \
           DUP([ZZ(1),ZZ(2),ZZ(3)], ZZ)

    assert DUP([QQ(1),QQ(2),QQ(4)], QQ) != \
           DUP([ZZ(1),ZZ(2),ZZ(3)], ZZ)
Esempio n. 4
0
def test_DUP___init__():
    f = DUP([0,0,1,2,3], ZZ)

    assert f.rep == [1,2,3]
    assert f.dom == ZZ

    f = DUP({2: QQ(1), 0: QQ(1)}, QQ)

    assert f.rep == [QQ(1),QQ(0),QQ(1)]
    assert f.dom == QQ

    f = DUP(1, QQ)

    assert f.rep == [QQ(1)]
    assert f.dom == QQ
Esempio n. 5
0
def test_polys():
    x = Symbol("x")
    f = Poly(x, x)
    g = lambda x: x
    ZZ = ZZ_python()
    QQ = QQ_sympy()

    for c in (Poly, Poly(x, x)):
        check(c)

    for c in (GFP, GFP([ZZ(1), ZZ(2), ZZ(3)], ZZ(7), ZZ)):
        check(c)
    for c in (DUP, DUP([ZZ(1), ZZ(2), ZZ(3)], ZZ(7), ZZ)):
        check(c)
    for c in (DMP, DMP([ZZ(1), ZZ(2), ZZ(3)], 0, ZZ)):
        check(c)
    for c in (DMF, DMF(([ZZ(1), ZZ(2)], [ZZ(1), ZZ(3)], ZZ))):
        check(c)
    for c in (ANP, ANP([QQ(1), QQ(2)], [QQ(1), QQ(2), QQ(3)], QQ)):
        check(c)

    for c in (ZZ_python, ZZ_python()):
        check(c)
    for c in (ZZ_sympy, ZZ_sympy()):
        check(c)
    for c in (QQ_sympy, QQ_sympy()):
        check(c)

    for c in (PolynomialRing, PolynomialRing(ZZ, 'x', 'y')):
        check(c)
    for c in (FractionField, FractionField(ZZ, 'x', 'y')):
        check(c)

    for c in (ExpressionDomain, ExpressionDomain()):
        check(c)

    try:
        from sympy.polys.algebratools import QQ_python

        for c in (QQ_python, QQ_python()):
            check(c)
    except ImportError:
        pass

    try:
        from sympy.polys.algebratools import QQ_python

        for c in (ZZ_gmpy, ZZ_gmpy()):
            check(c)
        for c in (QQ_gmpy, QQ_gmpy()):
            check(c)
    except ImportError:
        pass

    for c in (RootOf, RootOf(f,
                             0), RootsOf, RootsOf(x,
                                                  x), RootSum, RootSum(g, f)):
        check(c)
Esempio n. 6
0
def test_DMP_properties():
    assert DMP([[]], ZZ).is_zero == True
    assert DMP([[1]], ZZ).is_zero == False

    assert DMP([[1]], ZZ).is_one == True
    assert DMP([[2]], ZZ).is_one == False

    assert DUP([[1]], ZZ).is_ground == True
    assert DUP([[1],[2],[1]], ZZ).is_ground == False

    assert DMP([[1],[2,0],[1,0]], ZZ).is_sqf == True
    assert DMP([[1],[2,0],[1,0,0]], ZZ).is_sqf == False

    assert DMP([[1,2],[3]], ZZ).is_monic == True
    assert DMP([[2,2],[3]], ZZ).is_monic == False

    assert DMP([[1,2],[3]], ZZ).is_primitive == True
    assert DMP([[2,4],[6]], ZZ).is_primitive == False
Esempio n. 7
0
def test_DUP_arithmetics():
    f = DUP([1,1,1], ZZ)

    assert f.add_term(2, 1) == DUP([1,3,1], ZZ)
    assert f.sub_term(2, 1) == DUP([1,-1,1], ZZ)
    assert f.mul_term(2, 1) == DUP([2,2,2,0], ZZ)

    raises(TypeError, "f.add_term(2, 'x')")
    raises(TypeError, "f.sub_term(2, 'x')")
    raises(TypeError, "f.mul_term(2, 'x')")

    g = DUP([3,3,3], ZZ)

    assert f.mul_ground(3) == g
    assert g.exquo_ground(3) == f

    raises(ExactQuotientFailed, "f.quo_ground(4)")

    f = DUP([1,-2,3,-4], ZZ)
    g = DUP([1,2,3,4], ZZ)
    h = DUP([-1,2,-3,4], ZZ)

    assert f.abs() == g
    assert abs(f) == g

    assert f.neg() == h
    assert -f == h

    h = DUP([2,0,6,0], ZZ)

    assert f.add(g) == h
    assert f + g == h
    assert g + f == h

    h = DUP([1,-2,3,1], ZZ)

    assert f + 5 == h
    assert 5 + f == h

    h = DUP([-4,0,-8], ZZ)

    assert f.sub(g) == h
    assert f - g ==  h
    assert g - f == -h

    h = DUP([1,-2,3,-9], ZZ)

    assert f - 5 ==  h
    assert 5 - f == -h

    g = DUP([2], ZZ)
    h = DUP([2,-4,6,-8], ZZ)

    assert f.mul(g) == h
    assert f * g == h
    assert g * f == h
    assert f * 2 == h
    assert 2 * f == h

    h = DUP([4], ZZ)

    assert g.sqr() == h
    assert g.pow(2) == h
    assert g**2 == h

    raises(TypeError, "f.pow('x')")

    f = DUP([3,1,1,5], ZZ)
    g = DUP([5,-3,1], ZZ)

    q = DUP([15, 14], ZZ)
    r = DUP([52, 111], ZZ)

    assert f.pdiv(g) == (q, r)
    assert f.pexquo(g) == q
    assert f.prem(g) == r

    raises(ExactQuotientFailed, 'f.pquo(g)')

    q, r = DUP([], ZZ), f

    assert f.div(g) == (q, r)
    assert f.exquo(g) == q
    assert f.rem(g) == r

    raises(ExactQuotientFailed, 'f.quo(g)')
Esempio n. 8
0
def test_DUP_functionality():
    f = DUP([1,2,3,4], ZZ)
    g = DUP([3,4,3], ZZ)

    assert f.degree() == 3

    assert f.LC() == ZZ(1)
    assert f.TC() == ZZ(4)
    assert f.nth(1) == ZZ(3)

    raises(TypeError, "f.nth('x')")

    assert f.max_norm() == ZZ(4)
    assert f.l1_norm() == ZZ(10)

    assert f.diff(1) == g
    assert f.eval(1) == ZZ(10)

    raises(TypeError, "f.diff('x')")

    f = DUP([QQ(2),QQ(0)], QQ)
    g = DUP([QQ(1),QQ(0),QQ(-16)], QQ)

    s = DUP([QQ(1,32),QQ(0)], QQ)
    t = DUP([QQ(-1,16)], QQ)
    h = DUP([QQ(1)], QQ)

    assert f.half_gcdex(g) == (s, h)
    assert f.gcdex(g) == (s, t, h)

    assert f.invert(g) == s

    f = DUP([1,-2,1], ZZ)
    g = DUP([1,0,-1], ZZ)

    a = DUP([2,-2], ZZ)

    assert f.subresultants(g) == [f, g, a]
    assert f.resultant(g) == 0

    f = DUP([1,3,9,-13], ZZ)

    assert f.discriminant() == -11664

    f = DUP([1,2,1], ZZ)
    g = DUP([1,1], ZZ)
    h = DUP([1], ZZ)

    assert f.cofactors(g) == (g, g, h)
    assert f.gcd(g) == g
    assert f.lcm(g) == f

    assert f.sqf_part() == g
    assert f.sqf_list() == (ZZ(1), [(g, 2)])

    f = DUP([1,2,3,4,5,6], ZZ)

    assert f.trunc(3) == DUP([1,-1,0,1,-1,0], ZZ)

    f = DUP([QQ(3),QQ(-6)], QQ)
    g = DUP([QQ(1),QQ(-2)], QQ)

    assert f.monic() == g

    f = DUP([3,-6], ZZ)
    g = DUP([1,-2], ZZ)

    assert f.content() == ZZ(3)
    assert f.primitive() == (ZZ(3), g)

    f = DUP([1,0,20,0,150,0,500,0,625,-2,0,-10,9], ZZ)
    g = DUP([1,0,0,-2,9], ZZ)
    h = DUP([1,0,5,0], ZZ)

    assert g.compose(h) == f
    assert f.decompose() == [g, h]

    f = DUP([QQ(1),QQ(0)], QQ)

    assert f.sturm() == [f, DUP([QQ(1)], QQ)]
Esempio n. 9
0
def test_DUP_arithmetics():
    f = DUP([1,1,1], ZZ)

    assert f.add_term(2, 1) == DUP([1,3,1], ZZ)
    assert f.sub_term(2, 1) == DUP([1,-1,1], ZZ)
    assert f.mul_term(2, 1) == DUP([2,2,2,0], ZZ)

    raises(TypeError, "f.add_term(2, 'x')")
    raises(TypeError, "f.sub_term(2, 'x')")
    raises(TypeError, "f.mul_term(2, 'x')")

    g = DUP([3,3,3], ZZ)

    assert f.mul_ground(3) == g
    assert g.exquo_ground(3) == f

    raises(ExactQuotientFailed, "f.quo_ground(4)")

    f = DUP([1,-2,3,-4], ZZ)
    g = DUP([1,2,3,4], ZZ)
    h = DUP([-1,2,-3,4], ZZ)

    assert f.abs() == g
    assert abs(f) == g

    assert f.neg() == h
    assert -f == h

    h = DUP([2,0,6,0], ZZ)

    assert f.add(g) == h
    assert f + g == h
    assert g + f == h

    h = DUP([1,-2,3,1], ZZ)

    assert f + 5 == h
    assert 5 + f == h

    h = DUP([-4,0,-8], ZZ)

    assert f.sub(g) == h
    assert f - g ==  h
    assert g - f == -h

    h = DUP([1,-2,3,-9], ZZ)

    assert f - 5 ==  h
    assert 5 - f == -h

    g = DUP([2], ZZ)
    h = DUP([2,-4,6,-8], ZZ)

    assert f.mul(g) == h
    assert f * g == h
    assert g * f == h
    assert f * 2 == h
    assert 2 * f == h

    h = DUP([4], ZZ)

    assert g.sqr() == h
    assert g.pow(2) == h
    assert g**2 == h

    raises(TypeError, "f.pow('x')")

    f = DUP([3,1,1,5], ZZ)
    g = DUP([5,-3,1], ZZ)

    q = DUP([15, 14], ZZ)
    r = DUP([52, 111], ZZ)

    assert f.pdiv(g) == (q, r)
    assert f.pexquo(g) == q
    assert f.prem(g) == r

    raises(ExactQuotientFailed, 'f.pquo(g)')

    q, r = DUP([], ZZ), f

    assert f.div(g) == (q, r)
    assert f.exquo(g) == q
    assert f.rem(g) == r

    raises(ExactQuotientFailed, 'f.quo(g)')
Esempio n. 10
0
def test_DUP_properties():
    assert DUP([QQ(0)], QQ).is_zero == True
    assert DUP([QQ(1)], QQ).is_zero == False

    assert DUP([QQ(1)], QQ).is_one == True
    assert DUP([QQ(2)], QQ).is_one == False

    assert DUP([1], ZZ).is_ground == True
    assert DUP([1,2,1], ZZ).is_ground == False

    assert DUP([1,2,2], ZZ).is_sqf == True
    assert DUP([1,2,1], ZZ).is_sqf == False

    assert DUP([1,2,3], ZZ).is_monic == True
    assert DUP([2,2,3], ZZ).is_monic == False

    assert DUP([1,2,3], ZZ).is_primitive == True
    assert DUP([2,4,6], ZZ).is_primitive == False
Esempio n. 11
0
def test_DUP___bool__():
    assert bool(DUP([], ZZ)) == False
    assert bool(DUP([1], ZZ)) == True
Esempio n. 12
0
def test_DUP_functionality():
    f = DUP([1,2,3,4], ZZ)
    g = DUP([3,4,3], ZZ)

    assert f.degree() == 3

    assert f.LC() == ZZ(1)
    assert f.TC() == ZZ(4)
    assert f.nth(1) == ZZ(3)

    raises(TypeError, "f.nth('x')")

    assert f.max_norm() == ZZ(4)
    assert f.l1_norm() == ZZ(10)

    assert f.diff(1) == g
    assert f.eval(1) == ZZ(10)

    raises(TypeError, "f.diff('x')")

    f = DUP([QQ(2),QQ(0)], QQ)
    g = DUP([QQ(1),QQ(0),QQ(-16)], QQ)

    s = DUP([QQ(1,32),QQ(0)], QQ)
    t = DUP([QQ(-1,16)], QQ)
    h = DUP([QQ(1)], QQ)

    assert f.half_gcdex(g) == (s, h)
    assert f.gcdex(g) == (s, t, h)

    assert f.invert(g) == s

    f = DUP([1,-2,1], ZZ)
    g = DUP([1,0,-1], ZZ)

    a = DUP([2,-2], ZZ)

    assert f.subresultants(g) == [f, g, a]
    assert f.resultant(g) == 0

    f = DUP([1,3,9,-13], ZZ)

    assert f.discriminant() == -11664

    f = DUP([1,2,1], ZZ)
    g = DUP([1,1], ZZ)
    h = DUP([1], ZZ)

    assert f.cofactors(g) == (g, g, h)
    assert f.gcd(g) == g
    assert f.lcm(g) == f

    assert f.sqf_part() == g
    assert f.sqf_list() == (ZZ(1), [(g, 2)])

    f = DUP([1,2,3,4,5,6], ZZ)

    assert f.trunc(3) == DUP([1,-1,0,1,-1,0], ZZ)

    f = DUP([QQ(3),QQ(-6)], QQ)
    g = DUP([QQ(1),QQ(-2)], QQ)

    assert f.monic() == g

    f = DUP([3,-6], ZZ)
    g = DUP([1,-2], ZZ)

    assert f.content() == ZZ(3)
    assert f.primitive() == (ZZ(3), g)

    f = DUP([1,0,20,0,150,0,500,0,625,-2,0,-10,9], ZZ)
    g = DUP([1,0,0,-2,9], ZZ)
    h = DUP([1,0,5,0], ZZ)

    assert g.compose(h) == f
    assert f.decompose() == [g, h]

    f = DUP([QQ(1),QQ(0)], QQ)

    assert f.sturm() == [f, DUP([QQ(1)], QQ)]