コード例 #1
0
 def assert_jordan_blcs(self, p, mat):
     p = ZZ(p)
     if p == 2:
         blcs = jordan_blocks_2(mat)
     else:
         blcs = jordan_blocks_odd(mat, p)
     q = QuadraticForm(ZZ, ZZ(2) * mat)
     q1 = _blocks_to_quad_form(blcs.blocks, p)
     if p == 2:
         self.assertTrue((q.det() / q1.det()) % 8 == 1)
     else:
         self.assertTrue(kronecker_symbol(q.det() / q1.det(), p) == 1)
     self.assertEqual(
         q.hasse_invariant__OMeara(p), q1.hasse_invariant__OMeara(p))
コード例 #2
0
 def assert_jordan_blocks_method(self, p, mat):
     p = ZZ(p)
     if p == 2:
         blcs = jordan_blocks_2(mat)
     else:
         blcs = jordan_blocks_odd(mat, p)
     q = QuadraticForm(ZZ, 2 * mat)
     if p == 2:
         should1 = (q.Gram_det() / blcs.Gram_det()) % 8
     else:
         should1 = kronecker_symbol((q.Gram_det() / blcs.Gram_det()), p)
     self.assertEqual(should1, 1)
     self.assertEqual(
         q.hasse_invariant__OMeara(p), blcs.hasse_invariant__OMeara())
     self.assertEqual(q.dim(), blcs.dim())
     self.assertEqual(q.content().valuation(p), blcs.content_order())