def test_zzX_diff(): assert zzX_diff([]) == [] assert zzX_diff([[]]) == [[]] assert zzX_diff([[[]]]) == [[[]]] assert zzX_diff([[[1], [2]]]) == [[[]]] assert zzX_diff([[[1]], [[]]]) == [[[1]]] assert zzX_diff([[[3]], [[1]], [[]]]) == [[[6]], [[1]]] assert zzX_diff([1, -1, 0, 0, 2]) == [4, -3, 0, 0] f = zzX_from_poly(W_1) assert zzX_diff(f, 2) == zzX_diff(zzX_diff(f)) assert zzX_diff(f, 3) == zzX_diff(zzX_diff(zzX_diff(f))) assert zzX_diff(f, 4) == zzX_diff(zzX_diff(zzX_diff(zzX_diff(f)))) assert zzX_diff_for(f, 2, 2) == zzX_swap(zzX_diff(zzX_swap(f, 1, 2), 2), 1, 2) assert zzX_diff_for(f, 2, 3) == zzX_swap(zzX_diff(zzX_swap(f, 1, 2), 3), 1, 2) assert zzX_diff_for(f, 3, 2) == zzX_swap(zzX_diff(zzX_swap(f, 1, 3), 2), 1, 3) assert zzX_diff_for(f, 3, 3) == zzX_swap(zzX_diff(zzX_swap(f, 1, 3), 3), 1, 3)
def test_zzX_diff(): assert zzX_diff([]) == [] assert zzX_diff([[]]) == [[]] assert zzX_diff([[[]]]) == [[[]]] assert zzX_diff([[[1], [2]]]) == [[[]]] assert zzX_diff([[[1]], [[]]]) == [[[1]]] assert zzX_diff([[[3]], [[1]], [[]]]) == [[[6]], [[1]]] assert zzX_diff([1,-1,0,0,2]) == [4,-3,0,0] f = zzX_from_poly(W_1) assert zzX_diff(f, 2) == zzX_diff(zzX_diff(f)) assert zzX_diff(f, 3) == zzX_diff(zzX_diff(zzX_diff(f))) assert zzX_diff(f, 4) == zzX_diff(zzX_diff(zzX_diff(zzX_diff(f)))) assert zzX_diff_for(f, 2, 2) == zzX_swap(zzX_diff(zzX_swap(f, 1, 2), 2), 1, 2) assert zzX_diff_for(f, 2, 3) == zzX_swap(zzX_diff(zzX_swap(f, 1, 2), 3), 1, 2) assert zzX_diff_for(f, 3, 2) == zzX_swap(zzX_diff(zzX_swap(f, 1, 3), 2), 1, 3) assert zzX_diff_for(f, 3, 3) == zzX_swap(zzX_diff(zzX_swap(f, 1, 3), 3), 1, 3)
def test_zzX_swap(): f = [[1, 0, 0], [], [1, 0], [], [1]] g = [[1, 0, 0, 0, 0], [1, 0, 0], [1]] assert zzX_swap(f) == g assert zzX_swap(g) == f