diff options
Diffstat (limited to 'polymatrix/expression/init')
17 files changed, 156 insertions, 62 deletions
diff --git a/polymatrix/expression/init/initaccumulateexpr.py b/polymatrix/expression/init/initaccumulateexpr.py deleted file mode 100644 index 30297bf..0000000 --- a/polymatrix/expression/init/initaccumulateexpr.py +++ /dev/null @@ -1,25 +0,0 @@ -import dataclass_abc -import typing - -from polymatrix.expression.mixins.expressionbasemixin import ExpressionBaseMixin -from polymatrix.expression.accumulateexpr import AccumulateExpr - - -def init_accumulate_expr( - underlying: ExpressionBaseMixin, - acc_func: typing.Callable, - initial: ExpressionBaseMixin = None, -): - - @dataclass_abc.dataclass_abc(frozen=True) - class AccumulateExprImpl(AccumulateExpr): - underlying: ExpressionBaseMixin - initial: ExpressionBaseMixin - - def acc_func(self, acc, v): - return acc_func(acc, v) - - return AccumulateExprImpl( - underlying=underlying, - initial=initial, - ) diff --git a/polymatrix/expression/init/initcombinationsexpr.py b/polymatrix/expression/init/initcombinationsexpr.py index 7a1df2f..80bf4d0 100644 --- a/polymatrix/expression/init/initcombinationsexpr.py +++ b/polymatrix/expression/init/initcombinationsexpr.py @@ -3,10 +3,10 @@ from polymatrix.expression.impl.combinationsexprimpl import CombinationsExprImpl def init_combinations_expr( - underlying: ExpressionBaseMixin, + monomials: ExpressionBaseMixin, number: int, ): return CombinationsExprImpl( - underlying=underlying, + monomials=monomials, number=number, ) diff --git a/polymatrix/expression/init/initdivergenceexpr.py b/polymatrix/expression/init/initdivergenceexpr.py new file mode 100644 index 0000000..d1aa02c --- /dev/null +++ b/polymatrix/expression/init/initdivergenceexpr.py @@ -0,0 +1,13 @@ +from polymatrix.expression.mixins.expressionbasemixin import ExpressionBaseMixin +from typing import Union +from polymatrix.expression.impl.divergenceexprimpl import DivergenceExprImpl + + +def init_divergence_expr( + underlying: ExpressionBaseMixin, + variables: tuple, +): + return DivergenceExprImpl( + underlying=underlying, + variables=variables, +) diff --git a/polymatrix/expression/init/initkktexpr.py b/polymatrix/expression/init/initkktexpr.py deleted file mode 100644 index f634d97..0000000 --- a/polymatrix/expression/init/initkktexpr.py +++ /dev/null @@ -1,17 +0,0 @@ -from polymatrix.expression.mixins.expressionmixin import ExpressionMixin -from polymatrix.expression.mixins.expressionbasemixin import ExpressionBaseMixin -from polymatrix.expression.impl.kktexprimpl import KKTExprImpl - - -def init_kkt_expr( - cost: ExpressionMixin, - variables: ExpressionBaseMixin, - equality: ExpressionMixin = None, - inequality: ExpressionMixin = None, -): - return KKTExprImpl( - cost=cost, - equality=equality, - inequality=inequality, - variables=variables, -) diff --git a/polymatrix/expression/init/initlinearin2expr.py b/polymatrix/expression/init/initlinearin2expr.py deleted file mode 100644 index 7225510..0000000 --- a/polymatrix/expression/init/initlinearin2expr.py +++ /dev/null @@ -1,12 +0,0 @@ -from polymatrix.expression.mixins.expressionbasemixin import ExpressionBaseMixin -from polymatrix.expression.impl.linearin2exprimpl import LinearIn2ExprImpl - - -def init_linear_in2_expr( - underlying: ExpressionBaseMixin, - expression: ExpressionBaseMixin, -): - return LinearIn2ExprImpl( - underlying=underlying, - expression=expression, -) diff --git a/polymatrix/expression/init/initlinearinexpr.py b/polymatrix/expression/init/initlinearinexpr.py index f7f76e4..5cd172c 100644 --- a/polymatrix/expression/init/initlinearinexpr.py +++ b/polymatrix/expression/init/initlinearinexpr.py @@ -4,9 +4,13 @@ from polymatrix.expression.impl.linearinexprimpl import LinearInExprImpl def init_linear_in_expr( underlying: ExpressionBaseMixin, - variables: tuple, + monomials: ExpressionBaseMixin, + variables: ExpressionBaseMixin, + ignore_unmatched: bool = None, ): return LinearInExprImpl( underlying=underlying, + monomials=monomials, variables=variables, + ignore_unmatched = ignore_unmatched, ) diff --git a/polymatrix/expression/init/initlinearinmonomialsinexpr.py b/polymatrix/expression/init/initlinearinmonomialsinexpr.py new file mode 100644 index 0000000..77208a7 --- /dev/null +++ b/polymatrix/expression/init/initlinearinmonomialsinexpr.py @@ -0,0 +1,12 @@ +from polymatrix.expression.mixins.expressionbasemixin import ExpressionBaseMixin +from polymatrix.expression.impl.linearinmonomialsinexprimpl import LinearInMonomialsInExprImpl + + +def init_linear_in_monomials_in( + underlying: ExpressionBaseMixin, + variables: tuple, +): + return LinearInMonomialsInExprImpl( + underlying=underlying, + variables=variables, +) diff --git a/polymatrix/expression/init/initlinearmonomialsexpr.py b/polymatrix/expression/init/initlinearmonomialsexpr.py new file mode 100644 index 0000000..f116562 --- /dev/null +++ b/polymatrix/expression/init/initlinearmonomialsexpr.py @@ -0,0 +1,12 @@ +from polymatrix.expression.mixins.expressionbasemixin import ExpressionBaseMixin +from polymatrix.expression.impl.linearmonomialsexprimpl import LinearMonomialsExprImpl + + +def init_linear_monomials_expr( + underlying: ExpressionBaseMixin, + variables: tuple, +): + return LinearMonomialsExprImpl( + underlying=underlying, + variables=variables, +) diff --git a/polymatrix/expression/init/initparametrizeexpr.py b/polymatrix/expression/init/initparametrizeexpr.py new file mode 100644 index 0000000..c5b77a3 --- /dev/null +++ b/polymatrix/expression/init/initparametrizeexpr.py @@ -0,0 +1,15 @@ +from polymatrix.expression.mixins.expressionbasemixin import ExpressionBaseMixin +from polymatrix.expression.impl.parametrizeexprimpl import ParametrizeExprImpl + + +def init_parametrize_expr( + underlying: ExpressionBaseMixin, + name: str = None, +): + if name is None: + name = 'undefined' + + return ParametrizeExprImpl( + underlying=underlying, + name=name, +) diff --git a/polymatrix/expression/init/initparametrizetermsexpr.py b/polymatrix/expression/init/initparametrizetermsexpr.py index b932825..6e2a446 100644 --- a/polymatrix/expression/init/initparametrizetermsexpr.py +++ b/polymatrix/expression/init/initparametrizetermsexpr.py @@ -3,12 +3,12 @@ from polymatrix.expression.impl.parametrizetermsexprimpl import ParametrizeTerms def init_parametrize_terms_expr( - name: str, + # name: str, underlying: ExpressionBaseMixin, - variables: tuple, + # variables: tuple, ): return ParametrizeTermsExprImpl( - name=name, + # name=name, underlying=underlying, - variables=variables, + # variables=variables, ) diff --git a/polymatrix/expression/init/initquadraticinexpr.py b/polymatrix/expression/init/initquadraticinexpr.py index 1e73745..5aa40a5 100644 --- a/polymatrix/expression/init/initquadraticinexpr.py +++ b/polymatrix/expression/init/initquadraticinexpr.py @@ -4,9 +4,11 @@ from polymatrix.expression.impl.quadraticinexprimpl import QuadraticInExprImpl def init_quadratic_in_expr( underlying: ExpressionBaseMixin, + monomials: ExpressionBaseMixin, variables: tuple, ): return QuadraticInExprImpl( underlying=underlying, + monomials=monomials, variables=variables, ) diff --git a/polymatrix/expression/init/initsetelementatexpr.py b/polymatrix/expression/init/initsetelementatexpr.py new file mode 100644 index 0000000..86df5aa --- /dev/null +++ b/polymatrix/expression/init/initsetelementatexpr.py @@ -0,0 +1,14 @@ +from polymatrix.expression.mixins.expressionbasemixin import ExpressionBaseMixin +from polymatrix.expression.impl.setelementatexprimpl import SetElementAtExprImpl + + +def init_set_element_at_expr( + underlying: ExpressionBaseMixin, + index: tuple, + value: ExpressionBaseMixin, +): + return SetElementAtExprImpl( + underlying=underlying, + index=index, + value=value, +) diff --git a/polymatrix/expression/init/initsosmonomialsexpr.py b/polymatrix/expression/init/initsosmonomialsexpr.py new file mode 100644 index 0000000..0f5d034 --- /dev/null +++ b/polymatrix/expression/init/initsosmonomialsexpr.py @@ -0,0 +1,12 @@ +from polymatrix.expression.mixins.expressionbasemixin import ExpressionBaseMixin +from polymatrix.expression.impl.sosmonomialsexprimpl import SOSMonomialsExprImpl + + +def init_sos_monomials_expr( + underlying: ExpressionBaseMixin, + variables: tuple, +): + return SOSMonomialsExprImpl( + underlying=underlying, + variables=variables, +) diff --git a/polymatrix/expression/init/initsubstituteexpr.py b/polymatrix/expression/init/initsubstituteexpr.py new file mode 100644 index 0000000..63e1123 --- /dev/null +++ b/polymatrix/expression/init/initsubstituteexpr.py @@ -0,0 +1,27 @@ +import numpy as np + +from polymatrix.expression.mixins.expressionbasemixin import ExpressionBaseMixin +from polymatrix.expression.impl.substituteexprimpl import SubstituteExprImpl + + +def init_substitute_expr( + underlying: ExpressionBaseMixin, + variables: tuple, + substitutions: tuple = None, +): + if substitutions is None: + assert isinstance(variables, tuple) + + variables, substitutions = tuple(zip(*variables)) + + elif isinstance(substitutions, np.ndarray): + substitutions = tuple(substitutions.reshape(-1)) + + elif not isinstance(substitutions, tuple): + substitutions = (substitutions,) + + return SubstituteExprImpl( + underlying=underlying, + variables=variables, + substitutions=substitutions, +) diff --git a/polymatrix/expression/init/initsubtractmonomialsexpr.py b/polymatrix/expression/init/initsubtractmonomialsexpr.py new file mode 100644 index 0000000..131401b --- /dev/null +++ b/polymatrix/expression/init/initsubtractmonomialsexpr.py @@ -0,0 +1,12 @@ +from polymatrix.expression.mixins.expressionbasemixin import ExpressionBaseMixin +from polymatrix.expression.impl.subtractmonomialsexprimpl import SubtractMonomialsExprImpl + + +def init_subtract_monomials_expr( + underlying: ExpressionBaseMixin, + monomials: ExpressionBaseMixin, +): + return SubtractMonomialsExprImpl( + underlying=underlying, + monomials=monomials, +) diff --git a/polymatrix/expression/init/inittruncateexpr.py b/polymatrix/expression/init/inittruncateexpr.py new file mode 100644 index 0000000..818981e --- /dev/null +++ b/polymatrix/expression/init/inittruncateexpr.py @@ -0,0 +1,14 @@ +from polymatrix.expression.mixins.expressionbasemixin import ExpressionBaseMixin +from polymatrix.expression.impl.truncateexprimpl import TruncateExprImpl + + +def init_truncate_expr( + underlying: ExpressionBaseMixin, + variables: ExpressionBaseMixin, + degree: int, +): + return TruncateExprImpl( + underlying=underlying, + variables=variables, + degree=degree, +) diff --git a/polymatrix/expression/init/initvstackexpr.py b/polymatrix/expression/init/initvstackexpr.py index 1d7834e..70764ef 100644 --- a/polymatrix/expression/init/initvstackexpr.py +++ b/polymatrix/expression/init/initvstackexpr.py @@ -1,9 +1,20 @@ from polymatrix.expression.impl.vstackexprimpl import VStackExprImpl +from polymatrix.expression.init.initfromarrayexpr import init_from_array_expr +from polymatrix.expression.mixins.expressionbasemixin import ExpressionBaseMixin def init_v_stack_expr( underlying: tuple, ): + + def gen_underlying(): + + for e in underlying: + if isinstance(e, ExpressionBaseMixin): + yield e + else: + yield init_from_array_expr(e) + return VStackExprImpl( - underlying=underlying, + underlying=tuple(gen_underlying()), ) |