`kmul', `ksquare', `ktmul'
--------------------------

kmul(P1,P2)
     :: $B0lJQ?tB?9`<0$N9bB.>h;;(B

ksquare(P1)
     :: $B0lJQ?tB?9`<0$N9bB.(B 2 $B>h;;(B

ktmul(P1,P2,D)
     :: $B0lJQ?tB?9`<0$N9bB.>h;;(B ($BBG$A@Z$j<!?t;XDj(B)

RETURN
     $B0lJQ?tB?9`<0(B

P1 P2
     $B0lJQ?tB?9`<0(B

D
     $BHsIi@0?t(B

   * $B0lJQ?tB?9`<0$N>h;;$r(B Karatsuba $BK!$G9T$&(B.

   * $B4pK\E*$K$O(B `umul' $B$HF1MM$@$,(B, $B<!?t$,Bg$-$/$J$C$F$b(B FFT
     $B$rMQ$$$?9bB.2=$O9T$o$J$$(B.

   * GF(2^n) $B78?t$NB?9`<0$K$bMQ$$$k$3$H$,$G$-$k(B.

     [0] load("code/fff");
     1
     [34] setmod_ff(defpoly_mod2(160));
     x^160+x^5+x^3+x^2+1
     [35] A=randpoly_ff(100,x)$
     [36] B=randpoly_ff(100,x)$
     [37] umul(A,B)$
     umul : invalid argument
     return to toplevel
     [37] kmul(A,B)$

