Goodness!  I don't know whether to be pleased that I wrote it (I mean, the
code is pretty good), or sad that I forgot that I wrote it.



On Tue, Dec 22, 2020 at 4:52 PM chris burke <cbu...@jsoftware.com> wrote:

> See also Roger's essay:
>
> https://code.jsoftware.com/wiki/Essays/Chudnovsky_Algorithm
>
> On Tue, Dec 22, 2020 at 3:22 PM Hauke Rehr <hauke.r...@uni-jena.de> wrote:
> >
> > a worthy read, thanks
> >
> > I think I fell in love with J in part
> > due to its notationally pleasant guise
> > There are so many debates in notation.
> > I personally prefer τ over π but I’m
> > okay with o.1 and 1p1 meaning πª
> > (I’d like to have 1t1 at my disposal);
> > and I’m unsure about the Triangle of Power
> > but I think it’s worth considering,
> > at least in education;
> > etc. etc.
> >
> > As for parethesesº, I’m amoung those trying to avoid paren-noise as much
> > as possible (in tex, for example, I build mostly commands taking single
> > letters, symbols or commands as input so I may omit braces – but I agree
> > this can render texts unreadable if applied excessively).
> >
> > This personal taste notwithstanding, I do appreciate your
> > aesthetics-based plea for expressions like (x>0)-(x<0),
> > but I’d rather say x (> - <) 0 instead. (DRY principle)
> >
> > And I forgot to mention I also think 3. is another important argument.
> > When I taught J to pupils recently, they were overwhelmed by the way
> > this actually is more readable and intuitive, e. g.
> > append =: ,
> > product_of_items =: */
> > append_its_product =: append product_of_items
> > when I had been talking about forks.
> >
> >
> > ª now we’re back with this thread’s topic – in some way
> > º in German, “Klammern” are any of ()[]{}
> >
> >
> > Am 22.12.20 um 22:00 schrieb Roger Hui:
> > > May I suggest that you read Conventions Governing Order of Evaluation
> > > <https://www.jsoftware.com/papers/EvalOrder.htm> [Iverson 1966].
> > >
> > >
> > > On Tue, Dec 22, 2020 at 12:46 PM Hauke Rehr <hauke.r...@uni-jena.de>
> wrote:
> > >
> > >> IMO the value of right-to-left data flow is
> > >> that it reflects the way math notation works.
> > >> operatorD operatorC operatorB operatorA data
> > >> is “evaluated” from right to left.
> > >> -/ I used to consider merely a convenience.
> > >> Having read Roger’s answers, I guess I might
> > >> have been wrong.
> > >>
> > >> !warning: opinions/ranting ahead!
> > >> Anyone objecting against this doesn’t know
> > >> or doesn’t like maths.
> > >> Sadly, even methematicians often don’t know
> > >> their grammar, writing incomprehensible nonsense
> > >> like (ℚ is dense in ℝ)
> > >> ∃q∈ℚ: d(q,r)<ε ∀r∈ℝ, ε>0
> > >> instead of (my preferred way)
> > >> ∀(r,R)∈ℝ²∩<: ∃q∈ℚ: ((r,q),(q,R))∈<²
> > >> One might argue for “r<q<R” to be an okay alternative
> > >> for the part after the last colon. I’d disagree still.
> > >> What would “true<R” or “r<false” mean?
> > >>
> > >> Am 22.12.20 um 19:44 schrieb Devon McCormick:
> > >>> Thanks everyone for the tips!
> > >>>
> > >>> Bob - your suggestions still stalls:
> > >>>    20j18":%12x*-/chudSeriesa i.2
> > >>> 3.141592653589788641
> > >>>    20j18":%12x*-/chudSeriesa i.3
> > >>> 3.141592653589788641
> > >>> (Should be
> > >>> 3.14159265358979323846...
> > >>> as we all know :) )
> > >>>
> > >>> Roger's suggestion will take me longer to translate.
> > >>>
> > >>> I got into this diversion from thinking about the array languages
> FAQ I
> > >>> mentioned in the KEI Centenary discussion last Thursday.  One of the
> > >> first
> > >>> objections a lot of people have is the right-to-left order of
> evaluation
> > >>> and I wanted a good illustration of how this gives you alternating
> sum
> > >> with
> > >>> -/ .   I found it discouraging to read a recent missive from Niklaus
> > >> Wirth
> > >>> where he takes a jab at this useful simplification as an example of
> an
> > >>> unwarranted complication.  It's sad that an eminent luminary like
> this
> > >> has
> > >>> failed to grasp,  after all these years, how useful this convention
> is.
> > >>>
> > >>> The Chudnovsky formula is a good illustration because it includes a
> > >> "_1^k"
> > >>> term to force the alternating sum.
> > >>>
> > >>>
> > >>>
> > >>>
> > >>> On Tue, Dec 22, 2020 at 12:56 PM Roger Hui <
> rogerhui.can...@gmail.com>
> > >>> wrote:
> > >>>
> > >>>> In the J source, file vx.c, function jtxpi(), you find an
> > >> implementation of
> > >>>> the Chudnovsky algorithm using extended precision arithmetic.  It
> is in
> > >> C
> > >>>> but it should not be too hard to figure out the J equivalent.
> > >>>>
> > >>>> static XF1(jtxpi){A e;B p;I i,n,n1,sk;X a,b,c,d,*ev,k,f,m,q,s,s0,t;
> > >>>>  RZ(w);
> > >>>>  if(!XDIG(w))R xzero;
> > >>>>  ASSERT(jt->xmode!=XMEXACT,EVDOMAIN);
> > >>>>  RZ(a=xc(545140134L));
> > >>>>  RZ(b=XCUBE(xc(640320L)));
> > >>>>  RZ(c=xc(13591409L));
> > >>>>  RZ(d=xplus(xc(541681608L),xtymes(xc(10L),xc(600000000L))));
> > >>>>  n1=(13+AN(w)*XBASEN)/14; n=1+n1;
> > >>>>  RZ(e=piev(n,b)); ev=XAV(e); m=ev[n1];
> > >>>>  f=xzero; s0=xone; sk=1;
> > >>>>  for(i=p=0;;++i,p=!p){
> > >>>>   s=xtymes(s0,xplus(c,xtymes(a,xc(i))));
> > >>>>   t=xdiv(xtymes(s,m),ev[i],XMEXACT);
> > >>>>   f=p?xminus(f,t):xplus(f,t);
> > >>>>   if(i==n1)break;
> > >>>>   DO(6, s0=xtymes(s0,xc(sk++));); RE(s0);  /* s0 = ! 6*i */
> > >>>>  }
> > >>>>  f=xtymes(d,f);
> > >>>>  q=xpow(xc(10L),xc(14*n1));
> > >>>>  k=xtymes(xtymes(a,m),xsqrt(xtymes(b,xsq(q))));
> > >>>>  R xdiv(xtymes(k,w),xtymes(f,q),jt->xmode);
> > >>>> }    /* Chudnovsky Bros. */
> > >>>>
> > >>>>
> > >>>> On Tue, Dec 22, 2020 at 9:30 AM Devon McCormick <devon...@gmail.com
> >
> > >>>> wrote:
> > >>>>
> > >>>>> The Chudnovsky algorithm -
> > >>>>> https://en.wikipedia.org/wiki/Chudnovsky_algorithm - is supposed
> to
> > >> have
> > >>>>> the fastest convergence for pi (or 1/pi, to be exact).  I had tried
> > >> this
> > >>>>> one which is OK but only seems to add one digit for each power of
> 10:
> > >>>>>    6!:2 'pi=. 4*-/%>:+:i. 1e6'
> > >>>>> 0.0145579
> > >>>>>    20j18":pi
> > >>>>> 3.141591653589793420
> > >>>>>    6!:2 'pi=. 4*-/%>:+:i. 1e7'
> > >>>>> 0.140673
> > >>>>>    20j18":pi
> > >>>>> 3.141592553589793280
> > >>>>>    6!:2 'pi=. 4*-/%>:+:i. 1e8'
> > >>>>> 1.44487
> > >>>>>    20j18":pi
> > >>>>> 3.141592643589793177
> > >>>>>    6!:2 'pi=. 4*-/%>:+:i. 1e9'
> > >>>>> 16.7988
> > >>>>>    20j18":pi
> > >>>>> 3.141592652589793477
> > >>>>>
> > >>>>> The Chudnovsky series is fast and gives me 15 correct decimal
> digits
> > >> for
> > >>>>> only 2 iterations but fails to improve after that presumably
> because of
> > >>>>> floating point limitations:
> > >>>>>    20j18":%12*-/chudSeries i.2
> > >>>>> 3.141592653589795336
> > >>>>>    20j18":%12*-/chudSeries i.3
> > >>>>> 3.141592653589795336
> > >>>>>    20j18":%12*-/chudSeries i.4
> > >>>>> 3.141592653589795336
> > >>>>>    chudSeries i.4
> > >>>>> 0.0265258 4.98422e_16 2.59929e_30 1.45271e_44
> > >>>>>
> > >>>>> However, when I try to use extended precision, it does not seem to
> give
> > >>>> me
> > >>>>> extended precision results:
> > >>>>>    chudSeries=: 13 : '((!6x*x: y)*13591409x+545140134x*x:
> y)%(!3x*x:
> > >>>>> y)*(3x^~!x: y)*640320x^3r2+3x*x: y'
> > >>>>>
> > >>>>> I get the same fp values for the "i.4" argument as shown above.
> Am I
> > >>>> doing
> > >>>>> something wrong or overlooking something?
> > >>>>>
> > >>>>> Thanks,
> > >>>>>
> > >>>>> Devon
> > >>>>>
> > >>>>> --
> > >>>>>
> > >>>>> 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
> > >>>>
> > >>>
> > >>>
> > >>
> > >> --
> > >> ----------------------
> > >> mail written using NEO
> > >> neo-layout.org
> > >>
> > >> ----------------------------------------------------------------------
> > >> For information about J forums see
> http://www.jsoftware.com/forums.htm
> > >>
> > > ----------------------------------------------------------------------
> > > For information about J forums see http://www.jsoftware.com/forums.htm
> > >
> >
> > --
> > ----------------------
> > mail written using NEO
> > neo-layout.org
> >
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to