CloseKernels[];Needs["SubKernels`LocalKernels`"]​​Block[{$mathkernel=$mathkernel<>" -threadpriority=2"},LaunchKernels[]]
In[]:=
{KernelObject[29,DigitalStorm-PC],KernelObject[30,DigitalStorm-PC],KernelObject[31,DigitalStorm-PC],KernelObject[32,DigitalStorm-PC],KernelObject[33,DigitalStorm-PC],KernelObject[34,DigitalStorm-PC],KernelObject[35,DigitalStorm-PC],KernelObject[36,DigitalStorm-PC],KernelObject[37,DigitalStorm-PC],KernelObject[38,DigitalStorm-PC],KernelObject[39,DigitalStorm-PC],KernelObject[40,DigitalStorm-PC],KernelObject[41,WIN-1AA39U1LQNT],KernelObject[42,WIN-1AA39U1LQNT],KernelObject[43,WIN-1AA39U1LQNT],KernelObject[44,WIN-1AA39U1LQNT],KernelObject[45,WIN-1AA39U1LQNT],KernelObject[46,WIN-1AA39U1LQNT],KernelObject[47,WIN-1AA39U1LQNT],KernelObject[48,WIN-1AA39U1LQNT],KernelObject[49,local],KernelObject[50,local],KernelObject[51,local],KernelObject[52,local],KernelObject[53,local],KernelObject[54,local],KernelObject[55,local],KernelObject[56,local]}
Out[]=
​
Print["Start time is ",ds=DateString[],"."];​​prec=1000000;​​(**Numberofrequireddecimals.*.*)ClearSystemCache[];​​T0=SessionTime[];​​expM[pre_]:=Module[{a,d,s,k,bb,c,end,iprec,xvals,x,pc,cores=16(*=4*numberofphysicalcores*),tsize=2^7,chunksize,start=1,ll,ctab,pr=Floor[1.005pre]},chunksize=cores*tsize;​​n=Floor[1.32pr];​​end=Ceiling[n/chunksize];​​Print["Iterations required: ",n];​​Print["Will give ",end," time estimates, each more accurate than the previous."];​​Print["Will stop at ",end*chunksize," iterations to ensure precsion of around ",pr," decimal places."];d=ChebyshevT[n,3];​​{b,c,s}={SetPrecision[-1,1.1*n],-d,0};​​iprec=Ceiling[pr/6912];​​Do[xvals=Flatten[Parallelize[Table[Table[ll=start+j*tsize+l;​​x=N[E^(Log[ll]/(ll)),iprec];​​​​​​pc=iprec;​​While[pc<pr/1024,pc=Min[3pc,pr/1024];​​x=SetPrecision[x,pc];​​y=x^ll-ll;​​x=x(1-2y/((ll+1)y+2llll));];​​(**N[Exp[Log[ll]/ll],pr/1024]**)​​​​​​x=SetPrecision[x,pr/256];​​xll=x^ll;z=(ll-xll)/xll;​​t=2ll-1;t2=t^2;​​x=x*(1+SetPrecision[4.5,pr/256](ll-1)/t2+(ll+1)z/(2llt)-SetPrecision[13.5,pr/256]ll(ll-1)1/(3llt2+t^3z));(*N[Exp[Log[ll]/ll],pr/256]*)​​​​x=SetPrecision[x,pr/64];​​xll=x^ll;z=(ll-xll)/xll;​​t=2ll-1;t2=t^2;​​x=x*(1+SetPrecision[4.5,pr/64](ll-1)/t2+(ll+1)z/(2llt)-SetPrecision[13.5,pr/64]ll(ll-1)1/(3llt2+t^3z));(**N[Exp[Log[ll]/ll],pr/64]**)​​​​x=SetPrecision[x,pr/16];​​xll=x^ll;z=(ll-xll)/xll;​​t=2ll-1;t2=t^2;​​x=x*(1+SetPrecision[4.5,pr/16](ll-1)/t2+(ll+1)z/(2llt)-SetPrecision[13.5,pr/16]ll(ll-1)1/(3llt2+t^3z));(**N[Exp[Log[ll]/ll],pr/16]**)​​​​x=SetPrecision[x,pr/4];​​xll=x^ll;z=(ll-xll)/xll;​​t=2ll-1;t2=t^2;​​x=x*(1+SetPrecision[4.5,pr/4](ll-1)/t2+(ll+1)z/(2llt)-SetPrecision[13.5,pr/4]ll(ll-1)1/(3llt2+t^3z));(**N[Exp[Log[ll]/ll],pr/4]**)​​​​​​x=SetPrecision[x,pr];​​xll=x^ll;z=(ll-xll)/xll;​​t=2ll-1;t2=t^2;​​x=x*(1+SetPrecision[4.5,pr](ll-1)/t2+(ll+1)z/(2llt)-SetPrecision[13.5,pr]ll(ll-1)1/(3llt2+t^3z));(*N[Exp[Log[ll]/ll],pr]*)​​​​x,{l,0,tsize-1}],{j,0,cores-1}]]];​​ctab=ParallelTable[Table[c=b-c;​​ll=start+l-2;​​b*=2(ll+n)(ll-n)/((ll+1)(2ll+1));​​c,{l,chunksize}],Method"Automatic"];​​s+=ctab.(xvals-1);​​start+=chunksize;​​st=SessionTime[]-T0;kc=k*chunksize;​​ti=(st)/(kc+10^-4)*(n)/(3600)/(24);​​Print[kc," iterations done in ",N[st,4]," seconds."," Should take ",N[ti,4]," days or ",N[ti*24*3600,4],"s, finish ",DatePlus[ds,ti],"."],{k,0,end-1}];​​N[-s/d,pr]];​​t2=Timing[MRBtest2=expM[prec];];Print["Finished on ",DateString[],". Proccessor time was ",t2[[1]]," s."];Print["Actual time was ",st];​​(*Print[*)MRBtest2(*]*)(*Remove(**)orenterMRBtest2toprintoutput*);Print["Enter MRBtest2 to print ",Floor[Precision[MRBtest2]]," digits"];Print["If you saved m3M, the difference between this and 3,014,991 known digits is ",N[MRBtest2-m3M,10]]
In[]:=
Start time is Sat 17 Oct 2020 08:58:22.
Iterations required: 1326598
Will give 648 time estimates, each more accurate than the previous.
Will stop at 1327104 iterations to ensure precsion of around 1004999 decimal places.
0 iterations done in 198.9 seconds. Should take 3.054×
7
10
days or 2.638×
12
10
s, finish Fri 19 Jul 85624 11:37:47.
2048 iterations done in 409.0 seconds. Should take 3.066 days or 2.649×
5
10
s, finish Tue 20 Oct 2020 10:33:39.
4096 iterations done in 621.9 seconds. Should take 2.331 days or 2.014×
5
10
s, finish Mon 19 Oct 2020 16:55:31.
6144 iterations done in 836.7 seconds. Should take 2.091 days or 1.807×
5
10
s, finish Mon 19 Oct 2020 11:09:25.
8192 iterations done in 1051. seconds. Should take 1.969 days or 1.702×
5
10
s, finish Mon 19 Oct 2020 08:14:21.
10240 iterations done in 1268. seconds. Should take 1.902 days or 1.643×
5
10
s, finish Mon 19 Oct 2020 06:37:15.
12288 iterations done in 1486. seconds. Should take 1.857 days or 1.605×
5
10
s, finish Mon 19 Oct 2020 05:32:33.
14336 iterations done in 1706. seconds. Should take 1.827 days or 1.578×
5
10
s, finish Mon 19 Oct 2020 04:49:04.
16384 iterations done in 1926. seconds. Should take 1.805 days or 1.559×
5
10
s, finish Mon 19 Oct 2020 04:17:10.
18432 iterations done in 2147. seconds. Should take 1.788 days or 1.545×
5
10
s, finish Mon 19 Oct 2020 03:53:28.
20480 iterations done in 2369. seconds. Should take 1.776 days or 1.534×
5
10
s, finish Mon 19 Oct 2020 03:35:44.