欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種編譯器前端乘冪運(yùn)算的方法

文檔序號(hào):9810245閱讀:342來源:國知局
一種編譯器前端乘冪運(yùn)算的方法【
技術(shù)領(lǐng)域
】[0001]一種編譯器前端乘冪運(yùn)算的方法主要涉及計(jì)算機(jī)算法領(lǐng)域。【
背景技術(shù)
】[0002]乘冪運(yùn)算是最基本的數(shù)學(xué)表達(dá)式之一,幾乎所有高級(jí)語言都直接支持。同時(shí),在實(shí)際應(yīng)用尤其是高性能科學(xué)計(jì)算和密碼算法中使用乘冪運(yùn)算頻率較高。因此,對(duì)編譯器如何實(shí)現(xiàn)乘冪運(yùn)算提出了較高的優(yōu)化要求。目前,編譯器對(duì)乘冪的支持與優(yōu)化理論研究已經(jīng)比較成熟,本發(fā)明主要是根據(jù)這些優(yōu)化方法提出一個(gè)具體的實(shí)現(xiàn)算法,為研究編譯器前端優(yōu)化處理乘冪運(yùn)算提供一個(gè)參考。這個(gè)算法是Window算法和靜態(tài)最優(yōu)加法鏈表算法的結(jié)合,最后給出算法效率分析。[0003]【
發(fā)明內(nèi)容】通過國家專利檢索沒有發(fā)現(xiàn)關(guān)于此系統(tǒng)方面的申請(qǐng)資料。[0004]此方法主要是功能是將前端的乘冪操作轉(zhuǎn)換為等價(jià)乘積,該文的算法結(jié)合Window算法和靜態(tài)加法鏈算法,既能處理任意大小的冪值,又能得到比Window算法更短的加法鏈。[0005]在實(shí)現(xiàn)中,定義的最優(yōu)靜態(tài)加法鏈表的大小為256,Win_dow大小為3:SdefinePOWI_TABLE_SIZE256SdefineP0ffI_ffIND0ff_SIZE3靜態(tài)最優(yōu)加法鏈表的定義如下所示:staticconstunsignedcharpowi_table[POWI_TABLE_SIZE]={0,1,1,2,2,3,3,4,/*0-7*/4,6,5,6,6,10,7,9,/*8-15*/8,16,9,16,10,12,11,13,/*16-23*/12,17,13,18,14,24,15,26,/*24-31*/16,17,17,19,18,33,19,26,/*32-39*/20.25.21.40.22.27.23.44,/*40-47*/24.32.25.34.26.29.27.44,/*48-55*/28.31.29.34.30.60.31.36,/*56-63*/32.64.33.34.34.46.35.37,/*64-71*/36,65,37,50,38,48,39,69,/*72-79*/40,49,41,43,42,51,43,58,/*80-87*/44,64,45,47,46,59,47,76,/*88-95*/48,65,49,66,50,67,51,66,/*96-103*/52,70,53,74,54,104,55,74,/*104-111*/56.64.57.69.58.78.59.68,/*112-119*/60.61.61.80.62.75.63.68,/*120—127*/64,65,65,128,66,129,67,90,/*128-135*/68,73,69,131,70,94,71,88,/*136-143*/72.128.73.98.74.132.75.121,/*144—151*/76,102,77,124,78,132,79,106,/*152-159*/80,97,81,160,82,99,83,134,/*160-167*/84,86,85,95,86,160,87,100,/*168-175*/88.113.89.98.90.107.91.122,/*176-183*/92,111,93,102,94,126,95,150,/*184-191*/96,128,97,130,98,133,99,195,/*192-199*/100,128,101,123,102,164,103,138,/*200-207*/104,145,105,146,106,109,107,149,/*208-215*/108,200,109,146,110,170,111,157,/*216-223*/112,128,113,130,114,182,115,132,/*224-231*/116,200,117,132,118,158,119,206,/*232-239*/120,240,121,162,122,147,123,152,/*240-247*/124,166,125,214,126,138,127,153,/*248-255*/};比如求n(n〈256)的加法鏈,powi_tabie[η]和n-powi_tabie[η]即為加法鏈中的兩個(gè)元素,以此類推直到有一個(gè)元素為I。給出了η!100的最優(yōu)加法鏈表,其余的可以在GCC網(wǎng)站中得到。另一個(gè)重要的數(shù)據(jù)結(jié)構(gòu)是:treevartmp[POWI_TABLE_SIZE];這個(gè)數(shù)組用來放置加法鏈對(duì)應(yīng)的冪值,是存放臨時(shí)結(jié)果的。其中tree[7]是操作數(shù)在編譯器中間層的表示,稱為樹節(jié)點(diǎn)。其初值除vartmp[I]外都為零,vartmp[I]等于X1對(duì)應(yīng)的樹節(jié)點(diǎn)。筆者在實(shí)現(xiàn)這個(gè)算法的時(shí)候,沒有根據(jù)經(jīng)典的加法鏈算法,首先求出加法鏈,然后根據(jù)加法鏈填充中間冪值。而是采用了遞規(guī)函數(shù)來實(shí)現(xiàn),十分簡潔,算法的主要部分是遞規(guī)函數(shù):gfc_expand_powi算法6:gfc_expand_powi輸入:n,vartmp輸出:vartmp[I]**nwindow"(l?POWI_WINDOff_SIZE)-1;可以看出,這種算法可以處理任意大小的n值。當(dāng)n>255時(shí),沿著左邊兩條分支得出opI和op2。其中的一個(gè)操作數(shù)為window位,可直接查表得出最優(yōu)加法鏈;另一個(gè)采用加倍規(guī)則,以指數(shù)速度遞減到小于256,然后查表得出加法鏈。同時(shí),只要指數(shù)小于256,中間結(jié)果都保存下來。從最右邊的分支可以看到,如果指數(shù)小于256,首先檢查vartmp中有沒有已經(jīng)算出的結(jié)果,如果有就直接使用,避免了再去求加法鏈。因此,算法的效率很高。[0006]在編譯器的具體實(shí)現(xiàn)中,還要考慮另外一種情況,即當(dāng)?shù)讛?shù)X為整數(shù),指數(shù)η為負(fù)常整數(shù)時(shí),乘冪的結(jié)果只有三種情況:-1,0,1。[0007]如果η為負(fù)奇數(shù),則X為I,結(jié)果為I;χ為_1,結(jié)果為_1;其余結(jié)果為O。即可將乘冪操作轉(zhuǎn)換為如下代碼:P=(x==l?l:x==-l?-l:0);如果n為負(fù)偶數(shù),則X為I或-1,結(jié)果為I;其余結(jié)果為O。[0008]即可將乘冪操作轉(zhuǎn)換為如下代碼:P=(X==-111X==I?I:0);算法的效率主要體現(xiàn)在將乘冪運(yùn)算轉(zhuǎn)換后乘法運(yùn)算的次數(shù),在加法鏈算法中也就是加法鏈的長度。[0009]對(duì)于二進(jìn)制算法,不管采不采用加法鏈算法,其乘法次數(shù)與冪指數(shù)的二進(jìn)制表示有關(guān),從算法中可以看出其乘法次數(shù)為:ign」+u(η)其中u(η)表示η的二進(jìn)制表示中I的個(gè)數(shù)。[0010]Window算法,其加法鏈長度為:L-!_g_g!!!1-g""+L!+gι-g+2!-1L為指數(shù)η的二進(jìn)制長度:ign+l,g為η的概率,!為Window的位數(shù)。該文沒有對(duì)算法6的效率進(jìn)行形式化的證明,但因?yàn)樗捎昧薟indow算法和靜態(tài)最優(yōu)加法鏈算法,其效率要優(yōu)于單純的Window算法。在實(shí)際應(yīng)用中,通過測(cè)試某物理模擬題,單機(jī)性能提高約3%ο【主權(quán)項(xiàng)】1.一種編譯器前端乘冪運(yùn)算的方法其主要特征是結(jié)合了Window算法和靜態(tài)加法鏈算法,既能處理任意大小的冪值,又能得到比Window算法更短的加法鏈。2.根據(jù)權(quán)利要求1其window算法則是事先要給定一個(gè)K值,它定義了每次移動(dòng)的“窗口”的大小。3.加法鏈按照下面這兩條規(guī)則建立:加倍規(guī)則:6i=61-l+61-l=261-l星鏈規(guī)則:6i=61-l+c,cEPP是所有小于2K的奇數(shù)集合。4.根據(jù)權(quán)利要求2中要求的二進(jìn)制算法假設(shè)I=(et,et_l,…,el,e0)2,可以對(duì)I從左到右考慮,也可以從右到左考慮,算法描述分別如下:算法1:從左到右的二進(jìn)制算法p〈-l;fori=tdownto0do{P=P^Pifei—Ip=p氺X}o5.根據(jù)權(quán)利要求3中要求的另類算法:從右到左的二進(jìn)制算法p〈-l;U<-1;ζ<-χwhile(I)do{if((U1)==1)//如果U最右邊一位為Ip^=zif((U?=l)>0)//U右移一位z^=zelsebreak;//結(jié)束}o6.從左到右的二進(jìn)制算法a2〈_0;j<-(-1)fori=tdownto0do{a=2*a-1ifei==l{++;a=a-1+1;}}o【專利摘要】一種編譯器前端乘冪運(yùn)算的方法就是利用乘冪運(yùn)算進(jìn)行,它是最基本的數(shù)學(xué)表達(dá)式之一,并且被大多數(shù)編譯器支持,在高性能計(jì)和密碼算法中應(yīng)用十分頻繁?!綢PC分類】G06F7/552【公開號(hào)】CN105573713【申請(qǐng)?zhí)枴緾N201410541113【發(fā)明人】不公告發(fā)明人【申請(qǐng)人】鎮(zhèn)江鼎拓科技信息有限公司【公開日】2016年5月11日【申請(qǐng)日】2014年10月14日
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
阿拉尔市| 淄博市| 江都市| 土默特左旗| 都匀市| 民和| 镇宁| 曲沃县| 阿坝县| 宜宾市| 绍兴县| 罗江县| 日喀则市| 雷山县| 大连市| 登封市| 凭祥市| 吴川市| 邓州市| 上高县| 隆尧县| 三原县| 九龙城区| 旬阳县| 宝应县| 巴东县| 镇原县| 永修县| 博客| 西乡县| 新竹市| 康马县| 南木林县| 黑水县| 汝州市| 临夏市| 太保市| 阿克陶县| 长宁区| 莱西市| 关岭|