from GCD of Polynomials by Feng Cheng Chang
Find polynomial GCD by "Leading-coefficient Elinimation"

poly_gcd(p,q)
function g = poly_gcd(p,q)
% *** Find polymonial GCD by "Leading-coefficient-Elimination" ***
%     F C Chang    revised   10/05/09

      n = length(p)-1;  nc = max(find(p))-1;
      m = length(q)-1;  mc = max(find(q))-1;
      nz = zeros(1,min(n-nc,m-mc));
   if nc*mc == 0, g = [1,nz];  return,  end;
      g1 = p(1:nc+1);   g2 = q(1:mc+1);
  while(1),
      g3 = [g1,zeros(1,length(g2)-length(g1))]-(g1(1)/g2(1))*  ...
           [g2,zeros(1,length(g1)-length(g2))];
   if norm(g3,inf)/norm(g1,inf) < 1.e-3,  break;  end;
   if length(g1) > length(g2),  g1 = g2;    end;
      g2 = g3(min(find(abs(g3)>1.e-10)):max(find(abs(g3)>1.e-10))); 
  end;
      g = [g1/g1(1),nz];

Contact us