In[]:=
Print["Start time is ",ds=DateString[],"."];prec=15000;ClearSystemCache[];T0=SessionTime[];expM[pre_]:=Module[{a,d,s,k,bb,c,end,iprec,xvals,x,pc,cores=16,tsize=2^7,chunksize,start=1,ll,ctab,pr=Floor[7000/6795pre]},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=pr/2^6;Do[xvals=Flatten[ParallelTable[Table[ll=start+j*tsize+l;x=N[E^(Log[ll]/(ll)),iprec];pc=iprec;While[pc<pr,pc=Min[4pc,pr];x=SetPrecision[x,pc];xll=x^ll;z=(ll-xll)/xll;t=2ll-1;t2=t^2;x=x*(1+SetPrecision[4.5,pc](ll-1)/t2+(ll+1)z/(2llt)-SetPrecision[13.5,2pc]ll(ll-1)/(3llt2+t^3z))];x,{l,0,tsize-1}],{j,0,cores-1},Method"EvaluationsPerKernel"16]];ctab=ParallelTable[Table[c=b-c;ll=start+l-2;b*=2(ll+n)(ll-n)/((ll+1)(2ll+1));c,{l,chunksize}],Method"EvaluationsPerKernel"16];s+=ctab.(xvals-1);start+=chunksize;st=SessionTime[]-T0;kc=k*chunksize;ti=(st)/(kc+10^-10)*(n)/(3600)/(24);If[kc>1,Print[kc," iterations done in ",N[st-stt,4]," seconds."," Should take ",N[ti,4]," days or ",ti*3600*24,"s, finish ",DatePlus[ds,ti],"."],Print["Denominator computed in ",stt=st,"s."]];,{k,0,end-1}];N[-s/d,pr]];t2=Timing[MRBtest2=expM[prec];];Print["Finished on ",DateString[],". Processor and total time were ",t2[[1]]," and ",st," s respectively."];MRBtest2;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-m7k,10]]
Start time is Fri 18 May 2018 15:53:13.
Iterations required: 20396
Will give 10 time estimates, each more accurate than the previous.
Will stop at 20480 iterations to ensure precsion of around 15452 decimal places.
Denominator computed in 4.4127344s.
2048 iterations done in 4.594 seconds. Should take 0.001038 days or 89.696493s, finish Fri 18 May 2018 15:54:42.
4096 iterations done in 9.102 seconds. Should take 0.0007789 days or 67.298239s, finish Fri 18 May 2018 15:54:20.
6144 iterations done in 13.82 seconds. Should take 0.0007006 days or 60.531143s, finish Fri 18 May 2018 15:54:13.
8192 iterations done in 18.59 seconds. Should take 0.0006628 days or 57.262880s, finish Fri 18 May 2018 15:54:10.
10240 iterations done in 23.38 seconds. Should take 0.0006408 days or 55.363007s, finish Fri 18 May 2018 15:54:08.
12288 iterations done in 28.43 seconds. Should take 0.0006310 days or 54.520366s, finish Fri 18 May 2018 15:54:07.
14336 iterations done in 33.30 seconds. Should take 0.0006210 days or 53.658144s, finish Fri 18 May 2018 15:54:06.
16384 iterations done in 38.22 seconds. Should take 0.0006142 days or 53.0683072s, finish Fri 18 May 2018 15:54:06.
18432 iterations done in 43.23 seconds. Should take 0.0006102 days or 52.7223249s, finish Fri 18 May 2018 15:54:05.
Finished on Fri 18 May 2018 15:54:01. Processor and total time were 26.8594 and 47.6455135 s respectively.
Enter MRBtest2 to print 15446 digits
If you saved m3M, the difference between this and 3,014,991 known digits is 0.1878596425-1.000000000m7k
7000/6795
Out[]=
1.03017
In[]:=
Print["If you saved m3M, the difference \between this and 3,014,991 known digits is ",N[MRBtest2-m7k,10]]
If you saved m3M, the difference between this and 3,014,991 known digits is 7.144866024×
-15250
10