\mnb150ÿ{\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fswiss\fprq2 System;}{\f3\froman\fcharset1 Times New Roman;}{\f4\fmodern\fprq1 Courier New;}}
{\colortbl\red0\green0\blue0;\red255\green0\blue0;\red0\green0\blue255;}
\deflang1031\pard\ri4\plain\f3\fs22\cf0 01.
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs22\cf1 {\pntext\f1\'b7\tab}PolynomialKaratsuba:=proc(pol1,pol2,x)
\par \pard\li600\ri1\fi-300\plain\f4\fs22\cf1 local list1,list2,list3,l,deg1,deg2;
\par begin
\par deg1:=degree(pol1);
\par deg2:=degree(pol2);
\par list1:=[coeff(pol1,deg1-i) $ i=0..deg1];
\par list2:=[coeff(pol2,deg2-i) $ i=0..deg2];
\par list3:=ListKaratsuba(list1,list2);
\par l:=nops(list3);
\par sum(list3[l-k]*x^k,k=0..l-1)
\par end_proc:
\par \pard\ri4\plain\f3\fs22\cf0 02.
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs22\cf1 {\pntext\f1\'b7\tab}ListKaratsuba:=proc(list1,list2)
\par \pard\li600\ri1\fi-300\plain\f4\fs22\cf1 option remember;
\par local n,m,nn,mm,a,b,c,d,list1neu,list2neu,amalc,bmald,tab,mittelterm;
\par begin
\par if min(nops(list1),nops(list2))=1
\par then return(list1[1]*list2[1])
\par else nn:=nops(list1);
\par mm:=nops(list2);
\par m:=max(nn,mm);
\par n:=1;
\par while n