summaryrefslogtreecommitdiffstats
path: root/polymatrix/expression/mixins/determinantexprmixin.py
diff options
context:
space:
mode:
Diffstat (limited to 'polymatrix/expression/mixins/determinantexprmixin.py')
-rw-r--r--polymatrix/expression/mixins/determinantexprmixin.py38
1 files changed, 19 insertions, 19 deletions
diff --git a/polymatrix/expression/mixins/determinantexprmixin.py b/polymatrix/expression/mixins/determinantexprmixin.py
index 7614669..d848bd2 100644
--- a/polymatrix/expression/mixins/determinantexprmixin.py
+++ b/polymatrix/expression/mixins/determinantexprmixin.py
@@ -26,7 +26,7 @@ class DeterminantExprMixin(ExpressionBaseMixin):
self,
state: ExpressionState,
) -> tuple[ExpressionState, PolyMatrix]:
- raise Exception('not implemented')
+ # raise Exception('not implemented')
if self in state.cache:
return state, state.cache[self]
@@ -35,7 +35,7 @@ class DeterminantExprMixin(ExpressionBaseMixin):
assert underlying.shape[0] == underlying.shape[1]
- inequality_terms = {}
+ inequality_data = {}
auxillary_equations = {}
index_start = state.n_param
@@ -43,69 +43,69 @@ class DeterminantExprMixin(ExpressionBaseMixin):
for row in range(underlying.shape[0]):
- current_inequality_terms = collections.defaultdict(float)
+ polynomial = collections.defaultdict(float)
# f in f-v^T@x-r^2
# terms = underlying.get_poly(row, row)
try:
- underlying_terms = underlying.get_poly(row, row)
+ underlying_poly = underlying.get_poly(row, row)
except KeyError:
pass
else:
- for monomial, value in underlying_terms.items():
- current_inequality_terms[monomial] += value
+ for monomial, value in underlying_poly.items():
+ polynomial[monomial] += value
for inner_row in range(row):
# -v^T@x in f-v^T@x-r^2
# terms = underlying.get_poly(row, inner_row)
try:
- underlying_terms = underlying.get_poly(row, inner_row)
+ underlying_poly = underlying.get_poly(row, inner_row)
except KeyError:
pass
else:
- for monomial, value in underlying_terms.items():
+ for monomial, value in underlying_poly.items():
new_monomial = monomial + (index_start + rel_index + inner_row,)
- current_inequality_terms[new_monomial] -= value
+ polynomial[new_monomial] -= value
# auxillary terms
# ---------------
- auxillary_term = collections.defaultdict(float)
+ 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:
- underlying_terms = underlying.get_poly(*key)
+ underlying_poly = underlying.get_poly(*key)
except KeyError:
pass
else:
- for monomial, value in underlying_terms.items():
+ for monomial, value in underlying_poly.items():
new_monomial = monomial + (index_start + rel_index + inner_col,)
- auxillary_term[new_monomial] += value
+ auxillary_polynomial[new_monomial] += value
# -v in P@x-v
try:
- underlying_terms = underlying.get_poly(row, inner_row)
+ underlying_poly = underlying.get_poly(row, inner_row)
except KeyError:
pass
else:
- for monomial, value in underlying_terms.items():
- auxillary_term[monomial] -= value
+ for monomial, value in underlying_poly.items():
+ auxillary_polynomial[monomial] -= value
x_variable = index_start + rel_index + inner_row
assert x_variable not in state.auxillary_equations
- auxillary_equations[x_variable] = dict(auxillary_term)
+ auxillary_equations[x_variable] = dict(auxillary_polynomial)
rel_index += row
- inequality_terms[row, 0] = dict(current_inequality_terms)
+ inequality_data[row, 0] = dict(polynomial)
state = state.register(rel_index)
poly_matrix = init_poly_matrix(
- terms=inequality_terms,
+ data=inequality_data,
shape=(underlying.shape[0], 1),
)