コード例 #1
0
def test_sdm_nf_mora():
    f = sdm_from_dict(
        {
            (1, 2, 1, 1): QQ(1),
            (1, 1, 2, 1): QQ(1),
            (1, 0, 2, 1): QQ(1),
            (1, 0, 0, 3): QQ(1),
            (1, 1, 1, 0): QQ(1)
        }, grlex)
    f1 = sdm_from_dict(
        {
            (1, 1, 1, 0): QQ(1),
            (1, 0, 2, 0): QQ(1),
            (1, 0, 0, 0): QQ(-1)
        }, grlex)
    f2 = sdm_from_dict({(1, 1, 1, 0): QQ(1)}, grlex)
    (id0, id1,
     id2) = [sdm_from_dict({(i, 0, 0, 0): QQ(1)}, grlex) for i in range(3)]

    assert sdm_nf_mora(f, [f1, f2], grlex, QQ, phantom=(id0, [id1, id2])) == \
        ([((1, 0, 2, 1), QQ(1)), ((1, 0, 0, 3), QQ(1)), ((1, 1, 1, 0), QQ(1)),
          ((1, 1, 0, 1), QQ(1))],
         [((1, 1, 0, 1), QQ(-1)), ((0, 0, 0, 0), QQ(1))])
    assert sdm_nf_mora(f, [f2, f1], grlex, QQ, phantom=(id0, [id2, id1])) == \
        ([((1, 0, 2, 1), QQ(1)), ((1, 0, 0, 3), QQ(1)), ((1, 1, 1, 0), QQ(1))],
         [((2, 1, 0, 1), QQ(-1)), ((2, 0, 1, 1), QQ(-1)), ((0, 0, 0, 0), QQ(1))])

    f = sdm_from_vector([x * z, y**2 + y * z - z, y], lex, QQ, gens=[x, y, z])
    f1 = sdm_from_vector([x, y, 1], lex, QQ, gens=[x, y, z])
    f2 = sdm_from_vector([x * y, z, z**2], lex, QQ, gens=[x, y, z])
    assert sdm_nf_mora(f, [f1, f2], lex, QQ) == \
        sdm_nf_mora(f, [f2, f1], lex, QQ) == \
        [((1, 0, 1, 1), QQ(1)), ((1, 0, 0, 1), QQ(-1)), ((0, 1, 1, 0), QQ(-1)),
         ((0, 1, 0, 1), QQ(1))]
コード例 #2
0
def test_sdm_nf_mora():
    f = sdm_from_dict({(1, 2, 1, 1): QQ(1), (1, 1, 2, 1): QQ(1),
                (1, 0, 2, 1): QQ(1), (1, 0, 0, 3): QQ(1), (1, 1, 1, 0): QQ(1)},
        grlex)
    f1 = sdm_from_dict({(1, 1, 1, 0): QQ(1), (1, 0, 2, 0): QQ(1),
                        (1, 0, 0, 0): QQ(-1)}, grlex)
    f2 = sdm_from_dict({(1, 1, 1, 0): QQ(1)}, grlex)
    (id0, id1, id2) = [sdm_from_dict({(i, 0, 0, 0): QQ(1)}, grlex)
                       for i in range(3)]

    assert sdm_nf_mora(f, [f1, f2], grlex, QQ, phantom=(id0, [id1, id2])) == \
        ([((1, 0, 2, 1), QQ(1)), ((1, 0, 0, 3), QQ(1)), ((1, 1, 1, 0), QQ(1)),
          ((1, 1, 0, 1), QQ(1))],
         [((1, 1, 0, 1), QQ(-1)), ((0, 0, 0, 0), QQ(1))])
    assert sdm_nf_mora(f, [f2, f1], grlex, QQ, phantom=(id0, [id2, id1])) == \
        ([((1, 0, 2, 1), QQ(1)), ((1, 0, 0, 3), QQ(1)), ((1, 1, 1, 0), QQ(1))],
         [((2, 1, 0, 1), QQ(-1)), ((2, 0, 1, 1), QQ(-1)), ((0, 0, 0, 0), QQ(1))])

    f = sdm_from_vector([x*z, y**2 + y*z - z, y], lex, QQ, gens=[x, y, z])
    f1 = sdm_from_vector([x, y, 1], lex, QQ, gens=[x, y, z])
    f2 = sdm_from_vector([x*y, z, z**2], lex, QQ, gens=[x, y, z])
    assert sdm_nf_mora(f, [f1, f2], lex, QQ) == \
        sdm_nf_mora(f, [f2, f1], lex, QQ) == \
        [((1, 0, 1, 1), QQ(1)), ((1, 0, 0, 1), QQ(-1)), ((0, 1, 1, 0), QQ(-1)),
         ((0, 1, 0, 1), QQ(1))]
