static void savevardef(void) { FWRITE1(vardef->nvar,archiv); if(vardef->nvar && fwrite(vardef->vars, (vardef->nvar)*sizeof(varinfo) ,1,archiv)!=1) wAbort(); }
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); }
void saveanaliticresult(poly rnum,poly factn,poly factd, vcsect vcs, int ndiagr_abs, int nFile) {catrec cr; int i; int m; diskerror = wAbort; cr.nsub_ = nsub; cr.ndiagr_ = ndiagr; cr.ndiagr_abs=ndiagr_abs; if(!rnum) { cr.status=2; cr.factpos=cr.nFile=cr.rnumpos=cr.denompos=-1; FWRITE1(cr,catalog); diskerror = NULL; return; } cr.status=1; cr.factpos = ftell(archiv); cr.nFile=nFile; vardef++; savevardef(); savepoly(factn); savepoly(factd); cr.rnumpos = ftell(archiv); vardef--; savevardef(); savepoly(rnum); cr.denompos = ftell(archiv); calcdenominators(vcs ); FWRITE1(denrno,archiv); /* number of demominatirs */ for (i = 0; i < denrno; i++) { FWRITE1(denom[i].power,archiv); /* power 1 or 2 */ FWRITE1(denom[i].mass,archiv); FWRITE1(denom[i].width,archiv); FWRITE1(denom[i].pnum,archiv); m=0; do FWRITE1(denom[i].momStr[m],archiv); while(denom[i].momStr[m++]); } FWRITE1(cr,catalog); diskerror = NULL; }
void save_sos(int ercode) { unsigned nproc; csdiagram cd; marktp mark; if (ercode == -2) /* User Break */ { finish(); sortie(20); /* Restart */ } if (ercode == -1) /* Heap is empty */ { mark.blk_=NULL; mark.pos_=0; release_(&mark); } /* Heap is empty, continue */ /* TooLargeNumber */ /* TooManyIdentifiers */ /* RangeCheckError */ if ((ercode < 0) || (ercode == 7) || (ercode == 11) || (ercode == 12)) /* Restart */ { saveent(10); nproc = ftell(diagrq) - sizeof(cd); fseek(diagrq,nproc,SEEK_SET); FREAD1(cd,diagrq); cd.status = -2; fseek(diagrq,nproc,SEEK_SET); FWRITE1(cd,diagrq); finish(); sortie(20); /* Restart */ } /* not disk space */ if ((ercode == 40)) { finish(); sortie(65); /* End of work */ } if(ercode ==14) { messanykey(10,10," Check model !"); finish(); sortie(62); } }
void denominatorStatistic(int nsub, int * n_swidth, int *n_twidth, int * n_0width, denlist * allDenominators, FILE * fd) { int i; catrec cr; denlist den_, den_tmp; deninforec dendescript={0}; (*n_swidth) = 0; (*n_twidth) = 0; (*n_0width) = 0; den_ =NULL; fseek(catalog,0,SEEK_SET); while (FREAD1(cr,catalog)) { if (cr.nsub_ == nsub) { whichArchive(cr.nFile,'r'); dendescript.cr_pos = ftell(catalog) - sizeof(cr); fseek(archiv,cr.denompos,SEEK_SET); readDenominators(); dendescript.tot_den=denrno; for (i = 0; i < dendescript.tot_den; i++) { dendescript.denarr[i].power=denom[i].power; dendescript.denarr[i].width=denom[i].width; den_tmp = den_; while (den_tmp != NULL && ( strcmp(denom[i].momStr,den_tmp->momStr) || denom[i].mass!=den_tmp->mass || denom[i].width!=den_tmp->width ) ) den_tmp=den_tmp->next; if(den_tmp == NULL) { den_tmp = (denlist)getmem_((unsigned)sizeof(denlistrec)); den_tmp->next = den_; strcpy(den_tmp->momStr,denom[i].momStr); den_tmp->mass=denom[i].mass; den_tmp->width=denom[i].width; den_tmp->stype= stype(denom[i].momStr); den_ = den_tmp; if(denom[i].width) { if(den_tmp->stype) den_tmp->order_num= ++(*n_swidth); else den_tmp->order_num= ++(*n_twidth); } else den_tmp->order_num= ++(*n_0width); } dendescript.denarr[i].order_num=den_tmp->order_num; dendescript.denarr[i].stype=den_tmp->stype; } if(fd) FWRITE1(dendescript,fd); } /* if CR.nsub_ =nsub */ } /* if(ArchNum) fclose(archiv); */ whichArchive(0,0); *allDenominators=den_; }