# Maple code for generating the timings for Maple in Table 1 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; # n := 9; d := 7; for t in [100,500,1000,2000,4000,8000] 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: