> 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)
The two expressions are not really comparable as the former predates the latter by about 27 years: (x>0)-(x<0), [Iverson 1962], x(> - <)0 [McDonnell & Iverson 1989]. Speaking of which, I think I prefer x(<->)0 over x(> - <)0 or x(>-<)0. x(<->)0 is a nice little pun, don't you think? :-) How about another pun, tailored especially for you. (I assume you speak German as well as J.) 4 {:: (,&.>i.4),<'dark side' How is that a pun? See below. Vier ist the path to the dark side. 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