Example #1
0
    def invert(f, g):
        """Invert `f` modulo `g`, if possible. """
        lev, dom, per, F, G = f.unify(g)

        if not lev:
            return per(dup_invert(F, G, dom))
        else:
            raise ValueError('univariate polynomial expected')
Example #2
0
    def invert(f, g):
        """Invert `f` modulo `g`, if possible. """
        lev, dom, per, F, G = f.unify(g)

        if not lev:
            return per(dup_invert(F, G, dom))
        else:
            raise ValueError('univariate polynomial expected')
Example #3
0
    def pow(f, n):
        """Raise `f` to a non-negative power `n`. """
        if isinstance(n, int):
            if n < 0:
                F, n = dup_invert(f.rep, f.mod, f.dom), -n
            else:
                F = f.rep

            return f.per(dup_rem(dup_pow(F, n, f.dom), f.mod, f.dom))
        else:
            raise TypeError("`int` expected, got %s" % type(n))
Example #4
0
    def pow(f, n):
        """Raise `f` to a non-negative power `n`. """
        if isinstance(n, int):
            if n < 0:
                F, n = dup_invert(f.rep, f.mod, f.dom), -n
            else:
                F = f.rep

            return f.per(dup_rem(dup_pow(F, n, f.dom), f.mod, f.dom))
        else:
            raise TypeError("`int` expected, got %s" % type(n))
Example #5
0
def test_dup_invert():
    assert dup_invert([QQ(2), QQ(0)], [QQ(1), QQ(0), QQ(-16)],
                      QQ) == [QQ(1, 32), QQ(0)]
Example #6
0
 def quo(f, g):
     dom, per, F, G, mod = f.unify(g)
     return per(dup_rem(dup_mul(F, dup_invert(G, mod, dom), dom), mod, dom))
Example #7
0
 def div(f, g):
     dom, per, F, G, mod = f.unify(g)
     return (per(dup_rem(dup_mul(F, dup_invert(G, mod, dom), dom), mod, dom)), self.zero(mod, dom))
Example #8
0
def test_dup_invert():
    assert dup_invert([QQ(2),QQ(0)], [QQ(1),QQ(0),QQ(-16)], QQ) == [QQ(1,32),QQ(0)]
Example #9
0
 def quo(f, g):
     dom, per, F, G, mod = f.unify(g)
     return per(dup_rem(dup_mul(F, dup_invert(G, mod, dom), dom), mod, dom))
Example #10
0
 def div(f, g):
     dom, per, F, G, mod = f.unify(g)
     return (per(dup_rem(dup_mul(F, dup_invert(G, mod, dom), dom), mod, dom)), self.zero(mod, dom))