Mackey  V3.3
A C++ library for computing RO(G) graded homology
ChangeBasis.hpp
Go to the documentation of this file.
1 #pragma once
2 #include <vector>
3 #include <map>
4 #include <algorithm>
5 #include <array>
6 
9 namespace mackey {
10 
17  template<typename pScalar, typename T>
18  std::vector<pScalar> find_permutation(const std::vector<T>& A, const std::vector<T>& B);
19 
20 
23  template<typename pScalar>
24  struct ChangeBasis {
25  public:
26  std::vector<pScalar> left_to_canon;
27  std::vector<pScalar> right_to_canon;
28  std::vector<pScalar> canon_to_left;
29  std::vector<pScalar> canon_to_right;
30 
37  template<typename rank_t>
38  ChangeBasis(const rank_t& A, const rank_t& B, bool set_conv_to_canon, bool set_canon_to_conv);
39  };
40 }
41 #include "impl/ChangeBasis.ipp"
Everything in this library is under this namespace.
Definition: Box.hpp:9
std::vector< pScalar > find_permutation(const std::vector< T > &A, const std::vector< T > &B)
If vector B is permutation of vector A i.e. B= A * sigma then returns permutation sigma.
Change of basis matrices needed for the equivariant tensor product.
Definition: ChangeBasis.hpp:24
std::vector< pScalar > canon_to_left
The permutation from the canonical basis to the left convenient basis.
Definition: ChangeBasis.hpp:28
ChangeBasis(const rank_t &A, const rank_t &B, bool set_conv_to_canon, bool set_canon_to_conv)
Constructs the change of basis matrices given two ranks.
std::vector< pScalar > left_to_canon
The permutation from the left convenient basis to the canonical basis.
Definition: ChangeBasis.hpp:26
std::vector< pScalar > right_to_canon
The permutation from the right convenient basis to the canonical basis.
Definition: ChangeBasis.hpp:27
std::vector< pScalar > canon_to_right
The permutation from the canonical basis to the right convenient basis.
Definition: ChangeBasis.hpp:29