29 #ifndef _CHAINCON_EZ_EML_H_ 30 #define _CHAINCON_EZ_EML_H_ 38 #include "chomp/system/config.h" 55 template <
class SimCellT,
class ProdCellT>
56 inline void EZ_EML (
const SimCellT &s1,
const SimCellT &s2,
62 std::vector<int> alpha (p);
63 std::vector<int> beta (q);
68 bool moreAvailable = s.
get (alpha, beta, sig);
72 for (
int i = 0; i < q; ++ i)
74 SimCellT cell1new (cell1, -1 - beta [i]);
75 cell1. swap (cell1new);
78 for (
int i = 0; i < p; ++ i)
80 SimCellT cell2new (cell2, -1 - alpha [i]);
81 cell2. swap (cell2new);
85 ProdCellT prod (cell1, cell2);
86 if (!prod. degenerate ())
99 template <
class SimCellT,
class ProdCellT,
class CoefT>
100 inline void EZ_EML (
const SimCellT &s1,
const SimCellT &s2,
108 std::vector<int> alpha (p);
109 std::vector<int> beta (q);
114 bool moreAvailable = s.
get (alpha, beta, sig);
118 for (
int i = 0; i < q; ++ i)
120 SimCellT cell1new (cell1, -1 - beta [i]);
121 cell1. swap (cell1new);
124 for (
int i = 0; i < p; ++ i)
126 SimCellT cell2new (cell2, -1 - alpha [i]);
127 cell2. swap (cell2new);
136 ProdCellT prod (cell1, cell2);
137 if (!prod. degenerate ())
157 template <
class SimCellT,
class ProdCellT>
161 for (int_t n = 0; n < s. size (); ++ n)
164 EZ_EML (s. left (n), s. right (n), result);
173 template <
class SimCellT,
class ProdCellT,
class CoefT>
177 for (int_t n = 0; n < s. size (); ++ n)
180 EZ_EML (s. left (n), s. right (n), result);
181 result *= s. coef (n);
189 #endif // _CHAINCON_EZ_EML_H_
An iterator of all the (p,q)-shuffles.
A Cartesian product of simplicial cells of arbitrary type.
A chain with coefficients in an arbitrary ring.
A tensor of chains with coefficients in an arbitrary commutative ring.
Combinatorial tensor of cells.
A combinatorial tensor (for coefficients in Z_2).
void EZ_EML(const SimCellT &s1, const SimCellT &s2, tCombChain< ProdCellT > &t)
Computes the Eilenberg-Mac Lane operator on a tensor product of two simplicial cells.