summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Schneeberger <michael.schneeberger@fhnw.ch>2022-08-17 17:30:07 +0200
committerMichael Schneeberger <michael.schneeberger@fhnw.ch>2022-08-17 17:30:07 +0200
commit46557acb1de979fe30654d6debf1f3a9c51494a1 (patch)
tree94d5c97b5b861f2ca1b0d23960abd446f65c42c9
parent'parametrize' method accepts any size matrix, not only vectors (diff)
downloadpolymatrix-46557acb1de979fe30654d6debf1f3a9c51494a1.tar.gz
polymatrix-46557acb1de979fe30654d6debf1f3a9c51494a1.zip
bugfix: 'set_element_at' works with value=0
-rw-r--r--polymatrix/expression/mixins/setelementatexprmixin.py15
1 files changed, 8 insertions, 7 deletions
diff --git a/polymatrix/expression/mixins/setelementatexprmixin.py b/polymatrix/expression/mixins/setelementatexprmixin.py
index 9d552bc..2bb0bfe 100644
--- a/polymatrix/expression/mixins/setelementatexprmixin.py
+++ b/polymatrix/expression/mixins/setelementatexprmixin.py
@@ -39,9 +39,14 @@ class SetElementAtExprMixin(ExpressionBaseMixin):
state: ExpressionState,
) -> tuple[ExpressionState, PolyMatrix]:
state, underlying = self.underlying.apply(state=state)
- state, value = self.value.apply(state=state)
+ state, value_expr = self.value.apply(state=state)
- assert value.shape == (1, 1)
+ assert value_expr.shape == (1, 1)
+
+ try:
+ value = value_expr.get_poly(0, 0)
+ except KeyError:
+ value = 0
@dataclass_abc.dataclass_abc(frozen=True)
class SetElementAtPolyMatrix(PolyMatrixMixin):
@@ -49,10 +54,6 @@ class SetElementAtExprMixin(ExpressionBaseMixin):
shape: tuple[int, int]
index: tuple[int, int]
value: dict
-
- # @property
- # def shape(self) -> tuple[int, int]:
- # return self.shape
def get_poly(self, row: int, col: int) -> dict[tuple[int, ...], float]:
if (row, col) == self.index:
@@ -64,6 +65,6 @@ class SetElementAtExprMixin(ExpressionBaseMixin):
underlying=underlying,
index=self.index,
shape=underlying.shape,
- value=value.get_poly(0, 0)
+ value=value,
)
\ No newline at end of file