public override Object look(DspState vd, InfoMode vm, Object vr)
{
InfoResidue0 info=(InfoResidue0)vr;
LookResidue0 look=new LookResidue0();
int acc=0;
int dim;
int maxstage=0;
look.info=info;
look.map=vm.mapping;
look.parts=info.partitions;
look.fullbooks=vd.fullbooks;
look.phrasebook=vd.fullbooks[info.groupbook];
dim=look.phrasebook.dim;
look.partbooks=new int[look.parts][];
for(int j=0;j<look.parts;j++)
{
int stages=ilog(info.secondstages[j]);
if(stages!=0)
{
if(stages>maxstage)maxstage=stages;
look.partbooks[j]=new int[stages];
for(int k=0; k<stages; k++)
{
if((info.secondstages[j]&(1<<k))!=0)
{
look.partbooks[j][k]=info.booklist[acc++];
}
}
}
}
look.partvals=(int)Math.Round(Math.Pow(look.parts,dim));
look.stages=maxstage;
look.decodemap=new int[look.partvals][];
for(int j=0;j<look.partvals;j++)
{
int val=j;
int mult=look.partvals/look.parts;
look.decodemap[j]=new int[dim];
for(int k=0;k<dim;k++)
{
int deco=val/mult;
val-=deco*mult;
mult/=look.parts;
look.decodemap[j][k]=deco;
}
}
return(look);
}