def test_Domain_field(): assert EX.field == EX assert ZZ.field == QQ assert QQ.field == QQ assert RR.field == RR assert ALG.field == ALG assert ZZ.inject(x).field == ZZ.frac_field(x) assert QQ.inject(x).field == QQ.frac_field(x) assert ZZ.inject(x, y).field == ZZ.frac_field(x, y) assert QQ.inject(x, y).field == QQ.frac_field(x, y)
def test_sturm(): R, x = ring('x', QQ) assert R(5).sturm() == [1] assert x.sturm() == [x, 1] f = x**3 - 2 * x**2 + 3 * x - 5 assert f.sturm() == [ f, 3 * x**2 - 4 * x + 3, -10 * x / 9 + QQ(13, 3), -QQ(3303, 100) ] f = x**3 - 2 * x**2 + x - 3 assert f.sturm() == [ f, 3 * x**2 - 4 * x + 1, 2 * x / 9 + QQ(25, 9), QQ(-2079, 4) ] pytest.raises(DomainError, lambda: x.set_domain(ZZ).sturm()) F = ZZ.frac_field('pi') pi = F.pi R, x = ring('x', F) f = (1024 / (15625 * pi**8) * x**5 - 4096 / (625 * pi**8) * x**4 + 32 / (15625 * pi**4) * x**3 - 128 / (625 * pi**4) * x**2 + x / 62500 - F( (1, 625))) assert f.sturm() == [ x**3 - 100 * x**2 + pi**4 / 64 * x - 25 * pi**4 / 16, 3 * x**2 - 200 * x + pi**4 / 64, (F( (20000, 9)) - pi**4 / 96) * x + 25 * pi**4 / 18, (-3686400000000 * pi**4 - 11520000 * pi**8 - 9 * pi**12) / (26214400000000 - 245760000 * pi**4 + 576 * pi**8) ]