En faisant le développement de Taylor de P en r à l'ordre degré de P, on voit que cela équivaut à :
On peut donc détecter les racines de multiplicité supérieure à 1 en cherchant un facteur commun à P et P', en effet x - r divisera P et P'.
Il existe un algorithme (dû à Yun) qui permet d'écrire un polynome quelconque comme produit de polynômes dont les racines sont simples en effectuant uniquement des calculs de PGCD de polynomes.
yun(P):= { local W,Y,G,res; W:=P; Y:=diff(W,x); res:=NULL; while(true){ if (Y==0) { return res[1..size(res)-1],W; }; G:=gcd(Y,W); res:=res,G; W:=normal(W/G); Y:=normal(Y/G-diff(W,x)); }; }L'instruction
squarefree
ou équivalente
de votre logiciel de calcul formel effectue cette décomposition.