Skip to content

Commit

Permalink
Add SymbolicArray.simplify method
Browse files Browse the repository at this point in the history
  • Loading branch information
matt-graham committed Aug 16, 2023
1 parent d26de58 commit 80ff623
Showing 1 changed file with 29 additions and 1 deletion.
30 changes: 29 additions & 1 deletion src/symnum/array.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,13 @@

SympyArray: TypeAlias = Union[sympy.NDimArray, sympy.MatrixBase]
ScalarLike: TypeAlias = Union[
sympy.Expr, sympy.logic.boolalg.Boolean, bool, int, float, complex, np.number,
sympy.Expr,
sympy.logic.boolalg.Boolean,
bool,
int,
float,
complex,
np.number,
]
ShapeLike: TypeAlias = Union[int, tuple[int, ...], sympy.Tuple]

Expand Down Expand Up @@ -504,6 +510,28 @@ def subs(self, *args) -> SymbolicArray:
dtype=self._dtype,
)

def simplify(self, **kwargs) -> SymbolicArray:
"""Simplify symbolic expressions in array.
Args:
**kwargs: Any keyword arguments to :py:meth:`sympy.NDimArray.simplify`.
Returns:
Array with simplified symbolic expressions.
"""
if self.shape == ():
return SymbolicArray(
self[()].simplify(**kwargs),
shape=(),
dtype=self._dtype,
)
else:
return SymbolicArray(
self._base_array.simplify(**kwargs),
shape=self.shape,
dtype=self._dtype,
)

@property
def free_symbols(self) -> set[sympy.Symbol]:
"""Set of all free symbols in symbolic expressions defined in array."""
Expand Down

0 comments on commit 80ff623

Please sign in to comment.