From 1be3b35e1be6e662044bc6970bb2a12ffaefe383 Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Mon, 19 Nov 2018 12:17:03 +0100 Subject: [PATCH] Feat(Core): Add compute add for 2 mostr and 2 mostrpower --- mapytex/calculus/core/typing/add.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/mapytex/calculus/core/typing/add.py b/mapytex/calculus/core/typing/add.py index a639515..d76b5a8 100644 --- a/mapytex/calculus/core/typing/add.py +++ b/mapytex/calculus/core/typing/add.py @@ -156,6 +156,19 @@ def mopolynomial_moscalar(left, right): new_coefs = {**new_coefs, **left.coefficients} return MOpolynomial(left.variable, new_coefs) +@add.register(MOstr, MOstr) +def mostr_mostr(left, right): + """ add 2 mostr + + >>> a = MOstr('x') + >>> b = MOstr('x') + >>> add(a, b) + + """ + if left != right: + raise NotImplementedError("Can't add 2 Mostr without same letter") + return MOMonomial(2, left) + @add.register(MOstr, MOstrPower) def mostr_mostrpower(left, right): """ add a scalar with a letter to create a MOpolynomial @@ -188,6 +201,22 @@ def mostrpower_mostr(left, right): raise return MOpolynomial(right , {1: 1, left.power: 1}) +@add.register(MOstrPower, MOstrPower) +def mostrpower_mostrpower(left, right): + """ add 2 mostrpower + + >>> a = MOstrPower('x', 3) + >>> b = MOstrPower('x', 3) + >>> add(a, b) + + """ + if left.variable != right.variable: + raise NotImplementedError("Can't add 2 Mostrpower without same letter") + if left.power != right.power: + raise NotImplementedError("Can't add 2 Mostrpower with compute if not same degree") + + return MOMonomial(2, left.variable, left.power) + @add.register(MOstr, MOpolynomial) def mostr_mopolynomial(left, right): """ add a str with a MOpolynomial to create a MOpolynomial