Skip to content

Commit d52edc3

Browse files
matrix: improve repr and add pow for some types of matrix
1 parent e7474d9 commit d52edc3

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

src/matrix.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include <initializer_list> // for initializer_list
2626
#include <iosfwd> // for string
2727
#include <memory> // for allocator, make_unique, unique_ptr
28+
#include <regex> // for regex_replace
2829
#include <string> // for char_traits, operator==, operator+
2930
#include <unordered_map> // for operator==, unordered_map
3031
#include <utility> // for make_pair, pair
@@ -58,6 +59,10 @@ namespace libsemigroups {
5859
std::string result = detail::to_string(x);
5960
std::replace(result.begin(), result.end(), '{', '[');
6061
std::replace(result.begin(), result.end(), '}', ']');
62+
result = std::regex_replace(
63+
result, std::regex(R"(-2147483648\b)"), "NEGATIVE_INFINITY");
64+
result = std::regex_replace(
65+
result, std::regex(R"(\b2147483646\b)"), "POSITIVE_INFINITY");
6166
return result;
6267
}
6368

@@ -165,6 +170,7 @@ namespace libsemigroups {
165170
str.c_str(),
166171
matrix_repr(x).c_str());
167172
})
173+
.def("__pow__", &matrix_helpers::pow<T>)
168174
.def_static("make_identity",
169175
py::overload_cast<size_t>(&T::identity))
170176
.def(py::init<size_t, size_t>());

0 commit comments

Comments
 (0)