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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

C++
catspeake 2019-08-01 06:01:37
模算法與NTT(有限域DFT)優(yōu)化我想使用NTT進(jìn)行快速平方(參見快速大平方計(jì)算),但是即使對于非常大的數(shù)字,結(jié)果也是緩慢的。超過12000位。所以我的問題是:有辦法優(yōu)化我的NTT變換嗎?我并不打算通過并行(線程)來加快它的速度;這只是低級層。有辦法加速我的模塊運(yùn)算嗎?這是我的(已經(jīng)優(yōu)化的)C+的NTT源代碼(它是完整的,100%工作在C+白化任何需要第三方庫,也應(yīng)該是線程安全的。請注意,源數(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時間(我的優(yōu)化使它加快了3倍多)。它只有1倍的循環(huán),所以它不是很精確(誤差~10%),但加速比即使現(xiàn)在也是明顯的(通常我會循環(huán)它1000倍或更多,但我的NTT太慢了)。你可以自由使用我的代碼.。只需保留我的Nick和/或鏈接到這個頁面的某個地方(rem in code,README.txt,約或諸如此類)。希望能幫上忙.。(我在任何地方都沒有看到用于快速NTT的C+源代碼,所以我不得不自己編寫它)。統(tǒng)一的根測試了所有接受的N,見fourier_NTT::init(DWORD n)功能。
查看完整描述

3 回答

  • 3 回答
  • 0 關(guān)注
  • 440 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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