Gauss's complex multiplication algorithm

wiki link for gauss multipilication

multi(x,y)

if |x| = |y| =1, then returen xy

break X into a,b and Y into c,d

e=multi(a,c) and f=multi(b,d)

return e* 10n +(multi(a+b,c+d)-e-f)10n/2+f

O(nlog23) < O(n2)

stack of frames list as below:

X=2133 X=2133 x=2133 x=2133 x=2133
Y=2312 Y=2312 y=2312 y=2312 y=2312
ac= ac= ac= ac= ac=483
bd= bd= bd= bd= bd=
(a+b)(c+d)= (a+b)(c+d) (a+b)(c+d)= (a+b)(c+d)= (a+b)(c+d)=
XY= XY xy= xy= xy=
         
x=21 X=21 x=21 x=21 x=33
y=23 Y=23 y=23 y=23 y=12
ac= ac=4 ac=4 ac=4 ac=3
bd= bd= bd=3 bd=3 bd=6
(a+b)(c+d)= (a+b)(c+d)= (a+b)(c+d)= (a+b)(c+d)=15 (a+b)(c+d)=18
XY= XY= XY= xy=483(4*102+(15-4-3)*10+3) xy=396
         
x=2 x=1 x=3   AND SO ON...
y=2 y=3 y=5    
xy=4 xy=3 xy=15    
                                                                                                                                                                

 

posted on 2012-02-20 20:39  grepp  阅读(188)  评论(0编辑  收藏  举报

导航