young tableaux and young operator

This commit is contained in:
2021-06-08 17:41:49 +02:00
parent 2a6e79520e
commit d3215e46fd
3 changed files with 204 additions and 20 deletions

25
t.cc
View File

@@ -71,13 +71,30 @@ for(int i=0; i<4; ++i)
static int unitary_n;
static PERM_RANK_TYPE space_dim;
void yyprintme(const NRPerm<int>&p, const int parity, const PERM_RANK_TYPE nterms)
{
cout<< parity<<"/"<<nterms<<" "<<p;
}
void yprintme(const YoungTableaux<int>&y)
{
cout <<y;
if(!y.is_standard()) laerror("internal error in young");
y.young_operator(yyprintme);
}
void pprintme(const Partition<int> &p)
{
CompressedPartition pc(p);
cout<<'['<<pc<<"] ";
CompressedPartition<int> pc(p);
cout<<'['<<pc<<"]\n";
YoungTableaux<int> y(p);
PERM_RANK_TYPE dim=y.generate_all_standard(yprintme);
Partition<int> q=p.adjoint();
PERM_RANK_TYPE snd=p.Sn_irrep_dim();
cout<<"IR dim "<<snd<<endl;
if(dim!=snd) laerror("inconsistency in standard tableaux generation");
PERM_RANK_TYPE und=p.Un_irrep_dim(unitary_n);
cout<<"U("<<unitary_n<<") ir dim "<<und<<endl;
space_dim += und*snd;
@@ -2129,7 +2146,7 @@ int tot=p.generate_all_lex(printme);
cout <<"generated "<<tot<<endl;
}
if(0)
if(1)
{
int n;
cin >>n >>unitary_n;
@@ -2141,7 +2158,7 @@ if(tot!=partitions(n)) laerror("internal error in partition generation or enumer
if(space_dim!=longpow(unitary_n,n)) {cout<<space_dim<<" "<<ipow(unitary_n,n)<<endl;laerror("integer overflow or internal error in space dimensions");}
}
if(1)
if(0)
{
int n;
cin >>n ;