コード例 #1
0
    TEST(ExpressionAlgoIsSubsetOf, Compare_GT_GTE) {
        ParsedMatchExpression gte6("{x: {$gte: 6}}");
        ParsedMatchExpression gt5("{x: {$gt: 5}}");
        ParsedMatchExpression gte5("{x: {$gte: 5}}");
        ParsedMatchExpression gt4("{x: {$gt: 4}}");

        ASSERT_TRUE(expression::isSubsetOf(gte6.get(), gte5.get()));
        ASSERT_TRUE(expression::isSubsetOf(gt5.get(), gte5.get()));
        ASSERT_TRUE(expression::isSubsetOf(gte5.get(), gte5.get()));
        ASSERT_FALSE(expression::isSubsetOf(gt4.get(), gte5.get()));

        ASSERT_TRUE(expression::isSubsetOf(gte6.get(), gt5.get()));
        ASSERT_TRUE(expression::isSubsetOf(gt5.get(), gt5.get()));
        ASSERT_FALSE(expression::isSubsetOf(gte5.get(), gt5.get()));
        ASSERT_FALSE(expression::isSubsetOf(gt4.get(), gt5.get()));
    }
コード例 #2
0
ファイル: c_out.c プロジェクト: restrepo/CalcHEP
static int* makeCperm(int ntot,int*np,int*perm)
{ int i,bPow,nc; 
  int pc[MAXINOUT];
  int *chains; 
  int * res;
  
  for(i=0;i<ntot;i++) 
  { pc[i]=prtclbase[np[i]-1].cdim;
    if(i<nin && pc[i]!=1 && pc[i]!=8) pc[i]*=-1;
  }     
  
  bPow=infCbases(ntot,pc,&nC,&chains);
//printf(" Ibasis: "); for(i=0;i<bPow*nC*4;i++) printf("%d ",chains[i]);  printf("\n");
  res=malloc(sizeof(int)*(bPow+1));
  res[0]=bPow;
  if(bPow>0)
  {  int*chains2=malloc(sizeof(int)*nC*bPow*4);
     memcpy(chains2,chains,nC*bPow*4*sizeof(int));
  {  int j,k,l; 

     for(k=0;k<4*nC*bPow;k++) if(k%4 && chains2[k]) chains2[k]=perm[chains2[k]-1]+1;
//printf(" Pbasis: "); for(i=0;i<bPow*nC*4;i++) printf("%d ",chains2[i]); printf("\n");

                        
     for(l=0;l<bPow*nC;l++)
     {                      
        int * c=chains2+4*l;
        if(abs(c[0])==3)
        { int b;
             
          if(c[1]>c[2]) { b=c[1];c[1]=c[2];c[2]=b;}
          if(c[2]>c[3]) { b=c[2];c[2]=c[3];c[3]=b;}
          if(c[1]>c[2]) { b=c[1];c[1]=c[2];c[2]=b;}
          if(c[2]>c[3]) { b=c[2];c[2]=c[3];c[3]=b;}
        }
     }


     for(l=0;l<bPow;l++)
     {  int l2;
        int * c=chains2+4*l*nC;                     
        k=0; 
        while(k<nC-1) if(gt4(c+4*k,c+4*k+4) )
           {  int buff[4];
              memcpy(buff,   c+4*k,  4*sizeof(int));                           
              memcpy(c+4*k,  c+4*k+4,4*sizeof(int));                           
              memcpy(c+4*k+4,buff,   4*sizeof(int));                           
              if(k>0) k--;else k++;                                            
           } else k++;                                                         

        for(l2=0;l2<bPow;l2++) if(memcmp(chains+4*nC*l2,c,4*nC*sizeof(int))==0)
        { 
           res[l+1]=l2+1;
           break;          
        }                  
                           
        if(l2==bPow) fprintf(stderr,"Can not construct permutation\n");
     }
//printf(" Sbasis: "); for(i=0;i<bPow*nC*4;i++) printf("%d ",chains2[i]); printf("\n");     
                                                                            
  }         
     free(chains2);
  }
 return res;
}