summaryrefslogtreecommitdiffstats
path: root/polymatrix/expression/init
diff options
context:
space:
mode:
Diffstat (limited to 'polymatrix/expression/init')
-rw-r--r--polymatrix/expression/init/initaccumulateexpr.py25
-rw-r--r--polymatrix/expression/init/initcombinationsexpr.py4
-rw-r--r--polymatrix/expression/init/initdivergenceexpr.py13
-rw-r--r--polymatrix/expression/init/initkktexpr.py17
-rw-r--r--polymatrix/expression/init/initlinearin2expr.py12
-rw-r--r--polymatrix/expression/init/initlinearinexpr.py6
-rw-r--r--polymatrix/expression/init/initlinearinmonomialsinexpr.py12
-rw-r--r--polymatrix/expression/init/initlinearmonomialsexpr.py12
-rw-r--r--polymatrix/expression/init/initparametrizeexpr.py15
-rw-r--r--polymatrix/expression/init/initparametrizetermsexpr.py8
-rw-r--r--polymatrix/expression/init/initquadraticinexpr.py2
-rw-r--r--polymatrix/expression/init/initsetelementatexpr.py14
-rw-r--r--polymatrix/expression/init/initsosmonomialsexpr.py12
-rw-r--r--polymatrix/expression/init/initsubstituteexpr.py27
-rw-r--r--polymatrix/expression/init/initsubtractmonomialsexpr.py12
-rw-r--r--polymatrix/expression/init/inittruncateexpr.py14
-rw-r--r--polymatrix/expression/init/initvstackexpr.py13
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()),
)