亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cuddgroup.c

?? 主要進行大規模的電路綜合
?? C
?? 第 1 頁 / 共 5 頁
字號:
    return(1);} /* end of ddGroupSiftingBackward *//**Function********************************************************************  Synopsis    [Merges groups in the DD table.]  Description [Creates a single group from low to high and adjusts the  index field of the tree node.]  SideEffects [None]******************************************************************************/static voidddMergeGroups(  DdManager * table,  MtrNode * treenode,  int  low,  int  high){    int i;    MtrNode *auxnode;    int saveindex;    int newindex;    /* Merge all variables from low to high in one group, unless    ** this is the topmost group. In such a case we do not merge lest    ** we lose the symmetry information. */    if (treenode != table->tree) {	for (i = low; i < high; i++)	    table->subtables[i].next = i+1;	table->subtables[high].next = low;    }    /* Adjust the index fields of the tree nodes. If a node is the    ** first child of its parent, then the parent may also need adjustment. */    saveindex = treenode->index;    newindex = table->invperm[low];    auxnode = treenode;    do {	auxnode->index = newindex;	if (auxnode->parent == NULL ||		(int) auxnode->parent->index != saveindex)	    break;	auxnode = auxnode->parent;    } while (1);    return;} /* end of ddMergeGroups *//**Function********************************************************************  Synopsis    [Dissolves a group in the DD table.]  Description [x and y are variables in a group to be cut in two. The cut  is to pass between x and y.]  SideEffects [None]******************************************************************************/static voidddDissolveGroup(  DdManager * table,  int  x,  int  y){    int topx;    int boty;    /* find top and bottom of the two groups */    boty = y;    while ((unsigned) boty < table->subtables[boty].next)	boty = table->subtables[boty].next;        topx = table->subtables[boty].next;    table->subtables[boty].next = y;    table->subtables[x].next = topx;    return;} /* end of ddDissolveGroup *//**Function********************************************************************  Synopsis    [Pretends to check two variables for aggregation.]  Description [Pretends to check two variables for aggregation. Always  returns 0.]  SideEffects [None]******************************************************************************/static intddNoCheck(  DdManager * table,  int  x,  int  y){    return(0);} /* end of ddNoCheck *//**Function********************************************************************  Synopsis    [Checks two variables for aggregation.]  Description [Checks two variables for aggregation. The check is based  on the second difference of the number of nodes as a function of the  layer. If the second difference is lower than a given threshold  (typically negative) then the two variables should be aggregated.  Returns 1 if the two variables pass the test; 0 otherwise.]  SideEffects [None]******************************************************************************/static intddSecDiffCheck(  DdManager * table,  int  x,  int  y){    double Nx,Nx_1;    double Sx;    double threshold;    int    xindex,yindex;    if (x==0) return(0);#ifdef DD_STATS    secdiffcalls++;#endif    Nx = (double) table->subtables[x].keys;    Nx_1 = (double) table->subtables[x-1].keys;    Sx = (table->subtables[y].keys/Nx) - (Nx/Nx_1);    threshold = table->recomb / 100.0;    if (Sx < threshold) {	xindex = table->invperm[x];	yindex = table->invperm[y];	if (cuddTestInteract(table,xindex,yindex)) {#if defined(DD_DEBUG) && defined(DD_VERBOSE)	    (void) fprintf(table->out,			   "Second difference for %d = %g Pos(%d)\n",			   table->invperm[x],Sx,x);#endif#ifdef DD_STATS	    secdiff++;#endif	    return(1);	} else {#ifdef DD_STATS	    secdiffmisfire++;#endif	    return(0);	}    }    return(0);} /* end of ddSecDiffCheck *//**Function********************************************************************  Synopsis    [Checks for extended symmetry of x and y.]  Description [Checks for extended symmetry of x and y. Returns 1 in  case of extended symmetry; 0 otherwise.]  SideEffects [None]******************************************************************************/static intddExtSymmCheck(  DdManager * table,  int  x,  int  y){    DdNode *f,*f0,*f1,*f01,*f00,*f11,*f10;    DdNode *one;    int comple;		/* f0 is complemented */    int notproj;	/* f is not a projection function */    int arccount;	/* number of arcs from layer x to layer y */    int TotalRefCount;	/* total reference count of layer y minus 1 */    int counter;	/* number of nodes of layer x that are allowed */    			/* to violate extended symmetry conditions */    int arccounter;	/* number of arcs into layer y that are allowed */			/* to come from layers other than x */    int i;    int xindex;    int yindex;    int res;    int slots;    DdNodePtr *list;    DdNode *sentinel = &(table->sentinel);    xindex = table->invperm[x];    yindex = table->invperm[y];    /* If the two variables do not interact, we do not want to merge them. */    if (!cuddTestInteract(table,xindex,yindex))	return(0);#ifdef DD_DEBUG    /* Checks that x and y do not contain just the projection functions.    ** With the test on interaction, these test become redundant,    ** because an isolated projection function does not interact with    ** any other variable.    */    if (table->subtables[x].keys == 1) {	assert(table->vars[xindex]->ref != 1);    }    if (table->subtables[y].keys == 1) {	assert(table->vars[yindex]->ref != 1);    }#endif#ifdef DD_STATS    extsymmcalls++;#endif    arccount = 0;    counter = (int) (table->subtables[x].keys *	      (table->symmviolation/100.0) + 0.5);    one = DD_ONE(table);    slots = table->subtables[x].slots;    list = table->subtables[x].nodelist;    for (i = 0; i < slots; i++) {	f = list[i];	while (f != sentinel) {	    /* Find f1, f0, f11, f10, f01, f00. */	    f1 = cuddT(f);	    f0 = Cudd_Regular(cuddE(f));	    comple = Cudd_IsComplement(cuddE(f));	    notproj = f1 != one || f0 != one || f->ref != (DdHalfWord) 1;	    if (f1->index == yindex) {		arccount++;		f11 = cuddT(f1); f10 = cuddE(f1);	    } else {		if ((int) f0->index != yindex) {		    /* If f is an isolated projection function it is		    ** allowed to bypass layer y.		    */		    if (notproj) {			if (counter == 0)			    return(0);			counter--; /* f bypasses layer y */		    }		}		f11 = f10 = f1;	    }	    if ((int) f0->index == yindex) {		arccount++;		f01 = cuddT(f0); f00 = cuddE(f0);	    } else {		f01 = f00 = f0;	    }	    if (comple) {		f01 = Cudd_Not(f01);		f00 = Cudd_Not(f00);	    }	    /* Unless we are looking at a projection function	    ** without external references except the one from the	    ** table, we insist that f01 == f10 or f11 == f00	    */	    if (notproj) {		if (f01 != f10 && f11 != f00) {		    if (counter == 0)			return(0);		    counter--;		}	    }	    f = f->next;	} /* while */    } /* for */    /* Calculate the total reference counts of y */    TotalRefCount = -1;	/* -1 for projection function */    slots = table->subtables[y].slots;    list = table->subtables[y].nodelist;    for (i = 0; i < slots; i++) {	f = list[i];	while (f != sentinel) {	    TotalRefCount += f->ref;	    f = f->next;	}    }    arccounter = (int) (table->subtables[y].keys *		 (table->arcviolation/100.0) + 0.5);    res = arccount >= TotalRefCount - arccounter;#if defined(DD_DEBUG) && defined(DD_VERBOSE)    if (res) {	(void) fprintf(table->out,		       "Found extended symmetry! x = %d\ty = %d\tPos(%d,%d)\n",		       xindex,yindex,x,y);    }#endif#ifdef DD_STATS    if (res)	extsymm++;#endif    return(res);} /* end ddExtSymmCheck *//**Function********************************************************************  Synopsis    [Checks for grouping of x and y.]  Description [Checks for grouping of x and y. Returns 1 in  case of grouping; 0 otherwise. This function is used for lazy sifting.]  SideEffects [None]******************************************************************************/static intddVarGroupCheck(  DdManager * table,  int x,  int y){    int xindex = table->invperm[x];    int yindex = table->invperm[y];    if (Cudd_bddIsVarToBeUngrouped(table, xindex)) return(0);    if (Cudd_bddReadPairIndex(table, xindex) == yindex) {	if (ddIsVarHandled(table, xindex) ||	    ddIsVarHandled(table, yindex)) {	    if (Cudd_bddIsVarToBeGrouped(table, xindex) ||		Cudd_bddIsVarToBeGrouped(table, yindex) ) {		if (table->keys - table->isolated <= originalSize) {		    return(1);		}	    }	}    }    return(0);} /* end of ddVarGroupCheck *//**Function********************************************************************  Synopsis    [Sets a variable to already handled.]  Description [Sets a variable to already handled. This function is used  for lazy sifting.]  SideEffects [none]  SeeAlso     []******************************************************************************/static intddSetVarHandled(  DdManager *dd,  int index){    if (index >= dd->size || index < 0) return(0);    dd->subtables[dd->perm[index]].varHandled = 1;    return(1);} /* end of ddSetVarHandled *//**Function********************************************************************  Synopsis    [Resets a variable to be processed.]  Description [Resets a variable to be processed. This function is used  for lazy sifting.]  SideEffects [none]  SeeAlso     []******************************************************************************/static intddResetVarHandled(  DdManager *dd,  int index){    if (index >= dd->size || index < 0) return(0);    dd->subtables[dd->perm[index]].varHandled = 0;    return(1);} /* end of ddResetVarHandled *//**Function********************************************************************  Synopsis    [Checks whether a variables is already handled.]  Description [Checks whether a variables is already handled. This  function is used for lazy sifting.]  SideEffects [none]  SeeAlso     []******************************************************************************/static intddIsVarHandled(  DdManager *dd,  int index){    if (index >= dd->size || index < 0) return(-1);    return dd->subtables[dd->perm[index]].varHandled;} /* end of ddIsVarHandled */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚州韩日在线看免费版国语版| 亚洲国产精品成人综合色在线婷婷| 99精品欧美一区二区三区小说| 九色|91porny| 日本人妖一区二区| 亚洲国产精品尤物yw在线观看| 亚洲精品菠萝久久久久久久| 一区二区三区四区亚洲| 亚洲欧美另类久久久精品2019 | 一区二区在线看| 亚洲视频精选在线| 亚洲私人影院在线观看| 亚洲丝袜精品丝袜在线| 一区二区三区毛片| 水野朝阳av一区二区三区| 午夜精品久久久久久不卡8050| 午夜精品久久久久影视| 日韩成人免费电影| 久久99蜜桃精品| 国产福利精品导航| 成人av在线影院| 91小视频在线| 欧美日韩国产首页| 日韩欧美国产一区在线观看| 久久综合色播五月| 中文字幕一区视频| 亚洲一区二区免费视频| 日本成人在线电影网| 韩国视频一区二区| 91啪在线观看| 91麻豆精品国产综合久久久久久| 欧美不卡视频一区| 欧美韩国日本一区| 亚洲国产中文字幕| 久久se这里有精品| www.一区二区| 欧美日韩一卡二卡三卡| 欧美成人福利视频| 国产精品国产a级| 亚洲午夜久久久久久久久电影院 | 欧美色电影在线| 精品久久国产老人久久综合| 国产午夜精品久久久久久久| 亚洲日本va午夜在线电影| 婷婷综合五月天| 国产成人小视频| 欧美午夜电影在线播放| 精品国免费一区二区三区| 亚洲欧美日韩系列| 久久66热偷产精品| 97久久超碰精品国产| 91精品国产福利| 亚洲天堂久久久久久久| 蜜桃av噜噜一区二区三区小说| 成人国产在线观看| 制服丝袜在线91| 中文字幕一区二区三区在线播放 | 欧美视频一区二区三区| 久久综合精品国产一区二区三区| 亚洲人成网站精品片在线观看| 美女免费视频一区二区| 91视频xxxx| 久久亚区不卡日本| 亚洲第一主播视频| 成人一区在线观看| 日韩免费高清av| 夜夜精品浪潮av一区二区三区| 国内久久精品视频| 精品污污网站免费看| 国产精品免费视频一区| 久久不见久久见免费视频7 | 综合色中文字幕| 激情图区综合网| 欧美乱妇15p| 亚洲欧美日韩国产另类专区| 国产福利精品一区| 欧美xxx久久| 亚洲成人av福利| 色网综合在线观看| 欧美高清在线精品一区| 久久99精品一区二区三区| 欧美三级韩国三级日本一级| 中文字幕在线一区| 国产精品99久久久久久宅男| 日韩一区二区视频| 日韩和欧美一区二区| 91久久香蕉国产日韩欧美9色| 亚洲国产成人在线| 国产一区二区三区久久悠悠色av| 欧美美女黄视频| 亚洲午夜私人影院| 色8久久精品久久久久久蜜| 国产精品成人午夜| 成人精品国产福利| 国产欧美一区二区三区沐欲| 国产一区二区三区香蕉| 欧美成人aa大片| 黄色日韩三级电影| 日韩免费观看高清完整版| 亚洲一区二区三区四区的| 在线观看成人小视频| 亚洲欧美另类久久久精品| 99视频超级精品| ...xxx性欧美| av高清久久久| 最新国产の精品合集bt伙计| 成人国产精品免费网站| 国产精品乱码一区二区三区软件 | 精品国产露脸精彩对白| 蜜臀av国产精品久久久久| 欧美一区二区三区四区在线观看| 日韩精彩视频在线观看| 日韩欧美一区二区三区在线| 99re8在线精品视频免费播放| 中文字幕av一区二区三区高| 高清在线成人网| 国产精品伦一区| 色综合久久久久久久久久久| 亚洲一区二区视频在线| 欧美精品在线一区二区三区| 日韩va亚洲va欧美va久久| 欧美大片免费久久精品三p| 久久精品国产77777蜜臀| 欧美mv日韩mv国产网站app| 国产呦萝稀缺另类资源| 国产视频视频一区| 91女人视频在线观看| 亚洲午夜精品17c| 欧美一区二区三区思思人| 国产一区二区三区综合| 中文字幕在线免费不卡| 欧美日韩在线综合| 蜜臀av性久久久久av蜜臀妖精| 久久五月婷婷丁香社区| 成年人午夜久久久| 亚洲国产裸拍裸体视频在线观看乱了| 在线不卡a资源高清| 国产精品99久久久| 夜夜亚洲天天久久| 精品国产污污免费网站入口 | 91婷婷韩国欧美一区二区| 樱花草国产18久久久久| 欧美精品乱码久久久久久按摩| 经典一区二区三区| 中文字幕一区三区| 欧美一区二区在线不卡| 成人综合婷婷国产精品久久蜜臀| 亚洲精品伦理在线| 欧美电影免费观看高清完整版在| 国产99精品国产| 香蕉av福利精品导航| 久久综合色天天久久综合图片| 色综合色狠狠综合色| 久久机这里只有精品| 1区2区3区精品视频| 在线播放视频一区| 国产福利一区二区| 亚洲r级在线视频| 国产精品女同一区二区三区| 欧美精品日韩一区| 不卡电影一区二区三区| 日本不卡在线视频| 一区二区三区四区不卡视频| wwww国产精品欧美| 欧美午夜精品久久久久久孕妇 | 91精品在线麻豆| www.欧美.com| 捆绑调教美女网站视频一区| 亚洲免费色视频| 久久精品在这里| 69av一区二区三区| 91蜜桃免费观看视频| 精品一区二区三区蜜桃| 亚洲综合小说图片| 中文字幕巨乱亚洲| 日韩精品一区二区三区四区 | 欧美午夜精品久久久久久超碰| 国产·精品毛片| 狠狠色狠狠色综合| 午夜av电影一区| 亚洲乱码精品一二三四区日韩在线| 欧美刺激脚交jootjob| 欧美日韩精品一区二区| 成人h精品动漫一区二区三区| 看电视剧不卡顿的网站| 亚洲电影在线播放| 亚洲人xxxx| 中文字幕在线不卡国产视频| 国产日本亚洲高清| 精品裸体舞一区二区三区| 欧美精品成人一区二区三区四区| 91丨国产丨九色丨pron| 风间由美中文字幕在线看视频国产欧美| 青草国产精品久久久久久| 亚洲大型综合色站| 午夜精品国产更新| 亚洲福利一二三区| 亚洲一区二区在线免费观看视频 | 亚洲大片精品永久免费| 亚洲欧美视频在线观看视频|