def test_dup_from_to_dict(): assert dup_from_raw_dict({}, ZZ) == [] assert dup_from_dict({}, ZZ) == [] assert dup_to_raw_dict([]) == {} assert dup_to_dict([]) == {} assert dup_to_raw_dict([], ZZ, zero=True) == {0: ZZ(0)} assert dup_to_dict([], ZZ, zero=True) == {(0,): ZZ(0)} f = [3, 0, 0, 2, 0, 0, 0, 0, 8] g = {8: 3, 5: 2, 0: 8} h = {(8,): 3, (5,): 2, (0,): 8} assert dup_from_raw_dict(g, ZZ) == f assert dup_from_dict(h, ZZ) == f assert dup_to_raw_dict(f) == g assert dup_to_dict(f) == h R, x, y = ring("x,y", ZZ) K = R.to_domain() f = [R(3), R(0), R(2), R(0), R(0), R(8)] g = {5: R(3), 3: R(2), 0: R(8)} h = {(5,): R(3), (3,): R(2), (0,): R(8)} assert dup_from_raw_dict(g, K) == f assert dup_from_dict(h, K) == f assert dup_to_raw_dict(f) == g assert dup_to_dict(f) == h
def test_dmp_deflate(): assert dmp_deflate([], 0, ZZ) == ((1, ), []) assert dmp_deflate([2], 0, ZZ) == ((1, ), [2]) assert dmp_deflate([1, 2, 3], 0, ZZ) == ((1, ), [1, 2, 3]) assert dmp_deflate([1, 0, 2, 0, 3], 0, ZZ) == ((2, ), [1, 2, 3]) assert dmp_deflate([1, 0, 0, 1, 0, 0, 1], 0, ZZ) == ((3, ), [1, 1, 1]) assert dmp_deflate(dup_from_dict({(7,): 1, (1,): 1}, ZZ), 0, ZZ) == \ ((1,), [1, 0, 0, 0, 0, 0, 1, 0]) assert dmp_deflate(dup_from_dict({ (7, ): 1, (0, ): 1 }, ZZ), 0, ZZ) == ((7, ), [1, 1]) assert dmp_deflate(dup_from_dict({(7,): 1, (3,): 1}, ZZ), 0, ZZ) == \ ((1,), [1, 0, 0, 0, 1, 0, 0, 0]) assert dmp_deflate(dup_from_dict({(7,): 1, (4,): 1}, ZZ), 0, ZZ) == \ ((1,), [1, 0, 0, 1, 0, 0, 0, 0]) assert dmp_deflate(dup_from_dict({ (8, ): 1, (4, ): 1 }, ZZ), 0, ZZ) == ((4, ), [1, 1, 0]) assert dmp_deflate(dup_from_dict({(8, ): 1}, ZZ), 0, ZZ) == ((8, ), [1, 0]) assert dmp_deflate(dup_from_dict({(7, ): 1}, ZZ), 0, ZZ) == ((7, ), [1, 0]) assert dmp_deflate(dup_from_dict({(1, ): 1}, ZZ), 0, ZZ) == ((1, ), [1, 0]) assert dmp_deflate([[]], 1, ZZ) == ((1, 1), [[]]) assert dmp_deflate([[2]], 1, ZZ) == ((1, 1), [[2]]) f = [[1, 0, 0], [], [1, 0], [], [1]] assert dmp_deflate(f, 1, ZZ) == ((2, 1), [[1, 0, 0], [1, 0], [1]])
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) == \ [QQ(1, 60), QQ(1, 12), QQ(1, 2), QQ(0), QQ(0), QQ(0)] assert dup_integrate(dup_from_dict({(29,): QQ(17)}, QQ), 3, QQ) == \ dup_from_dict({(32,): QQ(17, 29760)}, QQ) assert dup_integrate(dup_from_dict({(29,): QQ(17), (5,): QQ(1, 2)}, QQ), 3, QQ) == \ dup_from_dict({(32,): QQ(17, 29760), (8,): QQ(1, 672)}, QQ)
def test_dup_from_to_dict(): assert dup_from_dict({}, ZZ) == [] assert dmp_to_dict([], 0) == {} assert dmp_to_dict([], 0, ZZ, zero=True) == {(0, ): ZZ(0)} f = [3, 0, 0, 2, 0, 0, 0, 0, 8] h = {(8, ): 3, (5, ): 2, (0, ): 8} assert dup_from_dict(h, ZZ) == f assert dmp_to_dict(f, 0) == h R, x, y = ring("x,y", ZZ) f = [R(3), R(0), R(2), R(0), R(0), R(8)] h = {(5, ): R(3), (3, ): R(2), (0, ): R(8)} assert dup_from_dict(h, R) == f assert dmp_to_dict(f, 0) == h assert dmp_to_dict([1, 0, 5, 0, 7], 0) == {(0, ): 7, (2, ): 5, (4, ): 1}