static int c_prog_int(void) { int breaker; int i; long dfirst; if(nin+nout<=4) sumDiag=1; else sumDiag=0; memerror=zeroHeep; mark_(&heapbeg); initvararray(0,'c',3); /* ======= Initialisation parth ======= */ firstVar=nmodelvar; if(!strcmp( modelvars[firstVar].varname,strongconst)) firstVar--; prepareprocinform(); calc_nvars_nfunc(); /* ======= End of Initialisation ====== */ { outFileOpen("%sresults%cservice.c",pathtouser,f_slash); labl(); writeF("#include<math.h>\n"); writeF("#include<complex.h>\n"); writeF("#include\"num_out.h\"\n"); writeF("#include\"num_in.h\"\n"); writeF("double BWrange_ext=2.7;\n"); writeF("int twidth_ext=0;\n"); writeF("int gtwidth_ext=0;\n"); writeF("int gswidth_ext=0;\n"); writeF(" REAL va_ext[%d]={0};\n",nvars+nfunc+1); } geninf("nin_ext",nin); geninf("nout_ext",nout); geninf("nprc_ext",subproc_sq); make_pinf(); geninf("nvar_ext",nvars); geninf("nfunc_ext",nfunc); make_vinf(); { make_den_info(); fprintf(outFile,"\nCalcHEP_interface interface_ext={ %d,\n\"%s\"\n,%d, %d, varName_ext,va_ext," "%d, %d, %d, &pinf_ext, &pinfAux_ext, polarized_ext, &calcFunc_ext, &BWrange_ext,&twidth_ext," ">width_ext,&gswidth_ext, &aWidth_ext, &sqme_ext,&den_info_ext,&build_cb_ext, &cb_pow_ext," "&cb_nc_ext, &cb_chains_ext, &cb_coeff_ext, &destroy_cb_ext};\n", forceUG, pathtocalchep,nvars, nfunc, nin,nout,subproc_sq); writeF("\nCalcHEP_interface * PtrInterface_ext=&interface_ext;\n"); outFileClose(); outFileOpen("%sresults%csqme.c",pathtouser,f_slash); labl(); writeF("#include<stdio.h>\n"); writeF("#include<math.h>\n"); writeF("#include<complex.h>\n"); writeF("#include\"num_out.h\"\n"); writeF("#include\"num_in.h\"\n"); } writeF("static int calcall[%d];\n",subproc_sq+1); { writeF("static int particles[%d]={0",1+nin+nout); for(i=0;i<nin+nout;i++) writeF(",0"); writeF("};\n"); } writeF("extern DNN "); for(i=1;i<subproc_sq;i++) writeF("S%d_ext,",i); writeF("S%d_ext;\n",subproc_sq); writeF("static DNN * darr[%d]={",subproc_sq); for(i=1;i<subproc_sq;i++) writeF("&S%d_ext,",i); writeF("&S%d_ext};\n",subproc_sq); fseek(catalog,0,SEEK_END); ndiagrtot = ftell(catalog)/sizeof(catrec); writesubroutineinit(); { make_infbasis(); writeF("#include\"sqme.inc\"\n"); outFileClose(); } diagrcount = 0; inftmp = inf; init_stat(); for (nsub = 1,dfirst=1; nsub <= subproc_sq; nsub++) { int colors[MAXINOUT]; if (inftmp->tot != 0) /* this subprocess IN archive */ { for(i=0;i<nin+nout;i++) { int l; locateinbase(inftmp->p_name[i], &l); colors[i]=prtclbase[l-1].cdim; } for(i=0;i<nin; i++) if(colors[i]==3) colors[i]=-3; else if(colors[i]==-3) colors[i]=3; if(noCChain) for(i=0;i<nin+nout; i++) colors[i]=1; infCbases(nin+nout,colors,&nC,&cBasisPower,&cChains); if(cBasisPower) { cCoefN=malloc(cBasisPower*sizeof(long)); cCoefD=malloc(cBasisPower*sizeof(long)); } writesubprocess(nsub,dfirst,inftmp->tot, &breaker); dfirst+=inftmp->tot; if (breaker) goto exi; if(cBasisPower) { if(cChains){free(cChains); cChains=NULL;} free(cCoefN); free(cCoefD); } } else writesubprocess(nsub,dfirst,0, NULL); inftmp = inftmp->next; } exi: clearstatistic(); release_(&heapbeg); return !breaker; }
int vert_code(polyvars * vardef_ext) { // outFile=stdout; labl(); writeF("#include<stdlib.h>\n"); writeF("#include<math.h>\n"); writeF("#include<complex.h>\n"); initvararray(0,'c',vardef_ext); firstVar=nmodelvar; if(!strcmp( modelvars[firstVar].varname,strongconst)) firstVar--; calc_nvars_nfunc(); // geninf(" nvar_ext",nvars); // geninf(" nfunc_ext",nfunc); // writeF(" static int nvars=%d;\n",nvars); writeF("static char*varName[%d]={\"zero\"",nvars+nfunc+1); sortvars(); writeF("};\n"); writeF(" static double V[%d];\n",nvars+nfunc+1); writeF("static int vertexCoeff(double * coeff_out)\n{\n"); int l; for(l=nCommonVars+1;l<=nmodelvar;l++) { char *ss; 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); writeF(" if(!isfinite(%s)){ return %d;}\n",vararr[l].alias,num); } } } for(l=0;l<vardef_ext->nvar;l++) if(!strchr( vardef_ext->vars[l].name,'.')) strcpy(vardef_ext->vars[l].name,vararr[vardef_ext->vars[l].num].alias); return nvars; }