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

Reply via email to