Skip to content

Commit 63ff312

Browse files
hpcombi: add support for FroidurePin
1 parent db833fa commit 63ff312

4 files changed

Lines changed: 64 additions & 34 deletions

File tree

src/froidure-pin.cpp

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include <libsemigroups/bipart.hpp>
2323
#include <libsemigroups/bmat8.hpp>
2424
#include <libsemigroups/froidure-pin.hpp>
25+
#include <libsemigroups/hpcombi.hpp>
2526
#include <libsemigroups/knuth-bendix.hpp>
2627
#include <libsemigroups/matrix.hpp>
2728
#include <libsemigroups/pbr.hpp>
@@ -1268,20 +1269,17 @@ This function returns the element of *fp* obtained by evaluating *w*.
12681269
});
12691270
}
12701271
} // bind_froidure_pin_stateful
1271-
} // namespace
1272+
} // namespace
12721273

12731274
void init_froidure_pin(py::module& m) {
1274-
// TODO(0) uncomment bind_froidure_pin<HPCombiTransf<16>>(m, "Transf16");
12751275
bind_froidure_pin_stateless<Transf<0, uint8_t>>(m, "Transf1");
12761276
bind_froidure_pin_stateless<Transf<0, uint16_t>>(m, "Transf2");
12771277
bind_froidure_pin_stateless<Transf<0, uint32_t>>(m, "Transf4");
1278-
// TODO(0) uncomment bind_froidure_pin_stateless<LeastPPerm<16>>(m,
1279-
// "PPerm16");
1278+
12801279
bind_froidure_pin_stateless<PPerm<0, uint8_t>>(m, "PPerm1");
12811280
bind_froidure_pin_stateless<PPerm<0, uint16_t>>(m, "PPerm2");
12821281
bind_froidure_pin_stateless<PPerm<0, uint32_t>>(m, "PPerm4");
1283-
// TODO(0) uncomment bind_froidure_pin_stateless<LeastPerm<16>>(m,
1284-
// "Perm16");
1282+
12851283
bind_froidure_pin_stateless<Perm<0, uint8_t>>(m, "Perm1");
12861284
bind_froidure_pin_stateless<Perm<0, uint16_t>>(m, "Perm2");
12871285
bind_froidure_pin_stateless<Perm<0, uint32_t>>(m, "Perm4");
@@ -1322,5 +1320,12 @@ This function returns the element of *fp* obtained by evaluating *w*.
13221320
m, "KEWord"); // codespell:ignore keword
13231321

13241322
bind_froidure_pin_stateful<detail::TCE>(m, "TCE");
1323+
1324+
#ifdef LIBSEMIGROUPS_HPCOMBI_ENABLED
1325+
bind_froidure_pin_stateless<HPCombi::PPerm16>(m, "HPCombiPPerm16");
1326+
bind_froidure_pin_stateless<HPCombi::PTransf16>(m, "HPCombiPTransf16");
1327+
bind_froidure_pin_stateless<HPCombi::Perm16>(m, "HPCombiPerm16");
1328+
bind_froidure_pin_stateless<HPCombi::Transf16>(m, "HPCombiTransf16");
1329+
#endif
13251330
}
13261331
} // namespace libsemigroups

src/hpcombi.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
// libsemigroups headers
2222
#include <libsemigroups/hpcombi.hpp>
2323

24-
// #ifdef LIBSEMIGROUPS_HPCOMBI_ENABLED
24+
#ifdef LIBSEMIGROUPS_HPCOMBI_ENABLED
2525

2626
// pybind11....
2727
#include <pybind11/operators.h>
@@ -2381,4 +2381,4 @@ namespace libsemigroups {
23812381
HPCombi::init_hpcombi_pperm16(m);
23822382
}
23832383
} // namespace libsemigroups
2384-
// #endif
2384+
#endif

src/libsemigroups_pybind11/froidure_pin.py

Lines changed: 50 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from typing_extensions import Self as _Self
1919

2020
from _libsemigroups_pybind11 import (
21+
LIBSEMIGROUPS_HPCOMBI_ENABLED as _LIBSEMIGROUPS_HPCOMBI_ENABLED,
2122
PBR as _PBR,
2223
Bipartition as _Bipartition,
2324
BMat as _BMat,
@@ -94,6 +95,19 @@
9495
)
9596
from .detail.decorators import copydoc as _copydoc
9697

98+
if _LIBSEMIGROUPS_HPCOMBI_ENABLED:
99+
from _libsemigroups_pybind11 import (
100+
FroidurePinHPCombiPerm16 as _FroidurePinHPCombiPerm16,
101+
FroidurePinHPCombiPPerm16 as _FroidurePinHPCombiPPerm16,
102+
FroidurePinHPCombiPTransf16 as _FroidurePinHPCombiPTransf16,
103+
FroidurePinHPCombiTransf16 as _FroidurePinHPCombiTransf16,
104+
hpcombi_Perm16 as _HPCombiPerm16,
105+
hpcombi_PPerm16 as _HPCombiPPerm16,
106+
hpcombi_PTransf16 as _HPCombiPTransf16,
107+
hpcombi_Transf16 as _HPCombiTransf16,
108+
)
109+
110+
97111
########################################################################
98112
# The FroidurePin python class
99113
########################################################################
@@ -104,32 +118,42 @@ class FroidurePin(_CxxWrapper):
104118

