Barrett And Montgomery of Polynomials

Barrett reduction of polynomials

对于

f

,

g

Z

p

[

x

]

f,g in Z_p[x]

f,gZp[x],其中

p

p

p是素数。那么:

f

m

o

d

  

g

=

f

f

g

g

f mod g = f - lfloor frac{f}{g} rfloor g

fmodg=fgfg
其中的分式属于分式域:

1

/

g

{

f

g

f

,

g

Z

p

[

x

]

}

1/g in { dfrac{f}{g} | f,g in Z_p[x] }

1/g{gff,gZp[x]}

我们寻找一个

m

Z

p

[

x

]

m in Z_p[x]

mZp[x],使得:

1

g

=

m

R

frac{1}{g} = frac{m}{R}

g1=Rm
其中,

R

=

x

k

Z

p

[

x

]

R=x^k in Z_p[x]

R=xkZp[x]

k

k

k是某个正整数

那么选取:

m

=

R

g

Z

p

[

x

]

m = lfloor frac{R}{g} rfloor in Z_p[x]

m=gRZp[x]
误差大小为:

e

=

1

g

R

g

R

e = frac{1}{g} - dfrac{lfloor frac{R}{g} rfloor}{R}

e=g1RgR
于是,

f

m

o

d

  

g

f

f

m

R

g

f mod g approx f - lfloor frac{f cdot m}{R} rfloor g

fmodgfRfmg
选取足够大的

k

k

k,使得

f

e

f cdot e

fe的系数足够小,那么:

f

m

o

d

  

g

=

f

(

(

f

m

)

k

)

g

Z

p

[

x

]

f mod g = f - ((f cdot m) gg k) g in Z_p[x]

fmodg=f((fm)k)gZp[x]
这里的

gg

运算定义为

(

i

=

0

n

1

a

i

x

i

k

)

:

=

i

=

k

n

1

a

i

x

i

k

(sum_{i=0}^{n-1}a_i x^i gg k) := sum_{i=k}^{n-1}a_i x^{i-k}

(i=0n1aixik):=i=kn1aixik

Montgomery multiplication of polynomials

对于

f

,

g

,

h

Z

p

[

x

]

f,g,h in Z_p[x]

f,g,hZp[x],其中

p

p

p是素数。计算:

f

g

m

o

d

  

h

f cdot g mod h

fgmodh

首先,寻找

R

=

x

k

Z

p

[

x

]

R=x^k in Z_p[x]

R=xkZp[x],其中

k

k

k是某个正整数,使得

g

c

d

(

R

,

h

)

=

1

gcd(R,h)=1

gcd(R,h)=1

计算:

h

1

h

1

m

o

d

  

R

R

1

R

1

m

o

d

  

h

h^{-1} cdot h equiv 1 mod R\ R^{-1} cdot R equiv 1 mod h\

h1h1modRR1R1modh
做可逆映射:

f

=

f

R

m

o

d

  

h

g

=

g

R

m

o

d

  

h

overline{f} = f R mod h\ overline{g} = g R mod h\

f=fRmodhg=gRmodh
那么

f

g

=

f

g

R

=

f

g

R

1

m

o

d

  

h

overline{f g} = f g R = overline{f} cdot overline{g} cdot R^{-1} mod h

fg=fgR=fgR1modh
简记

T

=

f

g

T = overline{f} cdot overline{g}

T=fg,则

f

g

=

T

R

1

overline{f g} = TR^{-1}

fg=TR1

寻找

m

Z

p

[

x

]

m in Z_p[x]

mZp[x],使得

R

T

+

m

h

R mid T+mh

RT+mh
那么

T

+

m

h

0

m

o

d

  

R

T+mh equiv 0 mod R

T+mh0modR
从而

m

=

T

h

1

m

o

d

  

R

m = -Th^{-1} mod R

m=Th1modR
于是

f

g

(

T

+

m

h

)

R

1

=

(

T

(

T

h

1

m

o

d

  

R

)

h

)

R

1

m

o

d

  

h

overline{f g} equiv (T+mh)R^{-1} = (T-(Th^{-1} mod R) cdot h) cdot R^{-1} mod h

fg(T+mh)R1=(T(Th1modR)h)R1modh
由于

R

=

x

k

R=x^k

R=xk,所以

f

g

=

(

T

L

o

w

k

(

T

h

1

)

h

)

k

overline{f g} = (T-Low_k(Th^{-1}) cdot h) gg k

fg=(TLowk(Th1)h)k
这里定义

L

o

w

k

(

i

=

0

n

1

a

i

x

i

)

:

=

i

=

0

min

(

k

,

n

)

1

a

i

x

i

Low_k(sum_{i=0}^{n-1}a_i x^i) := sum_{i=0}^{min(k,n)-1}a_i x^i

Lowk(i=0n1aixi):=i=0min(k,n)1aixi

最后,做逆映射

f

g

=

f

g

R

1

m

o

d

  

h

fg = overline{f g} R^{-1} mod h

fg=fgR1modh,计算方法与上述的计算

T

R

1

m

o

d

  

h

TR^{-1} mod h

TR1modh的过程相同。其实叫做:Montgomery reduction

与Barrett不同,这里选取任意的

k

k

k值,结果都是正确的。但如果

k

<

n

k<n

k<n,计算出的结果可能是冗余的。

总结

  • Barrett reduction of polynomials:将多项式取模运算,转化为多项式乘法以及“右移”。
  • Montgomery multiplication of polynomials:将多项式模乘运算,转化为多项式乘法、“截断”以及“右移”。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>