Esempio n. 1
0
File: semc1.c Progetto: aiju/hdl
/* process all initial blocks */
static void
initial(SemDefs *glob)
{
    Nodes *r, *s;
    int t;

    for(r = initbl; r != nil; r = r->next) {
        for(s = r->n->nl; s != nil; s = s->next) {
            t = inittype(s->n);
            if(t == SIINVAL || t == SINONE)
                error(s->n, "'%n' not a valid trigger", s->n);
        }
        initial1(r->n->n1, r->n->nl, glob);
    }
}
Esempio n. 2
0
File: semc1.c Progetto: aiju/hdl
/* process statement in initial block with triggers tr,
   creating SemInit structures for all triggers. */
static void
initial1(ASTNode *n, Nodes *tr, SemDefs *glob)
{
    Nodes *r;
    SemVar *v;
    SemInit *si, **p;
    int t;

    if(n == nil) return;
    switch(n->t) {
    case ASTASS:
        assert(n->n1 != nil);
        if(n->n1->t != ASTSYMB) {
            error(n, "initial1: unknown lval %A", n->n1->t);
            return;
        }
        assert(n->n1->sym != nil);
        v = n->n1->sym->semc[0];
        assert(v != nil);
        if((v->flags & SVREG) == 0) {
            warn(n, "'%s' initial assignment ignored", v->sym->name);
            break;
        }
        for(r = tr; r != nil; r = r->next) {
            t = inittype(r->n);
            if(t == SIINVAL || t == SINONE) continue;
            for(p = &v->init; *p != nil; p = &(*p)->vnext)
                if(nodeeq((*p)->trigger, r->n, nodeeq)) {
                    error(n, "'%s' conflicting initial value", v->sym->name);
                    break;
                }
            if(*p != nil) continue;
            si = emalloc(sizeof(SemInit));
            si->trigger = onlyone(ssabuildbl(r->n, glob, 0));
            si->type = t;
            si->var = v;
            si->val = n->n2;
            *p = si;
        }
        break;
    case ASTBLOCK:
        for(r = n->nl; r != nil; r = r->next)
            initial1(r->n, tr, glob);
        break;
    default:
        error(n, "initial1: unknown %A", n->t);
    }
}
Esempio n. 3
0
int main()
{
	int i,j,k,gn=1;
//	int g[graph_scale][graph_scale];
	char filename2[5]={'.','t','x','t','\0'};
	char filename3[15]="frequency.txt";
	initial1();               //初始记录频繁度的矩阵
//	char filename1[10];
	while(gn<=graph_num)
	{
		i=48+int(gn/100);
		j=48+(gn-int(gn/100)*100)/10;
		k=48+gn-int(gn/100)*100-(j-48)*10;
		char filename1[15]={i,j,k,'\0'};
        strcat(filename1,filename2);    //记事本文件名
		initial3();
		initial2();       //将图的关联矩阵初始化为0
		generate1();     //生成图的关联矩阵行标和列标
        generate2();     //将边注入关联矩阵中
		txt_out1(filename1);   //将图放到记事本中
		if(g[0][31]>side)
		{
			side=g[0][31];
			strcpy(sname,filename1);
		}
		if(g[31][0]>dot)
		{
			dot=g[31][0];
			strcpy(dname,filename1);
		}
		gn++;
	}
	txt_out2(filename3);
	printf("Max sidesign is %c in %s.\n",side,sname);
	printf("Max potsign is %c in %s.\n",dot,dname);

}
Esempio n. 4
0
void preoptim(int nv)
{
int answ,k,i,s,gdrive=VGA,gmode=2;
long n[3];
double c[16],pv[16];
extern int npexp;
extern double pexpx[],pexpy[],pexpz[];
extern char namesch[],statpexp[];
int grafcond(void);
void grafica(int, double *pv);
void inspect(double *pv);
int search(long nsteps,long npoints,int nv,double *pv,double *c);
int search1(long nsteps,long npoints,double *a,double *c);
void searchpar(long *n);
void eliminate(void);
void initial(int nv,double *pv,double *c);
void initial1(int nv,double *pv,double *c);
int npgr;
double correlation(double *pv);
	for(i=0;i<npexp;i++)
		statpexp[i]=1;
	npgr=grafcond();
	initgraph(&gdrive,&gmode,"");
	answ=5993;
	do
	{
		switch(answ)
		{
			case 5993:
				initial(nv,pv,c);
			case 6512:
				n[2]=long(nv);
				searchpar(n);
			case 11875:
				if(nv==1)
					s=search1(n[1],n[0],pv,c);
				else
					s=search(n[1],n[0],nv,pv,c);
				switch(s)
				{
					case 1:
						puts("This is what you are searching for!");
					break;
					case 2:
						puts("Continue ! Modify parameters with <p> if you want.");
					break;
					case 0:
						if(nv==1)
						{
							puts("Raise npoints from <p> !");
							break;
						}
					default:
						puts("Something is bad !");
						return;
				}
				break;
			case 12654:
				inspect(pv);
				break;
			case 561:
				initial1(nv,pv,c);
				break;
			case 4978:
				printf("correlation coefficient = %f\n",correlation(pv));
				break;
			case 7777:
				npgr=grafcond();
			case 8807:
				puts("YOU MUST WAIT A LITTLE !");
				grafica(npgr,pv);
				break;
			case 4709:
				eliminate();
				break;
			default:
				puts("	Initialization        search Parameters      Continue");
				puts("	Eliminate/insert      iNspect                coRrelation");
				puts("	Graphics              graph quAlity          Stop");
				printf("	(i/p/c\n	 e/n/r\n	 g/a/s)\n ");
		}
		flushall();
		answ=bioskey(0);
	}
	while(answ!=8051);
	closegraph();
	puts("FINAL VALUES :");
	for(k=0;k<nv;k++)
	{
		printf("%2d  ",k);
		for(i=0;i<10;i++)
			printf("%c",namesch[10*k+i]);
		printf("		%12.7e\n",pv[k]);
	}
	return;
}