30 template <>
struct py_converter<triqs::operators::many_body_operator_real> {
32 using conv_t = py_converter<triqs::operators::many_body_operator>;
34 static constexpr const char *tp_name =
"Operator";
36 static PyObject *
c2py(c_t
const &x) {
return conv_t::c2py(x); }
38 static bool is_convertible(PyObject *ob,
bool raise_exception) {
39 bool ok = conv_t::is_convertible(ob,
false );
42 auto op = conv_t::py2c(ob);
43 for (
auto const &c_m : op) ok = ok && c_m.coef.is_real();
46 if (raise_exception) { PyErr_SetString(PyExc_TypeError,
"Cannot convert to many_body_operator_real"); }
50 static c_t py2c(PyObject *ob) {
return c_t{conv_t::py2c(ob)}; }
56 template <>
struct py_converter<triqs::operators::many_body_operator_complex> {
58 using conv_t = py_converter<triqs::operators::many_body_operator>;
60 static constexpr const char *tp_name =
"Operator";
62 static PyObject *
c2py(c_t
const &x) {
return conv_t::c2py(x); }
64 static bool is_convertible(PyObject *ob,
bool raise_exception) {
65 bool ok = conv_t::is_convertible(ob,
false);
67 if (raise_exception) { PyErr_SetString(PyExc_TypeError,
"Cannot convert to many_body_operator_complex"); }
71 static c_t py2c(PyObject *ob) {
return c_t{conv_t::py2c(ob)}; }
Provides generic many-body operators.