MathGroup Archive 2013

[Date Index] [Thread Index] [Author Index]

Search the Archive

Record computation of the MRB constant

  • To: mathgroup at smc.vnet.net
  • Subject: [mg132071] Record computation of the MRB constant
  • From: Marvin Burns <marvin at marvinrayburns.com>
  • Date: Sat, 30 Nov 2013 02:25:45 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-outx@smc.vnet.net
  • Delivered-to: mathgroup-newsendx@smc.vnet.net
  • Reply-to: Marvin Burns <marvin at marvinrayburns.com>

See http://www.perfscipress.com/papers/UniversalTOC25.pdf (page 28 and 29) and S. R. Finch, Mathematical Constants, Cambridge, 2003, page 450.
Would anybody here be interested in improving, or just using, a little Mathematica program by the late Richard Crandall to break a record? He used it to compute 1,048,576 digits in 275,000 seconds, or 76.4 hours. That's on a 2.93 Ghz 8-core Nehalem. I computed a  much slower 2,009,991 digits using only around 10GB of RAM taking  3,215,207.1870579 seconds or 893.1131075161 hours on a 3.2 GH 6 core Intel(R) Core(TM) i7-3930K.

Here is the program as he left it, where MRBtest3 is any known approximation. The computation is saved as MRBtest2.
(*Fastest(at RC's end)as of 30Nov2012.*)prec=500000;(*Numberof \ required decimals.*)ClearSystemCache[];T0 
SessionTime[];expM[pre_]:=Module[{a,d,s,k,bb,c,n,end,iprec,xvals,x,pc,cores =4,tsize =2^7,chunksize,start =1,ll,ctab,pr =Floor[1.02pre]},chunksize =cores*tsize;n =Floor[1.32pr];end =Ceiling[n/chunksize];Print["Iterations required: ",n];Print["end ",end];Print[end*chunksize];d = N[(3+Sqrt[8])^n,pr +10];d =Round[1/2(d +1/d)];{b,c,s}={SetPrecision[-1,1.1*n],-d,0};iprec =Ceiling[pr/27];Do[xvals =Flatten[ParallelTable[Table[ll =start +j*tsize +l;x =N[E^(Log[ll]/(ll)),iprec];pc =iprec;While[pc <pr,pc =Min[3pc,pr];x =SetPrecision[x,pc];y =x^ll -ll;x =x (1-2y/((ll +1)y +2ll ll));];(*N[Exp[Log[ll]/ll],pr]*)x,{l,0,tsize -1}],{j,0,cores -1},Method->"EvaluationsPerKernel"->1]];ctab =Table[c =b -c;ll =start +l -2;b *=2(ll +n)(ll -n)/((ll +1)(2ll +1));c,{l,chunksize}];s +=ctab.(xvals -1);start +=chunksize;Print["done iter ",k*chunksize,"
 ",SessionTime[]-T0];,{k,0,end -1}];N[-s/d,pr]];t2 =Timing[MRBtest2=expM[prec];];MRBtest2-MRBtest3



  • Prev by Date: Re: Cubic Bezier Curves Intersection
  • Previous by thread: LocatorPane and tooltips for the locators