polynomial-test.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. from __future__ import division
  2. from test import test
  3. from fractions import Fraction
  4. from polynomial import *
  5. from modp import *
  6. Mod5 = IntegersModP(5)
  7. Mod11 = IntegersModP(11)
  8. polysOverQ = polynomialsOver(Fraction).factory
  9. polysMod5 = polynomialsOver(Mod5).factory
  10. polysMod11 = polynomialsOver(Mod11).factory
  11. for p in [polysOverQ, polysMod5, polysMod11]:
  12. # equality
  13. test(True, p([]) == p([]))
  14. test(True, p([1,2]) == p([1,2]))
  15. test(True, p([1,2,0]) == p([1,2,0,0]))
  16. # addition
  17. test(p([1,2,3]), p([1,0,3]) + p([0,2]))
  18. test(p([1,2,3]), p([1,2,3]) + p([]))
  19. test(p([5,2,3]), p([4]) + p([1,2,3]))
  20. test(p([1,2]), p([1,2,3]) + p([0,0,-3]))
  21. # subtraction
  22. test(p([1,-2,3]), p([1,0,3]) - p([0,2]))
  23. test(p([1,2,3]), p([1,2,3]) - p([]))
  24. test(p([-1,-2,-3]), p([]) - p([1,2,3]))
  25. # multiplication
  26. test(p([1,2,1]), p([1,1]) * p([1,1]))
  27. test(p([2,5,5,3]), p([2,3]) * p([1,1,1]))
  28. test(p([0,7,49]), p([0,1,7]) * p([7]))
  29. # division
  30. test(p([1,1,1,1,1,1]), p([-1,0,0,0,0,0,1]) / p([-1,1]))
  31. test(p([-1,1,-1,1,-1,1]), p([1,0,0,0,0,0,1]) / p([1,1]))
  32. test(p([]), p([]) / p([1,1]))
  33. test(p([1,1]), p([1,1]) / p([1]))
  34. test(p([1,1]), p([2,2]) / p([2]))
  35. # modulus
  36. test(p([]), p([1,7,49]) % p([7]))
  37. test(p([-7]), p([-3,10,-5,3]) % p([1,3]))
  38. test(polysOverQ([Fraction(1,7), 1, 7]), polysOverQ([1,7,49]) / polysOverQ([7]))
  39. test(polysMod5([1 / Mod5(7), 1, 7]), polysMod5([1,7,49]) / polysMod5([7]))
  40. test(polysMod11([1 / Mod11(7), 1, 7]), polysMod11([1,7,49]) / polysMod11([7]))