From 9e4edc09e318574eae9aa4945ed99b4fb9ba8793 Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Fri, 23 Nov 2018 11:59:07 +0100 Subject: [PATCH] Feat(Core): Multiply 2 MOpolynomial together --- mapytex/calculus/core/compute/multiply.py | 58 ++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/mapytex/calculus/core/compute/multiply.py b/mapytex/calculus/core/compute/multiply.py index 8ba3da4..cb1773f 100644 --- a/mapytex/calculus/core/compute/multiply.py +++ b/mapytex/calculus/core/compute/multiply.py @@ -423,7 +423,7 @@ def momonomial_momonomial(left, right): @multiply.register((MOnumber, MOFraction, MOstr, MOstrPower, MOMonomial), \ MOpolynomial) @special_case(multiply_filter) -def moscalar_mopolynomial(left, right): +def lotsmo_mopolynomial(left, right): """ Multiply a scalar and a MOMonomial >>> a = MOnumber(2) @@ -554,6 +554,62 @@ def moscalar_mopolynomial(left, right): coefs = [Tree("*", left, monom) for monom in right.monomials.values()] return Tree.from_list("+", coefs) +@multiply.register(MOpolynomial, MOpolynomial) +@special_case(multiply_filter) +def mopolynomial_mopolynomial(left, right): + """ Multiply 2 MOpolynomial + + >>> a = MOpolynomial('x', [1, 2, 3]) + >>> b = MOpolynomial('x', [4, 5]) + >>> print(multiply(a, b)) + + + > + + | > * + | | > 1 + | | > 4 + | > + + | | > * + | | | > 1 + | | | > * + | | | | > 5 + | | | | > x + | | > * + | | | > * + | | | | > 2 + | | | | > x + | | | > 4 + > + + | > * + | | > * + | | | > 2 + | | | > x + | | > * + | | | > 5 + | | | > x + | > + + | | > * + | | | > * + | | | | > 3 + | | | | > ^ + | | | | | > x + | | | | | > 2 + | | | > 4 + | | > * + | | | > * + | | | | > 3 + | | | | > ^ + | | | | | > x + | | | | | > 2 + | | | > * + | | | | > 5 + | | | | > x + + """ + coefs = [Tree("*", l_monom, r_monom) \ + for l_monom in left.monomials.values() \ + for r_monom in right.monomials.values()] + return Tree.from_list("+", coefs) + # ----------------------------- # Reglages pour 'vim'