Example #1
0
static void  make_vinf(void)
{  
  if(flag_12) writeF("static ");
  writeF("char * varName_ext[%d]={\"P(cms)\"",nvars+nfunc+1);
  scanvars(3);
  writeF("};\n");
}
Example #2
0
static void permRec(int ntot,int* np, int i0, int *pused, int *perm)
{  
   int i,j;

   if(i0==ntot)
   { 
     for(j=0;j<ntot;j++) if(perm[j]!=j)
     { int i; 
       writeF(",\n{");
       for(i=0;i<ntot-1;i++)writeF("%d,",perm[i]+1);
       writeF("%d}",perm[i]+1);
       
       cPerm[ncPerm++]=makeCperm(ntot,np,perm);
       
       break; 
     } 
     return;
   }

   for(j=0;j<ntot;j++) if(np[j]==np[i0] && !pused[j] )
   { perm[i0]=j;
     pused[j]=1;
     permRec(ntot,np,i0+1,pused,perm);
     pused[j]=0;
   }
}
Example #3
0
static void scanvars(int mode)
{
 int k;

   for(k=1;k<=nmodelvar;k++)
   {  varlist  modl=modelvars+k;  
      if (vararr[k].used && !modl->func && !modl->pwidth)
      {
         switch(mode)
         {
	    case 2: writeF("\n,%E",modl->varvalue);    break;
            case 3: writeF("\n,\"%s\"",modl->varname); break;
         }
      }
   }

   
   for(k=1;k<=nmodelvar;k++)
   {  varlist  modl=modelvars+k;  
      if (vararr[k].used && (modl->func || modl->pwidth ))
      {
         switch(mode)
         {
	    case 2: if(modl->hidden) writeF("\n,1"); else  writeF("\n,0");    break;
            case 3: writeF("\n,\"%s\"",modl->varname); break;
         }
      }
   }
}
Example #4
0
static void sortvars(void)
{
  int k;

  for(k=4;k<=nmodelvar;k++) if(vararr[k].used && (k<=nCommonVars||modelvars[k].pub)) 
            writeF("\n,\"%s\"",modelvars[k].varname);
  for(k=1+nCommonVars;k<=nmodelvar;k++)if (vararr[k].used && !modelvars[k].pub)
            writeF("\n,\"%s\"",modelvars[k].varname);     
}
Example #5
0
static void writpict(unsigned ndiagr)
{  vcsect vcs;
   csdiagram  csdiagr;
   fseek(diagrq,ndiagr*sizeof(csdiagr),SEEK_SET);
   FREAD1(csdiagr,diagrq);
   transfdiagr(&csdiagr,&vcs);
   writeF("/*\n");
   DiagramToOutFile(&vcs,1,' ');
   writeF("*/\n");
}
Example #6
0
static void diagramReduce( vcsect * vcs,  catrec * cr )
{
   writeF("\n");
   writeF("DiagrNumber:=\"%d_%d\"$\n",cr->nsub_,cr->ndiagr_);
   writeF("\n");
   if (vcs)  DiagramToOutFile(vcs,0,'%');
   emitexpression(cr);
   writeF("\n\n");
   writeF("addToSum()$\n");
}
Example #7
0
static void  diagramMath(vcsect * vcs,catrec * cr)
{ 
   writeF("\n(*\n"); 
   writeF("  Diagram  %d in subprocess %d\n",cr->ndiagr_,cr->nsub_);               
   if (vcs != NULL)  DiagramToOutFile(vcs,0,' ');  
   writeF("*)\n");
   emitexpression(cr);
   
   writeF("\naddToSum;\n");
}
Example #8
0
static void  writeparameters(int nsub)
{
   int        k;
   char        ch;
   char        s[STRSIZ];

   writeF("%%\n");
   writeF("parameters:={\n");

   for(k=1,ch=' ';k<=nmodelvar;k++)if(vararr[k].used)
   { if(modelvars[k].func)
     {   
       sscanf(modelvars[k].func,"%[^%|\n]",s);
       if(!modifyF(s)) continue;
     } else  sprintf(s,"%E",vararr[k].tmpvalue);

     writeF("%c%s=>%s\n",ch,vararr[k].alias,s); ch=',';       
   }
  
   writeF("}$\n");

   writeF("%%\n");
   writeF("substitutions:={\n");
   for(k=nmodelvar,ch = ' '; k ;k--) if(vararr[k].used && modelvars[k].func)
   { 
      sscanf(modelvars[k].func,"%[^%|\n]",s);
      if(modifyF(s)) continue;
      writeF("%c%s=>%s\n",ch,vararr[k].alias,s);
      ch=',';
   }
   writeF("}$\n");
}
Example #9
0
static void  emitindex(set *index)
{  int n,l;

   l=set_first(index,1);

   if(!l) return;
   writeF(" Index ");
   for(n=0;(n<4)&&l;n++)
   {
      if(n) writeF(",");
      writeF("m%d",l);
      set_del1(index,l);
      l=set_first(index,1);
   }
   writeF("$\n");
}
Example #10
0
static void  writeDenominators(deninforec* dendescript)
{   
int i,k;
int nden_t2=nden_t, nden_s2=nden_s;

   for (i = 1; i <= dendescript->tot_den; i++)
   {   int numm = dendescript->denarr[i-1].order_num; 
      if(dendescript->denarr[i-1].width==0)  numm += nden_w; else  
      { if(dendescript->denarr[i-1].stype)  nden_s2--; 
        else { numm += nden_s; nden_t2--;}
      } 
      if(dendescript->denarr[i-1].power == 1) writeF("*Q1[%d]",numm);
                                         else writeF("*Q2[%d]",numm);
   }

   writeF(";\n");

   if(nden_s2+nden_t2)
   {   
      if(nden_s2) 
      { 
        writeF("if(gswidth_ext )");    
        writeF(" R=R");  
        for (k = 1; k <= nden_s; k++)					  	
        { int addpr = 1;							       
          for (i = 1; i <= dendescript->tot_den; i++)			       
          if (dendescript->denarr[i-1].width &&	dendescript->denarr[i-1].stype&&			       
   	     k == dendescript->denarr[i-1].order_num)  addpr = 0;	  	
          if (addpr)  writeF("*Q0[%d]",k);
        }
      writeF(";\n");
      }  
      if(nden_t2) 
      {  writeF("if(gtwidth_ext) R=R"); 
 
        for (k = nden_s+1; k <= nden_w; k++)					  	
        { int addpr = 1;							       
          for (i = 1; i <= dendescript->tot_den; i++)			       
          if (dendescript->denarr[i-1].width &&	(!dendescript->denarr[i-1].stype) &&			       
   	     k == dendescript->denarr[i-1].order_num+nden_s)  addpr = 0;	  	
          if (addpr)  writeF("*Q0[%d]",k);
        }
       writeF(";\n");
      }      					       
   }									       
}
Example #11
0
static void calcColor(long diag)
{
   csdiagram  csdiagr;

   fseek(diagrq, (diag-1)*sizeof(csdiagr),SEEK_SET);
   FREAD1(csdiagr,diagrq);

   if(cBasisPower&&generateColorWeights(&csdiagr,cBasisPower,nC,cChains,cCoefN,cCoefD))
   { int k;
      writeF(" if(cb_coeff_ext)\n {\n");
     
      for(k=0; k<cBasisPower; k++) 
      if(cCoefN[k]) writeF("  cb_coeff_ext[%d] += (R*%d)/(%d);\n",k,
      cCoefN[k],cCoefD[k]);

      writeF(" }\n");
   }
}
Example #12
0
static void  r_mult(int arg1,int arg2,set index1)
{  char      name0[8],name1[8],name2[8];
   set       mind;
   unsigned  m,mm,maxmm;
   int       pstn[15];
   int       n,l;
   set       index;

   index=index1;
   sprintf(name1,"Vrt_%d",arg1);
   sprintf(name2,"Vrt_%d",arg2);
   if(arg1 < arg2) strcpy(name0,name1); else strcpy(name0,name2);
   mind=set_and(index,setmassindex);
   if(set_eq0(mind)) reducemult(name0,name1,name2,index); else
   {
      reducemult("Vrt_0",name1,name2,index);
      l = 1; n = 0;
      while (!set_eq0(mind))
      {
         if (set_in(l,mind)) pstn[n++] = l;
         set_del1(&mind,l++);
      }
      maxmm =  (1 << n) - 1 ;
      for (mm = 1;mm <= maxmm ; mm++)
      {
         writeF(" Vrt_L:=%s$   Vrt_R:=%s$\n",name1,name2);
         mind=set_constr(_E);
         m = mm; n = 1;
         while (m != 0)
         {
            if ((m & 1) != 0 && (l = pstn[n-1]) != 0)
            {
               writeF(" Vrt_L:=(Vrt_L where %s)$\n",subst(l,arg1));
               writeF(" Vrt_R:=(Vrt_R where %s)$\n",subst(l,arg2));
               set_add1(&mind,l);
            }
            ++(n);
            m >>= 1;
         }
         reducemult("Vrt_0","Vrt_0 + Vrt_L","Vrt_R",set_aun(index,mind));
         writeF(" Clear Vrt_L $    Clear Vrt_R $\n");
      }
      writeF(" %s:=Vrt_0 $    Clear Vrt_0 $\n",name0);
   }
   if (arg1 < arg2)
   {
      writeF(" Clear %s$\n",name2);
      for (n = 1; n <= vcs.sizet; n++)
         if (vertmap[n-1] == arg2) vertmap[n-1] = arg1;
   }
   if (arg2 < arg1)
   {
      writeF(" Clear %s$\n",name1);
      for (n = 1; n <= vcs.sizet; n++)
      if (vertmap[n-1] == arg1) vertmap[n-1] = arg2;
   }
}  /*  R_mult  */
Example #13
0
static void  head(void)
{  int  l;

   writeF("%% ----------- VARIABLES ------------------ \n");
   writeF(" vector  A,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,ZERO_;\n");
   writeF(" vector  m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16;\n");
   writeF("%%\n");
   writeF("%%--------- Mass shell declarations -----------\n");
   for (l = 1; l <= nin + nout; l++)
      writeF(" MASS  P%d = %s$  MSHELL P%d$\n",l,inoutmasses[l-1],l);
   writeF("%%\n");
   writeF("operator propDen$\n");
}
Example #14
0
static void  emitfactors(void)
{
   int	 c, i, j, s, vln, pnum;

   writeF("%%---------- Factors ---------------\n");
   /* ------- Symmetry Factor ------- */
   writeF(" SymmFact:=%d/%d$    %% Diagram symmerty factor\n",
                    vcs.symnum,vcs.symdenum);
   /* -----  average factor  --------- */
   for (c=1,i=0; i < vcs.sizel; i++)
   {
      vln = vcs.valence[i];
      for (j = 0; j < vln; j++)
      if (IN_PRTCL & vcs.vertlist[i][j].prop)
      {
         pnum = vcs.vertlist[i][j].partcl;
         s = prtclbase1[pnum].spin;
         switch (s)
         {
            case 1: if(!strchr("LR",prtclbase1[pnum].hlp)) c*=2; break;
            case 2: if(zeromass(pnum)) c*=2; else c*=3; break;
            case 3: if(zeromass(pnum)) c*=2; else c*=4; break;
            case 4: if(zeromass(pnum)) c*=2; else c*=5;                   
         } 
         c *= abs(prtclbase1[pnum].cdim);
      }
   }
   writeF(" AverFact:=1/%d$       %% Normalization factor of polarization average\n",c);
   /* ----- Fermion factor  --------- */
   for (c=1,i= 0; i < vcs.sizel; i++)
   for (j=0; j <vcs.valence[i]; j++)
   {
     pnum=vcs.vertlist[i][j].partcl;
     if(prtclbase1[pnum].spin&1 && (IN_PRTCL & vcs.vertlist[i][j].prop))c*=-1;
   }
   
   writeF(" FermFact:=%d$      %% (-1)**(number of in-fermion particles)\n",c);
   /* ----- Color factor  --------- */
   writeF(" ColorFact:=%d/%d$    %%  QCD color weight of diagram  \n%%\n",
         vcs.clrnum,vcs.clrdenum);
}
Example #15
0
int  c_prog(void)
{  
 int result;
    
 catalog=fopen(CATALOG_NAME "2","rb");
 if(catalog)
 { 
   int nin_=nin,nout_=nout, subproc_sq_=subproc_sq;
/*   archiv=fopen(ARCHIV_NAME "2","rb"); */
   diagrq=fopen(DIAGRQ_NAME "2","rb");
   menuq=fopen(MENUQ_NAME "2","rb");
   nin=1; nout=2;
   { char txt[100]; int ndel, ncalc, nrest;
     long recpos;
     for(subproc_sq=0;rd_menu(2,subproc_sq+1,txt,&ndel,&ncalc,&nrest,&recpos); subproc_sq++);
   }   
   outFileOpen("%sresults%cwidth_2.c",pathtouser,f_slash);
   labl();
   writeF("#include<math.h>\n");
   writeF("#include<stdio.h>\n");
   writeF("#include\"extern_2.h\"\n");                  
   writeF("#include\"num_out.h\"\n");
   writeF("#include\"num_in.h\"\n");

   result=c_prog_int(1);
   outFileClose();
   system("cd results; sed  s/_ext/_2/g width_2.c > width2.c; "
          "cat width2.c $CALCHEP/include/width_2+ > width_2.c; rm width2.c; "
          "mv extern.h extern_2.h");
            
   fclose(catalog);
   whichArchive(0,0,0);
   fclose(diagrq);
   fclose(menuq);
   nin=nin_; nout=nout_;
   subproc_sq=subproc_sq_;
 } else if(nin+nout>3) 
 { outFileOpen("%sresults%cwidth_2.c",pathtouser,f_slash);
   writeF("extern double width2_ext(char * pname);\n");
   writeF("double width2_ext(char * pname){return 0.;}\n");
   outFileClose();
 }
 catalog=fopen(CATALOG_NAME,"rb"); 
 diagrq=fopen(DIAGRQ_NAME,"rb");
 menuq=fopen(MENUQ_NAME,"rb");

 result=c_prog_int(0);
 fclose(catalog);
 whichArchive(0,0,0);
 
 fclose(diagrq);
 fclose(menuq);

 return result; 
}
Example #16
0
static void  make_den_info(void)
{  int nden_s,nden_t,nden_0;

   writeF("\n char * den_info_ext(int nsub,int n, int * mass, int * width)\n{\n");
   writeF(" switch(nsub){\n");

   for (nsub = 1; nsub <= subproc_sq; nsub++)
   {  int n=1;
      marktp mem_start; 
      denlist    den_;
 
      writeF(" case %d: switch(n){",nsub);
      mark_(&mem_start);
      denominatorStatistic(nsub, &nden_s, &nden_t, &nden_0, &den_, NULL); 
      for(n=1 ;den_;den_ = den_->next,n++)
      { int m=0;
          writeF("\n    case %d: *mass=%d; *width=%d; return \"",
          n, vararr[den_->mass].num, vararr[den_->width].num);
         while(den_->momStr[m]) fprintf(outFile,"\\%o",den_->momStr[m++]);
         fprintf(outFile,"\";");    
      }  
      writeF("\n    default:*mass=0; *width=0; return NULL;\n                  }\n");
 
      release_(&mem_start); 
   }
   writeF("   default: *mass=0; *width=0; return NULL;\n            }\n}\n");
}
Example #17
0
static void reducemult(char* nameres,char* name1,char* name2,set index)
{  int l, n;
   set  index1=index,index2=index;

   emitindex(&index1);
   writeF(" %s:=%s*%s$\n",nameres,name1,name2);
   while (!set_eq0(index1))
   {
      emitindex(&index1);
      writeF(" %s:=%s$\n",nameres,nameres);
   }
   if(!set_eq0(index2))
   {
      writeF(" RemInd  ");
      for(l=1,n=1;!set_eq0(index2);l++)
      {
         if(set_in(l,index2))
         {
            if (n != 1) writeF(",");
            n++;
	    writeF("m%d",l);
         }
         set_del1(&index2,l);
      }
      writeF("$\n");
   }
}
Example #18
0
static char *  writevardeg(int nv,int deg)
{
 degreerec *   p;
 static char namest[21];
 int k;
   if (deg == 1)  return   vararr[nv].alias;
   p = degnamesptr[nv];
   while (p != NULL)
      if (p->deg == deg)  return  p->name; 
      else                p = p->next;
   p = (degreerec *)m_alloc(sizeof(degreerec));
   p->deg = deg;
   sprintf(namest,"S[%d]",degnamecount++);
   strcpy(p->name,namest);
   p->next = degnamesptr[nv];
   degnamesptr[nv] = p;

   writeF("%s=%s",namest,vararr[nv].alias); 
   for(k=1;k<deg;k++) writeF("*%s",vararr[nv].alias);
   writeF(";\n");
   return namest;
}
Example #19
0
static void  emitreducecode(void)
{
   int  i, j, v1, v2;
   set  ind1, ind2;

   for(i=0; i<vcs.sizet; i++) parsedverts[i]=parseVertex(i,1);
   fermprgemit();
   formblocks(&n_vrt);
   makeprgcode();
   for(i=0; i<vcs.sizet; i++) free(parsedverts[i]);

   for (i = n_vrt - 1; i >= 1; i--)
   {
      v1 = prgcode[i-1][0];
      v2 = prgcode[i-1][1];
      ind1=vertinfo[v1-1].ind;
      ind2=vertinfo[v2-1].ind;

      r_mult(v1,v2,set_and(ind1,ind2));
      vertinfo[MIN(v1,v2)-1].g5 = vertinfo[v1-1].g5 + vertinfo[v2-1].g5;
      vertinfo[MIN(v1,v2)-1].ind=
      set_aun(set_or(ind1,ind2),set_and(ind1,ind2));
   }
   
   
   for (i = 0; i < vcs.sizet; i++)
   for (j = 0; j <vcs.valence[i]; j++)
   { int mom,np;     
     mom=vcs.vertlist[i][j].moment;
     np =vcs.vertlist[i][j].partcl;
     if (mom>0 && prtclbase1[np].hlp == 't')
     {  writeF("Vrt_1:=Vrt_1*(%s**2",prtclbase1[np].massidnt);
       if(prtclbase1[ghostmother(np)].hlp=='*') writeF(")$\n");
        else                                    writeF("-p%d.p%d)$\n",mom,mom); 
     }              
   }   
   writeF("%%\n");
}
Example #20
0
void  makeghostdiagr(int dnum,char * fname)
{csdiagram    csd;
 hlpcsptr     gstlist, c;
 vcsect       vcs_copy;
 FILE * diagrq;
   diagrq=fopen(DIAGRQ_NAME,"rb");
   fseek(diagrq,dnum*sizeof(csdiagram),SEEK_SET);
   FREAD1(csd,diagrq);
   {
      outFileOpen(fname);
      writeLabel('%');
      transfdiagr(&csd,&vcs);

      cwtarg(&vcs);
      if (vcs.clrnum == 0) writeF("Color weight equal zero \n"); else
      {
         generateghosts(&vcs,&gstlist);
         if (gstlist == NULL)
			{
            writeF(
               "Diagrams of this type are absent\n");
            csd.status = 2;
            fseek(diagrq,dnum*sizeof(csdiagram),SEEK_SET);
            FWRITE1(csd,diagrq);
         }
         else
         {
            emitfactors();
            c = gstlist;
            vcs_copy = vcs;
            writeF(" total number diagrams of this type is  %u\n",c->maxnum);
            while (c != NULL)
            {
               coloringvcs(c);
               {
                   writeF("  diagrams number =   %u\n",c->num);
                   DiagramToOutFile(&vcs,0,' ');                     
               }               
	       writeF("  GhostFact:=%d$\n",c->sgn);
               vcs = vcs_copy;
               c = c->next;
            }

         }
         eraseghosts(gstlist);
         vcs = vcs_copy;
      }
      writeF("End$\n");
      outFileClose();
      if (escpressed()) goto exi;
   }

exi:
   fclose(diagrq);
}
Example #21
0
static void  emitdenoms(void)
{int   j; /* 1..2 * maxvert */
 int   k; /* 1..4 */
 int denrno;

   /*  EmitDenoms -- main  */
   
   for (j = 1; j <= vcs.sizet; j++)
   for (k = 1; k <= vcs.valence[j-1]; k++)
   { edgeinvert *ln = &vcs.vertlist[j-1][k-1];
     if(ln->moment>0)
     { char*mass= prtclbase1[ln->partcl].massidnt;
        if(!(ln->prop&(IN_PRTCL|OUT_PRTCL)) && pseudop(ln->partcl))
            writeF("totFactor_:=totFactor_/%s^2$\n",mass);
        else 
        { int spin=prtclbase1[ln->partcl].spin;
          if(spin==3)writeF("totFactor_:=totFactor_/(3*%s^2)$\n",mass);
          else if(spin==4)writeF("totFactor_:=totFactor_/(6*%s^4)$\n",mass);
        }  
     }                    
   } 
   
   writeF("denominator_:=");
   denrno = 0;
   for (j = 1; j <= vcs.sizet; j++)
   for (k = 1; k <= vcs.valence[j-1]; k++)
   {edgeinvert *ln = &vcs.vertlist[j-1][k-1];

     if (ln->moment > 0 && !(ln->prop & (IN_PRTCL|OUT_PRTCL)) )
     {
        if (!pseudop(ln->partcl))
        {  char width[10]="0";
           if(denrno) writeF("*");
           denrno++;
/*           if(!ttypepropag(j,k))*/ strcpy(width,prtclbase1[ln->partcl].imassidnt);
           writeF("propDen(p%d,%s,%s)",ln->moment,
                            prtclbase1[ln->partcl].massidnt,width);
        }
     }
   } 
   if(!denrno) writeF("1");
   writeF("$\n");

}  /*   EmitDenoms   */
Example #22
0
static void  writeprocessname(int* prtclNum)
{  int i; 

   writeF("  process  ");
   for(i=1;i<=nin;i++) 
   {
     writeF("%s(p%d)",prtclbase[prtclNum[i]-1].name,i);
     if (i<nin) writeF("+"); else writeF("->");
   }
   
   for(i=nin+1;i<=nin+nout;i++) 
   {  writeF("%s(p%d)",prtclbase[prtclNum[i]-1].name,i);
      if (i<nin+nout) writeF("+");else writeF("\n");
   }
} 
Example #23
0
static void  emitprocessname(int * prtclNum)
{
   int i;

   writeF("inParticles = {");
   for(i=1;i<=nin;i++) 
   {
      writeF("\"%s\"",prtclbase[prtclNum[i]-1].name);
      if (i<nin) writeF(","); else writeF("}\n");
   }
   
   writeF("outParticles = {");
   
   for(i=nin+1;i<=nin+nout;i++) 
   {  writeF("\"%s\"",prtclbase[prtclNum[i]-1].name);
      if (i<nin+nout) writeF(",");else writeF("}\n");
   }

} 
Example #24
0
static void writeprocessname(int * prtclNum)
{
   int i;
    
   writeF("inParticles:={"); 
   for(i=1; i<=nin; i++)   
     if(i==nin) writeF("\"%s\"}$\n",prtclbase1[prtclNum[i]].name);          
          else  writeF("\"%s\",",prtclbase1[prtclNum[i]].name);
      
   writeF("outParticles:={");
   for(i=nin+1; i<=nin+nout; i++)
     if(i==nin+nout) writeF("\"%s\"}$\n",prtclbase1[prtclNum[i]].name);
               else  writeF("\"%s\",",prtclbase1[prtclNum[i]].name);                        
}
Example #25
0
void  symb_print(char* txt, symb_data  m)
{  char s[5];
   int n;
   tensor p;

   wrt_0(txt);
   switch(m.type)  
   { case numbertp:
     case polytp : writepoly(m.expr.p);  break;
     case tenstp : writetens(m.expr.t);  break;
     case spintp : writespinor(m.expr.s);break;
     case etenstp: writeEtens(m.expr.et);break;
     default:
        if(m.type == vectortp)				       
        {								       
           p=m.expr.t;
           if(p == NULL) wrt_0("0");					       
           else							       
           for(;p;p=p->next)							       
           {  n=-p->tens[0];
	      sprintf(s,"p%d*(",n);
              wrt_0(s);						       
              if(p->re) writepoly(p->re);	       
              if(p->im)					       
              { wrt_0("i*("); writepoly(p->re);wrt_0(")");}	       
              wrt_0(")");						       
              if(p->next) wrt_0("+");				       
           }   				       
        }								       
        else								       
        {								       
           n = m.expr.t->tens[0];	 
           if(!n) n = 1;						      
           sprintf(s,"l%d",n);
           wrt_0(s);
           writetens(m.expr.t);
           
        }							       
   }
   writeF(";\n");
}
Example #26
0
static void startReduce(int nsub,int* prtclNum,int ncalc)
{  
   outputLanguage='R';
   initvararray(nsub,outputLanguage,3);
   outFileOpen("%sresults%csymb%d.red",pathtouser,f_slash,nsub);
   writeLabel('%');
   writeprocessname(prtclNum);
   writeparameters(nsub);
   writeF("\n\n");
   writeF("vector p1,p2,p3,p4,p5,p6$\n");
   emitconvlow(prtclNum);

   writeF("\nvector !=p_,!=q_$\n");
   writeF("operator propDen$\n");
   writeF("for all p_,q_,m,w let propDen(0*p_+q_,m,w)=propDen(q_,m,w)$\n");
   writeF("for all p_,m,w such that ordp(p_,-p_) "
                             "let propDen(p_,m,w)=propDen(-p_,m,w);$\n\n");
   writeF("initSum();\n");
}
Example #27
0
static void  writesubst(void)
{ int i,j,l,c;

  writeF("%%-------- Moment substitutions --------\n");
  for (i = 0; i < 3 * maxvert; i++)
  {  l = momdep[i][0]; /* For momdep this is a length V.E. */
     if (l > 1)
     {
        writeF(" Let  p%d = ",i+1);
        for (j = 1; j <= l; j++)
        {
           c =momdep[i][j];
           if (c > 0)  writeF("+p%d",c); else writeF("-p%d",-c);
        }
        writeF("$\n");
     }
  }
  writeF(" Let Sqrt2=sqrt(2)$\n");
  writeF("%%\n");
}
Example #28
0
static void  writesubroutineinit(void)
{
   int         l;
   char        *ss;
   
   ext_h=NULL;   
   writeF("double (*aWidth_ext)(char*)=NULL;\n"); 
   writeF("static int calcFunc_stat(void)\n{\n");
   writeF(" REAL * V=va_ext;\n");
   writeF(" FError=0;\n");
   for(l=nCommonVars+1;l<=nmodelvar;l++)
   {
      if(vararr[l].used && ((modelvars[l].func && modelvars[l].pub==0) || modelvars[l].pwidth) )
      {  int num;
         checkNaN=0;
         if(modelvars[l].pwidth)
         {  writeF("   %s=aWidth_ext(\"%s\");\n",vararr[l].alias,
             prtclbase1[modelvars[l].pwidth].name); 
             checkNaN=1;
         } else
         {
           ss=(char *)readExpression(modelvars[l].func,rd_c,act_c,free);
/*	   writeF("   %s=%s;\n",vararr[l].alias,ss+3);*/
	   fprintf(outFile,"   %s=%s;\n",vararr[l].alias,ss+3);
	   free(ss);
	 }
	 if(checkNaN)
	 {
	 sscanf(vararr[l].alias,"V[%d]",&num); 
/*
if(!modelvars[l].pwidth)	 
           fprintf(outFile,"printf(\"%s= %%50.50s\\n\",\"%s\");\n",modelvars[l].varname,  modelvars[l].func);
writeF("printf(\"%s=%%E\\n\",%s);\n",vararr[l].alias,vararr[l].alias);
*/	
         writeF("   if(!isfinite(%s) || FError){ return %d;}\n",vararr[l].alias,num);
         }
      }
   }

   writeF("return 0;\n}\n"); 
}
Example #29
0
static void  writesubroutineinit(void)
{
   int         l;
   char        *ss;
   
   if(!flag_12) writeF("#include\"extern.h\"\n");
   ext_h=fopen("results/extern.h","w");   
   fprintf(ext_h,"extern double width2_ext(char*,long );\n");
   writeF("static int calcFunc_stat(void)\n{\n");
   writeF(" double * V=va_ext;\n");
   writeF(" FError=0;\n");
   for(l=1;l<=nmodelvar;l++)
   {
      if (vararr[l].used &&  (modelvars[l].func||modelvars[l].pwidth))
      {  int num;
         checkNaN=0;
         if(modelvars[l].pwidth)
         {  writeF("   %s=width2_ext(\"%s\",%d);\n",vararr[l].alias,
             prtclbase1[modelvars[l].pwidth].name, prtclbase1[modelvars[l].pwidth].N); 
             checkNaN=1;
         } else
         {
           ss=(char *)readExpression(modelvars[l].func,rd_c,act_c,free);
/*	   writeF("   %s=%s;\n",vararr[l].alias,ss+3);*/
	   fprintf(outFile,"   %s=%s;\n",vararr[l].alias,ss+3);
	   free(ss);
	 }
	 if(checkNaN)
	 {
	 sscanf(vararr[l].alias,"V[%d]",&num); 
         writeF("   if(!finite(%s) || FError) return %d;\n",vararr[l].alias,num);
         }
      }
   }

   writeF("return 0;\n}\n"); 
   fclose(ext_h); 
}
Example #30
0
static void calcColor(long diag)
{
   csdiagram  csdiagr;

   fseek(diagrq, (diag-1)*sizeof(csdiagr),SEEK_SET);
   FREAD1(csdiagr,diagrq);

   if(cBasisPower&&generateColorWeights(&csdiagr,cBasisPower,nC,cChains,cCoefN,cCoefD))
   {  
      int k;
      writeF(" if(cb_coeff)\n {\n");
           
      for(k=0; k<cBasisPower; k++)  if(cCoefN[k]) 
      { int i;
         writeF("  cb_coeff[%d] += (R*%d)/(%d); %s ",k, cCoefN[k],cCoefD[k],"/*");
         for(i=0;i<nC;i++) if(cChains[4*(nC*k+i)]==2)  writeF("(%d %d) ", cChains[4*(nC*k+i)+1], cChains[4*(nC*k+i)+2] );
         else writeF("(%d %d %d) ", cChains[4*(nC*k+i)+1], cChains[4*(nC*k+i)+2],cChains[4*(nC*k+i)+3] );
         writeF("*/\n");
      } 
      writeF(" }\n");
   }
}