第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

模算法與NTT(有限域DFT)優(yōu)化

模算法與NTT(有限域DFT)優(yōu)化

模算法與NTT(有限域DFT)優(yōu)化我想使用NTT進(jìn)行快速平方(參見(jiàn)快速大平方計(jì)算),但是即使對(duì)于非常大的數(shù)字,結(jié)果也是緩慢的。超過(guò)12000位。所以我的問(wèn)題是:有辦法優(yōu)化我的NTT變換嗎?我并不打算通過(guò)并行(線程)來(lái)加快它的速度;這只是低級(jí)層。有辦法加速我的模塊運(yùn)算嗎?這是我的(已經(jīng)優(yōu)化的)C+的NTT源代碼(它是完整的,100%工作在C+白化任何需要第三方庫(kù),也應(yīng)該是線程安全的。請(qǐng)注意,源數(shù)組被用作臨時(shí)的!,它也不能將數(shù)組轉(zhuǎn)換為自身)。//---------------------------------------------------------------------------class fourier_NTT                                    // Number theoretic transform    {public:    DWORD r,L,p,N;    DWORD W,iW,rN;    fourier_NTT(){ r=0; L=0; p=0; W=0; iW=0; rN=0; }    // main interface    void  NTT(DWORD *dst,DWORD *src,DWORD n=0);               // DWORD dst[n] = fast  NTT(DWORD src[n])    void INTT(DWORD *dst,DWORD *src,DWORD n=0);               // DWORD dst[n] = fast INTT(DWORD src[n])    // Helper functions    bool init(DWORD n);                                       // init r,L,p,W,iW,rN    void  NTT_fast(DWORD *dst,DWORD *src,DWORD n,DWORD w);    // DWORD dst[n] = fast  NTT(DWORD src[n])    // Only for testing    void  NTT_slow(DWORD *dst,DWORD *src,DWORD n,DWORD w);    // DWORD dst[n] = slow  NTT(DWORD src[n])    void INTT_slow(DWORD *dst,DWORD *src,DWORD n,DWORD w);    // DWORD dst[n] = slow INTT(DWORD src[n])    // DWORD arithmetics    DWORD shl(DWORD a);    DWORD shr(DWORD a);    // Modular arithmetics    DWORD mod(DWORD a);    DWORD modadd(DWORD a,DWORD b);    DWORD modsub(DWORD a,DWORD b);    DWORD modmul(DWORD a,DWORD b);    DWORD modpow(DWORD a,DWORD b);    };//---------------------------------------------------------------------------void fourier_NTT:: NTT(DWORD *dst,DWORD *src,DWORD n)    {    if (n>0) init(n);    NTT_fast(dst,src,N,W);//    NTT_slow(dst,src,N,W);    }優(yōu)化后的一些度量(當(dāng)前代碼、較低的遞歸參數(shù)大小/計(jì)數(shù)以及更好的模塊化算法):檢查NTTmul和NTTsqr時(shí)間(我的優(yōu)化使它加快了3倍多)。它只有1倍的循環(huán),所以它不是很精確(誤差~10%),但加速比即使現(xiàn)在也是明顯的(通常我會(huì)循環(huán)它1000倍或更多,但我的NTT太慢了)。你可以自由使用我的代碼.。只需保留我的Nick和/或鏈接到這個(gè)頁(yè)面的某個(gè)地方(rem in code,README.txt,約或諸如此類)。希望能幫上忙.。(我在任何地方都沒(méi)有看到用于快速NTT的C+源代碼,所以我不得不自己編寫(xiě)它)。統(tǒng)一的根測(cè)試了所有接受的N,見(jiàn)fourier_NTT::init(DWORD n)功能。
查看完整描述

3 回答

  • 3 回答
  • 1 關(guān)注
  • 1022 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)