diff options
Diffstat (limited to 'polymatrix/expression/mixins/determinantexprmixin.py')
-rw-r--r-- | polymatrix/expression/mixins/determinantexprmixin.py | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/polymatrix/expression/mixins/determinantexprmixin.py b/polymatrix/expression/mixins/determinantexprmixin.py index d848bd2..5694ddd 100644 --- a/polymatrix/expression/mixins/determinantexprmixin.py +++ b/polymatrix/expression/mixins/determinantexprmixin.py @@ -1,4 +1,3 @@ - import abc import collections import dataclasses @@ -13,8 +12,7 @@ from polymatrix.expressionstate.abc import ExpressionState class DeterminantExprMixin(ExpressionBaseMixin): @property @abc.abstractmethod - def underlying(self) -> ExpressionBaseMixin: - ... + def underlying(self) -> ExpressionBaseMixin: ... # # overwrites the abstract method of `ExpressionBaseMixin` # @property @@ -23,7 +21,7 @@ class DeterminantExprMixin(ExpressionBaseMixin): # overwrites the abstract method of `ExpressionBaseMixin` def apply( - self, + self, state: ExpressionState, ) -> tuple[ExpressionState, PolyMatrix]: # raise Exception('not implemented') @@ -42,7 +40,6 @@ class DeterminantExprMixin(ExpressionBaseMixin): rel_index = 0 for row in range(underlying.shape[0]): - polynomial = collections.defaultdict(float) # f in f-v^T@x-r^2 @@ -54,9 +51,8 @@ class DeterminantExprMixin(ExpressionBaseMixin): else: for monomial, value in underlying_poly.items(): polynomial[monomial] += value - - for inner_row in range(row): + for inner_row in range(row): # -v^T@x in f-v^T@x-r^2 # terms = underlying.get_poly(row, inner_row) try: @@ -74,7 +70,6 @@ class DeterminantExprMixin(ExpressionBaseMixin): auxillary_polynomial = collections.defaultdict(float) for inner_col in range(row): - # P@x in P@x-v key = tuple(reversed(sorted((inner_row, inner_col)))) try: @@ -83,9 +78,11 @@ class DeterminantExprMixin(ExpressionBaseMixin): pass else: for monomial, value in underlying_poly.items(): - new_monomial = monomial + (index_start + rel_index + inner_col,) + new_monomial = monomial + ( + index_start + rel_index + inner_col, + ) auxillary_polynomial[new_monomial] += value - + # -v in P@x-v try: underlying_poly = underlying.get_poly(row, inner_row) @@ -110,9 +107,9 @@ class DeterminantExprMixin(ExpressionBaseMixin): ) state = dataclasses.replace( - state, + state, auxillary_equations=state.auxillary_equations | auxillary_equations, cache=state.cache | {self: poly_matrix}, ) - return state, poly_matrix + return state, poly_matrix |