6,000,000 digits of the MRB constant

The time given is Pacific time.

CloseKernels[]

Needs["SubKernels`LocalKernels`"]
Block[{$mathkernel=$mathkernel<>" -threadpriority=2"},LaunchKernels[]]

Print["Start time is ",ds=DateString[],"."];
prec=6000000;
(**Number of required decimals.*.*)ClearSystemCache[];
T0=SessionTime[];
expM[pre_]:=Module[{a,d,s,k,bb,c,end,iprec,xvals,x,pc,cores=16(*=4*number of physical cores*),tsize=2^7,chunksize,start=1,ll,ctab,pr=Floor[1.005 pre]},chunksize=cores*tsize;
n=Floor[1.32 pr];
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/396288];
Do[xvals=Flatten[Parallelize[Table[Table[ll=start+j*tsize+l;
x=N[E^(Log[ll]/(ll)),iprec];
pc=iprec;
While[pc<pr/65536,pc=Min[3 pc,pr/65536];
x=SetPrecision[x,pc];
y=x^ll-ll;
x=x (1-2 y/((ll+1) y+2 ll ll));];
(**N[Exp[Log[ll]/ll],pr/99072]**)x=SetPrecision[x,pr/16384];
xll=x^ll;z=(ll-xll)/xll;
t=2 ll-1;t2=t^2;
x=x*(1+SetPrecision[4.5,pr/16384] (ll-1)/t2+(ll+1) z/(2 ll t)-SetPrecision[13.5,pr/16384] ll (ll-1) 1/(3 ll t2+t^3 z));(*N[Exp[Log[ll]/ll],pr/4096]*)x=SetPrecision[x,pr/4096];
xll=x^ll;z=(ll-xll)/xll;
t=2 ll-1;t2=t^2;
x=x*(1+SetPrecision[4.5,pr/4096] (ll-1)/t2+(ll+1) z/(2 ll t)-SetPrecision[13.5,pr/4096] ll (ll-1) 1/(3 ll t2+t^3 z));(*N[Exp[Log[ll]/ll],pr/4096]*)x=SetPrecision[x,pr/1024];
xll=x^ll;z=(ll-xll)/xll;
t=2 ll-1;t2=t^2;
x=x*(1+SetPrecision[4.5,pr/1024] (ll-1)/t2+(ll+1) z/(2 ll t)-SetPrecision[13.5,pr/1024] ll (ll-1) 1/(3 ll t2+t^3 z));(*N[Exp[Log[ll]/ll],pr/1024]*)x=SetPrecision[x,pr/256];
xll=x^ll;z=(ll-xll)/xll;
t=2 ll-1;t2=t^2;
x=x*(1+SetPrecision[4.5,pr/256] (ll-1)/t2+(ll+1) z/(2 ll t)-SetPrecision[13.5,pr/256] ll (ll-1) 1/(3 ll t2+t^3 z));(*N[Exp[Log[ll]/ll],pr/256]*)x=SetPrecision[x,pr/64];
xll=x^ll;z=(ll-xll)/xll;
t=2 ll-1;t2=t^2;
x=x*(1+SetPrecision[4.5,pr/64] (ll-1)/t2+(ll+1) z/(2 ll t)-SetPrecision[13.5,pr/64] ll (ll-1) 1/(3 ll t2+t^3 z));(**N[Exp[Log[ll]/ll],pr/64]**)x=SetPrecision[x,pr/16];
xll=x^ll;z=(ll-xll)/xll;
t=2 ll-1;t2=t^2;
x=x*(1+SetPrecision[4.5,pr/16] (ll-1)/t2+(ll+1) z/(2 ll t)-SetPrecision[13.5,pr/16] ll (ll-1) 1/(3 ll t2+t^3 z));(**N[Exp[Log[ll]/ll],pr/16]**)x=SetPrecision[x,pr/4];
xll=x^ll;z=(ll-xll)/xll;
t=2 ll-1;t2=t^2;
x=x*(1+SetPrecision[4.5,pr/4] (ll-1)/t2+(ll+1) z/(2 ll t)-SetPrecision[13.5,pr/4] ll (ll-1) 1/(3 ll t2+t^3 z));(**N[Exp[Log[ll]/ll],pr/4]**)x=SetPrecision[x,pr];
xll=x^ll;z=(ll-xll)/xll;
t=2 ll-1;t2=t^2;
x=x*(1+SetPrecision[4.5,pr] (ll-1)/t2+(ll+1) z/(2 ll t)-SetPrecision[13.5,pr] ll (ll-1) 1/(3 ll t2+t^3 z));(*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) (2 ll+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);
If[kc>1,Print["As of  ",DateString[]," there were ",kc," iterations done in ",N[st,5]," seconds. That is ",N[kc/st,5]," iterations/s. ",N[kc/(end*chunksize)*100,7],"% complete."," It should take ",N[ti,6]," days or ",N[ti*24*3600,4],"s, and finish ",DatePlus[ds,ti],"."]];
Print[];,{k,0,end-1}];
N[-s/d,pr]];
t2=Timing[MRB1=expM[prec];];Print["Finished on ",DateString[],". Proccessor and actual time were ",t2[[1]]," and ",SessionTime[]-T0," s. respectively"];
Print["Enter MRB1 to print ",Floor[Precision[MRB1]]," digits. The error from a 5,000,000 or more digit calculation that used a different method is  "];N[MRB-MRB1,20]

Pacific time UTC-8:00(above) vs Eatern UTC-5:00: