25%~999-593 16.24 Not "6.24" - cut&paste error. On Thu, Jul 25, 2019 at 12:10 PM Devon McCormick <[email protected]> wrote:
> One could estimate the rate of increase: > 6!:2 'rrl=. (<999j997)":&>ramaE 10*>:i.30' > 5.2899 > +/"1 *./\"1]2=/\rrl NB. Count number of matching digits. > 9 21 35 51 67 84 103 122 140 161 182 202 223 244 266 288 311 333 355 379 > 402 425 449 472 496 520 544 569 593 > 2-~/\+/"1 *./\"1]2=/\rrl NB. Increase in # digits for each increment > of 10 > 12 14 16 16 17 19 19 18 21 21 20 21 21 22 22 23 22 22 24 23 23 24 23 24 24 > 24 25 24 > 999-593 NB. How long before we hit 999? > 406 > 25%~999-593 NB. So, assuming about 25 digits per argument increase of > 10, > 6.24 > 30+16.24 NB. we should be good up to 46 (46*10)... > 46.24 > > 6!:2 'rrl=. (<999j997)":&>ramaE 10*>:i.50' > 37.1901 > +/"1 *./\"1]2=/\rrl NB. Count number of matching digits. > 9 21 35 51 67 84 103 122 140 161 182 202 223 244 266 288 311 333 355 379 > 402 425 449 472 496 520 544 569 593 618 643 668 693 717 744 770 795 821 847 > 873 898 925 950 978 999 999 999 999 999 > NB. Last 5 exceeded precision, so our guess was approximately correct. > > > On Thu, Jul 25, 2019 at 11:41 AM Raul Miller <[email protected]> > wrote: > >> Any idea how to quickly find the order of magnitude needed for the >> left argument to ": for this approach? >> >> Thanks, >> >> -- >> Raul >> >> On Thu, Jul 25, 2019 at 11:38 AM Devon McCormick <[email protected]> >> wrote: >> > >> > In case it's not clear from the J code, I'm evaluating this continued >> > fraction: >> > e = 3 + _1 >> > -------------- >> > 4 + _2 >> > ---------- >> > 5 + _3 >> > ------- >> > 6 + _4 >> > ---- >> > 7 + ... >> > >> > On Thu, Jul 25, 2019 at 11:32 AM Devon McCormick <[email protected]> >> wrote: >> > >> > > I recently posted something about using a (Ramanujan-like) continued >> > > fraction for calculating e: >> > > ramaE=: ([: +`%`:3 [: , [: x: (3 + i.) ,. [: - [: >: i.)"0 >> > > ramaE 10 >> > > 9864101r3628800 >> > > 50j48 ": ramaE 10 NB. Format as decimal >> > > 2.718281801146384479717813051146384479717813051146 >> > > 50j48 ": ramaE 20 NB. More precision... >> > > 2.718281828459045235339784490666415886146403434540 >> > > 50j48 ": ramaE 50 NB. Even more precision... >> > > 2.718281828459045235360287471352662497757247093700 >> > > 50j48 ": ramaE 80 NB. More than 48 digits? >> > > 2.718281828459045235360287471352662497757247093700 >> > > 102j100 ": ramaE 80 NB. Yes - more than 48 digits? >> > > >> > > >> 2.7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251664274 >> > > >> > > This appears to add more digits quickly as you increase the >> argument. You >> > > can tell how many digits are good by comparing a given run with one >> using a >> > > higher value: >> > > try2=. ramaE 80 90 >> > > try2 >> > > >> 194545954561539067326581042506243811231423891946873480598031074615399345559765318585225493549256921092507319165187339201r71569457046263802294811533723186532165584657342365752577109445058227039255480148842668944867280814080000000000000000000 >> > > 119434520557937... >> > > =/102j100":&>try2 >> > > 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 >> 1 1 >> > > 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 >> 1 1 1 >> > > 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 >> > > =/202j200":&>try2 >> > > 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 >> 1 1 >> > > 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 >> 1 1 1 >> > > 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 >> 1 1 1 >> > > 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 ... >> > > 0 i.~ =/202j200":&>try2 >> > > 122 >> > > So "ramaE 80" gives us e to 122 digits (120 decimal digits). >> > > >> > > >> > > >> > > On Thu, Jul 25, 2019 at 11:04 AM Ulrich Vollert <[email protected]> >> wrote: >> > > >> > >> Hello, >> > >> >> > >> I came across ’The Google Test’ by Eugene McDonnell ( >> > >> https://www.jsoftware.com/papers/play211.htm < >> > >> https://www.jsoftware.com/papers/play211.htm>) and was wondering >> how to >> > >> calculate many digits of Euler’s number e. >> > >> >> > >> I found an (ancient) article "The calculation of e to many >> significant >> > >> digits" by A. H. J. Sale in The Computer Journal 11(2) · August 1968 >> ( >> > >> >> https://www.researchgate.net/publication/266281843_The_Calculation_of_e_to_Many_Significant_Digits >> > >> < >> > >> >> https://www.researchgate.net/publication/266281843_The_Calculation_of_e_to_Many_Significant_Digits >> >) >> > >> which uses a clever algorithm implemented in Algol 60 (!) to >> calculate e >> > >> digit by digit and using only integer arithmetic. >> > >> >> > >> With this algorithm in J (see below) I could calculate as many >> digits of >> > >> e as I want (I used 140 digits) and solved the Google Test which >> asks for: >> > >> >> > >> 1. First 10-digit prime found in consecutive digits of e. >> > >> >> > >> 2. The number F(5) which follows >> > >> >> > >> F(1)= 7182818284 >> > >> F(2)= 8182845904 >> > >> F(3)= 8747135266 >> > >> F(4)= 7427466391 >> > >> F(5)=__________ >> > >> >> > >> (BTW In the article of Eugene McDonell the second number F(2) >> contains >> > >> transposed digits 9 and 0.) >> > >> >> > >> Here is my question: >> > >> >> > >> How would you calculate many significant digits of e in J? >> > >> >> > >> Regards, >> > >> Ulrich >> > >> >> > >> >> > >> NB. *** problem 1 *** >> > >> >> > >> NB. value to check m >> > >> checkm =: 3 : 0 >> > >> r =. -: ^. 6.2831852 * y >> > >> r + y * (^. y) - 1 >> > >> ) >> > >> >> > >> NB. given the number of digits of e which are wanted, >> > >> NB. calculate the number of required terms >> > >> number_of_terms =: 3 : 0 >> > >> test =. 2.30258509 * >: y >> > >> (>: ^: (test&>: @: checkm) ^:_) 4 >> > >> ) >> > >> >> > >> NB. from JforC >> > >> LoopWithInitial =: 2 : 'u&.>/\.&.(,&(<v))&.|.&.(<"_1)' >> > >> >> > >> NB. x is coeff and y is j, carry, follwed by the coeffs so far >> > >> NB. answer are the next j and carry, the new coeff, and old coeffs >> > >> term =: 4 : 0 >> > >> j =. {. y >> > >> carry =. 1 { y >> > >> coeffs =. 2 }. y >> > >> temp =. carry + 10 * x >> > >> (<: j), ((0, j) #: temp), coeffs >> > >> ) >> > >> >> > >> NB. initialise with m >> > >> init =: 3 : 0 >> > >> term LoopWithInitial (y, 0) (<: y) $ 1 >> > >> ) >> > >> >> > >> NB. given is an output of term LoopWithInitial >> > >> NB. find next output >> > >> next =: 3 : 0 >> > >> NB. take last row of output of term LoopWithInitial >> > >> NB. the row contains: j carry coeffs >> > >> last =. {: y >> > >> NB. carry is the next digit of e, forget j >> > >> ee =: ee , ": 1 { last >> > >> term LoopWithInitial ((<: #last), 0) |. 2 }. last >> > >> ) >> > >> >> > >> NB. calculate the number of digits of e >> > >> NB. the digits are collected in a global variable ee >> > >> calc_e =: 3 : 0 >> > >> ee =: '' >> > >> next^:y init number_of_terms y >> > >> ee >> > >> ) >> > >> >> > >> digits_e =: ". 10 ]\ calc_e 140 >> > >> >> > >> solution1 =: {. (I. 1 p: digits_e) { digits_e >> > >> NB. -> 7427466391 >> > >> >> > >> NB. *** problem 2 *** >> > >> >> > >> NB. cross sum of a number >> > >> csum =: 3 : '+/ "."0 ": y' >> > >> >> > >> NB. the given numbers have all the same cross sum of 49 >> > >> NB. csum"0 (7182818284 8182845904 8747135266 7427466391) -> 49 49 49 >> 49 >> > >> >> > >> NB. find the next number in the digits of e with a cross sum of 49 >> > >> solution2 =: 4 }. (] {~ [: I. 49 = csum"0) digits_e >> > >> NB. -> 5966290435 >> > >> >> > >> >> > >> >> > >> >> > >> >> ---------------------------------------------------------------------- >> > >> For information about J forums see >> http://www.jsoftware.com/forums.htm >> > >> >> > > >> > > >> > > -- >> > > >> > > Devon McCormick, CFA >> > > >> > > Quantitative Consultant >> > > >> > > >> > >> > -- >> > >> > Devon McCormick, CFA >> > >> > Quantitative Consultant >> > ---------------------------------------------------------------------- >> > For information about J forums see http://www.jsoftware.com/forums.htm >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm >> > > > -- > > Devon McCormick, CFA > > Quantitative Consultant > > -- Devon McCormick, CFA Quantitative Consultant ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
