reduiten(alpha,p):={ local l,k,ld,lt,st,s,q,lred,redu; ld:=r2dfc(alpha,p); l:=ld[0]; s:= size(l); if (s<p) { lt:=ld[1]; st:=size(lt); if (st!=0){ q:=iquo(p-s,st); for (j:=0;j<=q; j++){ l:= concat(l,lt) } } else { p:=s; } } lred:=[]; for (k:=1;k<=p;k++){ redu:=dfc2r(mid(l,0,k),[]); lred:=append(lred,redu); } return (lred); };reduiten(sqrt(53),5)
On écrit maintenant le programme reduite permettant d'obtenir les p premières réduites de alpha, en se servant de la fonction dfc2reduites écrite auparavant et qui utilise les relations de récurrence.
reduite(alpha,p):={ local l,ld,lt,st,s,q,lred; ld:=r2dfc(alpha,p); l:=ld[0]; s:= size(l); if (s<p) { lt:=ld[1]; st:=size(lt); if (st!=0){ q:=iquo(p-s,st); for (j:=0;j<=q; j++){ l:= concat(l,lt) } } } l:= mid(l,0,p); lred:=dfc2reduites(l); return lred; }On tape :