3 #ifndef __INT_SYM_INDICES_H__ 4 #define __INT_SYM_INDICES_H__ 8 template<
typename RAIterator>
9 int relativeSign(RAIterator s1b, RAIterator s1e, RAIterator s2b, RAIterator s2e)
12 assert(sz == (
int)(s2e-s2b));
15 std::vector<bool> seen(sz);
17 for (i = 0;i < sz;i++) seen[i] =
false;
19 for (i = 0;i < sz;i++)
21 if (seen[i])
continue;
25 for (k = 0;k < sz && (!(*(s1b+k) == *(s2b+j)) || seen[k]);k++);
40 return relativeSign(s1.begin(), s1.end(), s2.begin(), s2.end());
45 int order_B, T& idx_B,
const int* sym_B);
49 int order_B, T& idx_B,
const int* sym_B,
50 int order_C, T& idx_C,
const int* sym_C);
54 int order_B,
const T& idx_B,
const int* sym_B,
55 int order_C,
const T& idx_C,
const int* sym_C);
59 int order_B,
const T& idx_B,
const int* sym_B);
int align_symmetric_indices(int order_A, T &idx_A, const int *sym_A, int order_B, T &idx_B, const int *sym_B)
int relativeSign(RAIterator s1b, RAIterator s1e, RAIterator s2b, RAIterator s2e)
int overcounting_factor(int order_A, const T &idx_A, const int *sym_A, int order_B, const T &idx_B, const int *sym_B, int order_C, const T &idx_C, const int *sym_C)