Exemplo n.º 1
0
"""Tests for Euclidean algorithms, GCDs, LCMs and polynomial remainder sequences. """

from sympy.polys.rings import ring
from sympy.polys.domains import ZZ, QQ, RR

from sympy.polys.specialpolys import (f_polys, dmp_fateman_poly_F_1,
                                      dmp_fateman_poly_F_2,
                                      dmp_fateman_poly_F_3)

f_0, f_1, f_2, f_3, f_4, f_5, f_6 = f_polys()


def test_dup_gcdex():
    R, x = ring("x", QQ)

    f = x**4 - 2 * x**3 - 6 * x**2 + 12 * x + 15
    g = x**3 + x**2 - 4 * x - 4

    s = -QQ(1, 5) * x + QQ(3, 5)
    t = QQ(1, 5) * x**2 - QQ(6, 5) * x + 2
    h = x + 1

    assert R.dup_half_gcdex(f, g) == (s, h)
    assert R.dup_gcdex(f, g) == (s, t, h)

    f = x**4 + 4 * x**3 - x + 1
    g = x**3 - x + 1

    s, t, h = R.dup_gcdex(f, g)
    S, T, H = R.dup_gcdex(g, f)
Exemplo n.º 2
0
"""Tools for polynomial factorization routines in characteristic zero. """

from sympy.polys.rings import ring, xring
from sympy.polys.domains import FF, ZZ, QQ, RR, EX

from sympy.polys import polyconfig as config
from sympy.polys.polyerrors import DomainError
from sympy.polys.polyclasses import ANP
from sympy.polys.specialpolys import f_polys, w_polys

from sympy import nextprime, sin, sqrt, I
from sympy.utilities.pytest import raises

from sympy.core.compatibility import xrange

f_0, f_1, f_2, f_3, f_4, f_5, f_6 = f_polys()
w_1, w_2 = w_polys()

def test_dup_trial_division():
    R, x = ring("x", ZZ)
    assert R.dup_trial_division(x**5 + 8*x**4 + 25*x**3 + 38*x**2 + 28*x + 8, (x + 1, x + 2)) == [(x + 1, 2), (x + 2, 3)]


def test_dmp_trial_division():
    R, x, y = ring("x,y", ZZ)
    assert R.dmp_trial_division(x**5 + 8*x**4 + 25*x**3 + 38*x**2 + 28*x + 8, (x + 1, x + 2)) == [(x + 1, 2), (x + 2, 3)]


def test_dup_zz_mignotte_bound():
    R, x = ring("x", ZZ)
    assert R.dup_zz_mignotte_bound(2*x**2 + 3*x + 4) == 32
Exemplo n.º 3
0
    NotReversible,
    DomainError,
)

from sympy.polys.specialpolys import f_polys

from sympy.polys.domains import FF, ZZ, QQ, EX
from sympy.polys.rings import ring

from sympy import S, I, sin

from sympy.abc import x

from sympy.testing.pytest import raises

f_0, f_1, f_2, f_3, f_4, f_5, f_6 = [f.to_dense() for f in f_polys()]


def test_dup_integrate():
    assert dup_integrate([], 1, QQ) == []
    assert dup_integrate([], 2, QQ) == []

    assert dup_integrate([QQ(1)], 1, QQ) == [QQ(1), QQ(0)]
    assert dup_integrate([QQ(1)], 2, QQ) == [QQ(1, 2), QQ(0), QQ(0)]

    assert dup_integrate([QQ(1), QQ(2), QQ(3)], 0, QQ) == \
        [QQ(1), QQ(2), QQ(3)]
    assert dup_integrate([QQ(1), QQ(2), QQ(3)], 1, QQ) == \
        [QQ(1, 3), QQ(1), QQ(3), QQ(0)]
    assert dup_integrate([QQ(1), QQ(2), QQ(3)], 2, QQ) == \
        [QQ(1, 12), QQ(1, 3), QQ(3, 2), QQ(0), QQ(0)]
Exemplo n.º 4
0
    DomainError,
)

from sympy.polys.specialpolys import f_polys

from sympy.polys.domains import FF, ZZ, QQ, EX
from sympy.polys.rings import ring

from sympy import S, I, sin
from sympy.core.compatibility import long

from sympy.abc import x

from sympy.utilities.pytest import raises

f_0, f_1, f_2, f_3, f_4, f_5, f_6 = [ f.to_dense() for f in f_polys() ]

def test_dup_integrate():
    assert dup_integrate([], 1, QQ) == []
    assert dup_integrate([], 2, QQ) == []

    assert dup_integrate([QQ(1)], 1, QQ) == [QQ(1), QQ(0)]
    assert dup_integrate([QQ(1)], 2, QQ) == [QQ(1, 2), QQ(0), QQ(0)]

    assert dup_integrate([QQ(1), QQ(2), QQ(3)], 0, QQ) == \
        [QQ(1), QQ(2), QQ(3)]
    assert dup_integrate([QQ(1), QQ(2), QQ(3)], 1, QQ) == \
        [QQ(1, 3), QQ(1), QQ(3), QQ(0)]
    assert dup_integrate([QQ(1), QQ(2), QQ(3)], 2, QQ) == \
        [QQ(1, 12), QQ(1, 3), QQ(3, 2), QQ(0), QQ(0)]
    assert dup_integrate([QQ(1), QQ(2), QQ(3)], 3, QQ) == \