# Maple code for generating the Maple timings in Table 2 getpol := proc(X,d,a,t) local j,e,c,x,f; e := rand(0..d): c := rand(1..a): f := add( c()*mul(x^e(),x=X), j=1..t ); while nops(f) < t do f := f + add( c()*mul(x^e(),x=X), j=1..t-nops(f) ); od; f; end: kernelopts(numcpus=1); n := 6; t := 500; # t := 2000 for d in [10,15,20,40,60,80] do X := [seq(x||i, i=1..n)]; f := x1^d+getpol(X,d,1000,t-1): g := x1^d+getpol(X,d,1000,t-1): a := expand(f*g): printf("t=%d #a=%d\n",t,nops(a)); st := time(); b := factor(a); tt := time(); printf("time=%10.3f\n",tt-st); od: