/* $Id: d-gcd.rr,v 1.2 2003/02/23 23:24:09 taka Exp $ */ ord([d,x])$ def d_mult(F,G){ /* return F*G; */ N=deg(nm(F),d); A=0; for(K=0;K<=N;K++){ A=A+(1/fac(K))*diff2(F,d,K)*diff2(G,x,K); } return A; } def diff2(F,G,K){ for(I=0;I= deg(nm(G),d))) { D = red(in(R)/in(G)); Q = red(Q+D); R = red(R-d_mult(D,G)); } return([Q,R]); } def g_c_d(F,G) { if (deg(nm(F),d) > deg(nm(G),d)) { S = F; T = G; }else { S = G; T = F; } while (T != 0) { R = division(S,T)[1]; S = T; T = R; } return(S); } end$