1#ifndef _GLUCAT_GENERATION_H
2#define _GLUCAT_GENERATION_H
36#include <boost/numeric/ublas/fwd.hpp>
45 namespace ublas = boost::numeric::ublas;
51 template<
class Matrix_T >
53 private std::map< signature_t, std::vector<Matrix_T> >
Table of generators for specific signatures.
auto gen_vector(const index_t p, const index_t q) -> const std::vector< Matrix_T > &
Construct a vector of generators for a specific signature.
void gen_from_pm4_qp4(const std::vector< Matrix_T > &old, const signature_t sig)
Construct generators for p,q given generators for p-4,q+4.
generator_table()=default
static auto generator() -> generator_table< Matrix_T > &
Single instance of generator table.
void gen_from_qp1_pm1(const std::vector< Matrix_T > &old, const signature_t sig)
Construct generators for p,q given generators for q+1,p-1.
auto operator()(const index_t p, const index_t q) -> const Matrix_T *
Pointer to generators for a specific signature.
friend class friend_for_private_destructor
auto operator=(const generator_table &) -> generator_table &=delete
void gen_from_pp4_qm4(const std::vector< Matrix_T > &old, const signature_t sig)
Construct generators for p,q given generators for p+4,q-4.
~generator_table()=default
generator_table(const generator_table &)=delete
void gen_from_pm1_qm1(const std::vector< Matrix_T > &old, const signature_t sig)
Construct generators for p,q given generators for p-1,q-1.
static const std::array< index_t, 8 > offset_to_super
Offsets between the current signature and that of the real superalgebra.
std::pair< index_t, index_t > signature_t
A signature is a pair of indices, p, q, with p == frame.max(), q == -frame.min()
int index_t
Size of index_t should be enough to represent LO, HI.