Beispiel #1
0
 def is_cyclotomic(f):
     """Returns ``True`` if ``f`` is a cyclotomic polynomial. """
     if not f.lev:
         return dup_cyclotomic_p(f.rep, f.dom)
     else:
         return False
Beispiel #2
0
def test_dup_cyclotomic_p():
    assert dup_cyclotomic_p([1,-1], ZZ) == True
    assert dup_cyclotomic_p([1,1], ZZ) == True
    assert dup_cyclotomic_p([1,1,1], ZZ) == True
    assert dup_cyclotomic_p([1,0,1], ZZ) == True
    assert dup_cyclotomic_p([1,1,1,1,1], ZZ) == True
    assert dup_cyclotomic_p([1,-1,1], ZZ) == True
    assert dup_cyclotomic_p([1,1,1,1,1,1,1], ZZ) == True
    assert dup_cyclotomic_p([1,0,0,0,1], ZZ) == True
    assert dup_cyclotomic_p([1,0,0,1,0,0,1], ZZ) == True

    assert dup_cyclotomic_p([], ZZ) == False
    assert dup_cyclotomic_p([1], ZZ) == False
    assert dup_cyclotomic_p([1, 0], ZZ) == False
    assert dup_cyclotomic_p([1, 2], ZZ) == False
    assert dup_cyclotomic_p([3, 1], ZZ) == False
    assert dup_cyclotomic_p([1, 0, -1], ZZ) == False

    f = [1, 0, 1, 0, 0, 0,-1, 0, 1, 0,-1, 0, 0, 0, 1, 0, 1]
    assert dup_cyclotomic_p(f, ZZ) == False

    g = [1, 0, 1, 0, 0, 0,-1, 0,-1, 0,-1, 0, 0, 0, 1, 0, 1]
    assert dup_cyclotomic_p(g, ZZ) == True

    assert dup_cyclotomic_p([QQ(1),QQ(1),QQ(1)], QQ) == True
    assert dup_cyclotomic_p([QQ(1,2),QQ(1),QQ(1)], QQ) == False

    K = ZZ['y']

    assert dup_cyclotomic_p([K([ZZ(1)]),K([ZZ(1)]),K([ZZ(1)])], K) == False
Beispiel #3
0
 def is_cyclotomic(f):
     """Returns ``True`` if ``f`` is a cyclotomic polynomial. """
     if not f.lev:
         return dup_cyclotomic_p(f.rep, f.dom)
     else:
         return False
Beispiel #4
0
def test_dup_cyclotomic_p():
    assert dup_cyclotomic_p([1, -1], ZZ) == True
    assert dup_cyclotomic_p([1, 1], ZZ) == True
    assert dup_cyclotomic_p([1, 1, 1], ZZ) == True
    assert dup_cyclotomic_p([1, 0, 1], ZZ) == True
    assert dup_cyclotomic_p([1, 1, 1, 1, 1], ZZ) == True
    assert dup_cyclotomic_p([1, -1, 1], ZZ) == True
    assert dup_cyclotomic_p([1, 1, 1, 1, 1, 1, 1], ZZ) == True
    assert dup_cyclotomic_p([1, 0, 0, 0, 1], ZZ) == True
    assert dup_cyclotomic_p([1, 0, 0, 1, 0, 0, 1], ZZ) == True

    assert dup_cyclotomic_p([], ZZ) == False
    assert dup_cyclotomic_p([1], ZZ) == False
    assert dup_cyclotomic_p([1, 0], ZZ) == False
    assert dup_cyclotomic_p([1, 2], ZZ) == False
    assert dup_cyclotomic_p([3, 1], ZZ) == False
    assert dup_cyclotomic_p([1, 0, -1], ZZ) == False

    f = [1, 0, 1, 0, 0, 0, -1, 0, 1, 0, -1, 0, 0, 0, 1, 0, 1]
    assert dup_cyclotomic_p(f, ZZ) == False

    g = [1, 0, 1, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 1, 0, 1]
    assert dup_cyclotomic_p(g, ZZ) == True

    assert dup_cyclotomic_p([QQ(1), QQ(1), QQ(1)], QQ) == True
    assert dup_cyclotomic_p([QQ(1, 2), QQ(1), QQ(1)], QQ) == False

    K = ZZ['y']

    assert dup_cyclotomic_p([K([ZZ(1)]), K([ZZ(1)]), K([ZZ(1)])], K) == False
Beispiel #5
0
def test_dup_cyclotomic_p():
    assert dup_cyclotomic_p(ZZ.map([1, -1]), ZZ) is True
    assert dup_cyclotomic_p(ZZ.map([1, 1]), ZZ) is True
    assert dup_cyclotomic_p(ZZ.map([1, 1, 1]), ZZ) is True
    assert dup_cyclotomic_p(ZZ.map([1, 0, 1]), ZZ) is True
    assert dup_cyclotomic_p(ZZ.map([1, 1, 1, 1, 1]), ZZ) is True
    assert dup_cyclotomic_p(ZZ.map([1, -1, 1]), ZZ) is True
    assert dup_cyclotomic_p(ZZ.map([1, 1, 1, 1, 1, 1, 1]), ZZ) is True
    assert dup_cyclotomic_p(ZZ.map([1, 0, 0, 0, 1]), ZZ) is True
    assert dup_cyclotomic_p(ZZ.map([1, 0, 0, 1, 0, 0, 1]), ZZ) is True

    assert dup_cyclotomic_p(ZZ.map([]), ZZ) is False
    assert dup_cyclotomic_p(ZZ.map([1]), ZZ) is False
    assert dup_cyclotomic_p(ZZ.map([1, 0]), ZZ) is False
    assert dup_cyclotomic_p(ZZ.map([1, 2]), ZZ) is False
    assert dup_cyclotomic_p(ZZ.map([3, 1]), ZZ) is False
    assert dup_cyclotomic_p(ZZ.map([1, 0, -1]), ZZ) is False

    f = ZZ.map([1, 0, 1, 0, 0, 0, -1, 0, 1, 0, -1, 0, 0, 0, 1, 0, 1])
    assert dup_cyclotomic_p(f, ZZ) is False

    g = ZZ.map([1, 0, 1, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 1, 0, 1])
    assert dup_cyclotomic_p(g, ZZ) is True

    assert dup_cyclotomic_p([QQ(1), QQ(1), QQ(1)], QQ) is True
    assert dup_cyclotomic_p([QQ(1, 2), QQ(1), QQ(1)], QQ) is False

    K = ZZ['y']

    assert dup_cyclotomic_p([K([ZZ(1)]), K([ZZ(1)]), K([ZZ(1)])], K) is False