105119
__doc__ = _FroidurePinPBR.__doc__
106120

107-
_py_template_params_to_cxx_type = {
108-
(_BMat,): _FroidurePinBMat,
109-
(_BMat8,): _FroidurePinBMat8,
110-
(_Bipartition,): _FroidurePinBipartition,
111-
(_IntMat,): _FroidurePinIntMat,
112-
(_MaxPlusMat,): _FroidurePinMaxPlusMat,
113-
(_MaxPlusTruncMat,): _FroidurePinMaxPlusTruncMat,
114-
(_MinPlusMat,): _FroidurePinMinPlusMat,
115-
(_MinPlusTruncMat,): _FroidurePinMinPlusTruncMat,
116-
(_NTPMat,): _FroidurePinNTPMat,
117-
(_PBR,): _FroidurePinPBR,
118-
(_PPerm1,): _FroidurePinPPerm1,
119-
(_PPerm2,): _FroidurePinPPerm2,
120-
(_PPerm4,): _FroidurePinPPerm4,
121-
(_Perm1,): _FroidurePinPerm1,
122-
(_Perm2,): _FroidurePinPerm2,
123-
(_Perm4,): _FroidurePinPerm4,
124-
(_ProjMaxPlusMat,): _FroidurePinProjMaxPlusMat,
125-
(_Transf1,): _FroidurePinTransf1,
126-
(_Transf2,): _FroidurePinTransf2,
127-
(_Transf4,): _FroidurePinTransf4,
128-
(_KBEStringTrie,): _FroidurePinKBEStringRewriteTrie,
129-
(_KBEStringFromLeft,): _FroidurePinKBEStringRewriteFromLeft,
130-
(_KBEWordTrie,): _FroidurePinKBEWordRewriteTrie,
131-
(_KBEWordFromLeft,): _FroidurePinKBEWordRewriteFromLeft,
132-
}
121+
_py_template_params_to_cxx_type = (
122+
{
123+
(_BMat,): _FroidurePinBMat,
124+
(_BMat8,): _FroidurePinBMat8,
125+
(_Bipartition,): _FroidurePinBipartition,
126+
(_IntMat,): _FroidurePinIntMat,
127+
(_MaxPlusMat,): _FroidurePinMaxPlusMat,
128+
(_MaxPlusTruncMat,): _FroidurePinMaxPlusTruncMat,
129+
(_MinPlusMat,): _FroidurePinMinPlusMat,
130+
(_MinPlusTruncMat,): _FroidurePinMinPlusTruncMat,
131+
(_NTPMat,): _FroidurePinNTPMat,
132+
(_PBR,): _FroidurePinPBR,
133+
(_PPerm1,): _FroidurePinPPerm1,
134+
(_PPerm2,): _FroidurePinPPerm2,
135+
(_PPerm4,): _FroidurePinPPerm4,
136+
(_Perm1,): _FroidurePinPerm1,
137+
(_Perm2,): _FroidurePinPerm2,
138+
(_Perm4,): _FroidurePinPerm4,
139+
(_ProjMaxPlusMat,): _FroidurePinProjMaxPlusMat,
140+
(_Transf1,): _FroidurePinTransf1,
141+
(_Transf2,): _FroidurePinTransf2,
142+
(_Transf4,): _FroidurePinTransf4,
143+
(_KBEStringTrie,): _FroidurePinKBEStringRewriteTrie,
144+
(_KBEStringFromLeft,): _FroidurePinKBEStringRewriteFromLeft,
145+
(_KBEWordTrie,): _FroidurePinKBEWordRewriteTrie,
146+
(_KBEWordFromLeft,): _FroidurePinKBEWordRewriteFromLeft,
147+
}
148+
| {
149+
(_HPCombiPTransf16,): _FroidurePinHPCombiPTransf16,
150+
(_HPCombiTransf16,): _FroidurePinHPCombiTransf16,
151+
(_HPCombiPerm16,): _FroidurePinHPCombiPerm16,
152+
(_HPCombiPPerm16,): _FroidurePinHPCombiPPerm16,
153+
}
154+
if _LIBSEMIGROUPS_HPCOMBI_ENABLED
155+
else {}
156+
)
133157

134158
_cxx_type_to_py_template_params = dict(
135159
zip(

src/main.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
#include <pybind11/pybind11.h>
2626

27+
#include <libsemigroups/config.hpp> // for LIBSEMIGROUPS_HPCOMBI_ENABLED
2728
#include <libsemigroups/constants.hpp>
2829

2930
namespace libsemigroups {

0 commit comments

Comments
 (0)