1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| PROCEDURE Produit_Dicho(P,Q:Poly;Var R:Poly;Degre:Integer);
VAR
P2,Q1,Q2,S1,S2 : Poly;
I,D,D1,D2 : INTEGER;
BEGIN
IF Degre=0
THEN R[0]:=P[0]*Q[0]
ELSE BEGIN
D1:=((Degre+1) DIV 2);
D:=D1-1;
I:=0;
FOR I:=0 TO D
DO BEGIN
P2[I]:=P[I+D1];
Q2[I]:=Q[I+D1];
S1[I]:=P[I]+P2[I];
S2[I]:=Q[I]+Q2[I];
END;
Produit_Dicho(P,Q,P,D);
Produit_Dicho(P2,Q2,P2,D);
Produit_Dicho(S1,S2,S1,D);
R:=P;
D2:=2*D+2;
R[D2-1]:=0;
FOR I:=0 TO 2*D
DO R[I+D2]:=P2[I];
FOR I:=0 TO 2*D
DO R[I+D1]:=R[I+D1]+S1[I]-(P[I]+P2[I]);
END;
END; |
Partager