Feat(Compute): Compute MOstr and MOstrPower
This commit is contained in:
parent
051d79cb9b
commit
a32fd7cbc6
@ -67,7 +67,7 @@ def compute_capacities(node):
|
|||||||
|
|
||||||
:example:
|
:example:
|
||||||
>>> compute_capacities("+")
|
>>> compute_capacities("+")
|
||||||
[['+', 'MOnumber', 'MOstr', 'MOFraction', 'MOstrPower', 'MOMonomial'], ['MOnumber', True, False, True, False, False], ['MOstr', False, False, False, False, False], ['MOFraction', True, False, True, False, False], ['MOstrPower', False, False, False, False, False], ['MOMonomial', False, False, False, False, False]]
|
[['+', 'MOnumber', 'MOstr', 'MOFraction', 'MOstrPower', 'MOMonomial'], ['MOnumber', True, False, True, False, False], ['MOstr', False, True, False, False, False], ['MOFraction', True, False, True, False, False], ['MOstrPower', False, False, False, True, False], ['MOMonomial', False, False, False, False, False]]
|
||||||
|
|
||||||
"""
|
"""
|
||||||
op = OPERATIONS[node]
|
op = OPERATIONS[node]
|
||||||
|
@ -13,8 +13,9 @@ Adding MO
|
|||||||
from functools import wraps
|
from functools import wraps
|
||||||
from multipledispatch import Dispatcher
|
from multipledispatch import Dispatcher
|
||||||
from ..tree import Tree
|
from ..tree import Tree
|
||||||
from ..MO.mo import MO, MOnumber
|
from ..MO.mo import MO, MOnumber, MOstr
|
||||||
from ..MO.fraction import MOFraction
|
from ..MO.fraction import MOFraction
|
||||||
|
from ..MO.monomial import MOstrPower, MOMonomial
|
||||||
from .exceptions import AddError
|
from .exceptions import AddError
|
||||||
from .arithmetic import lcm
|
from .arithmetic import lcm
|
||||||
from .filters import special_case
|
from .filters import special_case
|
||||||
@ -203,6 +204,38 @@ def mofraction_mofraction(left, right):
|
|||||||
|
|
||||||
return Tree("+", left_frac, right_frac)
|
return Tree("+", left_frac, right_frac)
|
||||||
|
|
||||||
|
@add.register(MOstr, MOstr)
|
||||||
|
@special_case(add_filter)
|
||||||
|
def mostr_mostr(left, right):
|
||||||
|
""" Add 2 MOstr
|
||||||
|
|
||||||
|
:example:
|
||||||
|
>>> a = MOstr("x")
|
||||||
|
>>> b = MOstr("x")
|
||||||
|
>>> add(a, b)
|
||||||
|
<MOMonomial 2x>
|
||||||
|
"""
|
||||||
|
if left != right:
|
||||||
|
raise NotImplementedError("Can't add 2 MOstr with not same letter")
|
||||||
|
return MOMonomial(2, left)
|
||||||
|
|
||||||
|
@add.register(MOstrPower, MOstrPower)
|
||||||
|
@special_case(add_filter)
|
||||||
|
def mostrpower_mostrpower(left, right):
|
||||||
|
""" Add 2 MOstrPower
|
||||||
|
|
||||||
|
:example:
|
||||||
|
>>> a = MOstrPower("x", 2)
|
||||||
|
>>> b = MOstrPower("x", 2)
|
||||||
|
>>> add(a, b)
|
||||||
|
<MOMonomial 2x^2>
|
||||||
|
"""
|
||||||
|
if left.variable != right.variable:
|
||||||
|
raise NotImplementedError("Can't add 2 MOstrPower with not same letter")
|
||||||
|
if left.power != right.power:
|
||||||
|
raise NotImplementedError("Can't add 2 MOstrPower with not same power")
|
||||||
|
return MOMonomial(2, left.variable, left.power)
|
||||||
|
|
||||||
# -----------------------------
|
# -----------------------------
|
||||||
# Reglages pour 'vim'
|
# Reglages pour 'vim'
|
||||||
# vim:set autoindent expandtab tabstop=4 shiftwidth=4:
|
# vim:set autoindent expandtab tabstop=4 shiftwidth=4:
|
||||||
|
Loading…
Reference in New Issue
Block a user