diff options
Diffstat (limited to 'polymatrix/expression/mixins/legendreseriesmixin.py')
-rw-r--r-- | polymatrix/expression/mixins/legendreseriesmixin.py | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/polymatrix/expression/mixins/legendreseriesmixin.py b/polymatrix/expression/mixins/legendreseriesmixin.py index aa3de58..bec4c6c 100644 --- a/polymatrix/expression/mixins/legendreseriesmixin.py +++ b/polymatrix/expression/mixins/legendreseriesmixin.py @@ -10,49 +10,45 @@ from polymatrix.expression.mixins.expressionbasemixin import ExpressionBaseMixin class LegendreSeriesMixin(ExpressionBaseMixin): @property @abc.abstractmethod - def underlying(self) -> tuple[ExpressionBaseMixin]: - ... + def underlying(self) -> tuple[ExpressionBaseMixin]: ... @property @abc.abstractmethod - def degrees(self) -> tuple[int, ...] | None: - ... + def degrees(self) -> tuple[int, ...] | None: ... @property @abc.abstractmethod - def stack(self) -> tuple[FrameSummary]: - ... + def stack(self) -> tuple[FrameSummary]: ... # overwrites the abstract method of `ExpressionBaseMixin` def apply( - self, + self, state: ExpressionState, ) -> tuple[ExpressionState, PolyMatrix]: - state, underlying = self.underlying.apply(state) if self.degrees is None: degrees = range(underlying.shape[0]) else: degrees = self.degrees - + poly_matrix_data = {} for degree in degrees: - # for degree in self.degree: + # for degree in self.degree: poly = underlying.get_poly(degree, 0) poly_matrix_data[degree, 0] = dict(poly) if 2 <= degree: poly = underlying.get_poly(degree - 2, 0) - factor = - (degree - 1) / (degree + 1) + factor = -(degree - 1) / (degree + 1) for m, v in poly.items(): if m in poly_matrix_data[degree, 0]: - poly_matrix_data[degree, 0][m] += v*factor + poly_matrix_data[degree, 0][m] += v * factor else: - poly_matrix_data[degree, 0][m] = v*factor + poly_matrix_data[degree, 0][m] = v * factor poly_matrix = init_poly_matrix( data=poly_matrix_data, |