コード例 #3
0
def test_sdm_nf_mora():
    f = sdm_from_dict(
        {
            (1, 2, 1, 1): QQ(1),
            (1, 1, 2, 1): QQ(1),
            (1, 0, 2, 1): QQ(1),
            (1, 0, 0, 3): QQ(1),
            (1, 1, 1, 0): QQ(1)
        }, grlex)
    f1 = sdm_from_dict(
        {
            (1, 1, 1, 0): QQ(1),
            (1, 0, 2, 0): QQ(1),
            (1, 0, 0, 0): QQ(-1)
        }, grlex)
    f2 = sdm_from_dict({(1, 1, 1, 0): QQ(1)}, grlex)

    assert sdm_nf_mora(f, [f1, f2], grlex, QQ) == \
        [((1, 0, 2, 1), QQ(1)), ((1, 0, 0, 3), QQ(1)), ((1, 1, 1, 0), QQ(1)),
         ((1, 1, 0, 1), QQ(1))]
    assert sdm_nf_mora(f, [f2, f1], grlex, QQ) == \
        [((1, 0, 2, 1), QQ(1)), ((1, 0, 0, 3), QQ(1)), ((1, 1, 1, 0), QQ(1))]

    f = sdm_from_vector([x * z, y**2 + y * z - z, y], lex, QQ, gens=[x, y, z])
    f1 = sdm_from_vector([x, y, 1], lex, QQ, gens=[x, y, z])
    f2 = sdm_from_vector([x * y, z, z**2], lex, QQ, gens=[x, y, z])
    assert sdm_nf_mora(f, [f1, f2], lex, QQ) == \
           sdm_nf_mora(f, [f2, f1], lex, QQ) == \
        [((1, 0, 1, 1), QQ(1)), ((1, 0, 0, 1), QQ(-1)), ((0, 1, 1, 0), QQ(-1)),
         ((0, 1, 0, 1), QQ(1))]
コード例 #4
0
ファイル: modules.py プロジェクト: smichr/sympy
    def _contains(self, x):
        from sympy.polys.distributedmodules import sdm_zero, sdm_nf_mora

        return (
            sdm_nf_mora(self.ring._vector_to_sdm(x, self.order), self._groebner(), self.order, self.ring.dom)
            == sdm_zero()
        )
コード例 #5
0
ファイル: modules.py プロジェクト: piyushbansal/sympy
    def reduce_element(self, x):
        """
        Reduce the element ``x`` of our container modulo ``self``.

        This method computes a (non-unique!) normal form of ``x``.
        """
        from sympy.polys.distributedmodules import sdm_nf_mora
        return self.container.convert(self.ring._sdm_to_vector(sdm_nf_mora(
                self.ring._vector_to_sdm(x, self.order), self._groebner(),
                    self.order, self.ring.dom),
                self.rank))
コード例 #6
0
def test_sdm_nf_mora():
    f = sdm_from_dict({(1, 2, 1, 1): QQ(1), (1, 1, 2, 1): QQ(1),
                (1, 0, 2, 1): QQ(1), (1, 0, 0, 3): QQ(1), (1, 1, 1, 0): QQ(1)},
            grlex)
    f1 = sdm_from_dict({(1, 1, 1, 0): QQ(1), (1, 0, 2, 0): QQ(1),
                        (1, 0, 0, 0): QQ(-1)}, grlex)
    f2 = sdm_from_dict({(1, 1, 1, 0): QQ(1)}, grlex)

    assert sdm_nf_mora(f, [f1, f2], grlex, QQ) == \
        [((1, 0, 2, 1), QQ(1)), ((1, 0, 0, 3), QQ(1)), ((1, 1, 1, 0), QQ(1)),
         ((1, 1, 0, 1), QQ(1))]
    assert sdm_nf_mora(f, [f2, f1], grlex, QQ) == \
        [((1, 0, 2, 1), QQ(1)), ((1, 0, 0, 3), QQ(1)), ((1, 1, 1, 0), QQ(1))]

    f = sdm_from_vector([x*z, y**2 + y*z - z, y], lex, QQ, gens=[x, y, z])
    f1 = sdm_from_vector([x, y, 1], lex, QQ, gens=[x, y, z])
    f2 = sdm_from_vector([x*y, z, z**2], lex, QQ, gens=[x, y, z])
    assert sdm_nf_mora(f, [f1, f2], lex, QQ) == \
           sdm_nf_mora(f, [f2, f1], lex, QQ) == \
        [((1, 0, 1, 1), QQ(1)), ((1, 0, 0, 1), QQ(-1)), ((0, 1, 1, 0), QQ(-1)),
         ((0, 1, 0, 1), QQ(1))]
コード例 #7
0
ファイル: modules.py プロジェクト: msgoff/sympy
    def _contains(self, x):
        from sympy.polys.distributedmodules import sdm_zero, sdm_nf_mora

        return (
            sdm_nf_mora(
                self.ring._vector_to_sdm(x, self.order),
                self._groebner(),
                self.order,
                self.ring.dom,
            )
            == sdm_zero()
        )
コード例 #8
0
 def contains(I, f):
     S = [sdm_from_vector([g], igrlex, QQ, gens=gens) for g in I]
     G = sdm_groebner(S, sdm_nf_mora, igrlex, QQ)
     return sdm_nf_mora(sdm_from_vector([f], lex, QQ, gens=gens), G, lex,
                        QQ) == sdm_zero()
コード例 #9
0
 def contains(I, f):
     S = [sdm_from_vector([g], igrlex, QQ, gens=gens) for g in I]
     G = sdm_groebner(S, sdm_nf_mora, igrlex, QQ)
     return sdm_nf_mora(sdm_from_vector([f], lex, QQ, gens=gens),
                        G, lex, QQ) == sdm_zero()