You can always find cases which optimizing compilers don't deal with (because there's infinities of those).
That said, in this case, I think it's worth looking at the result of herona f. Thanks, -- Raul On Fri, Sep 7, 2018 at 5:43 AM 'Mike Day' via Programming <programm...@jsoftware.com> wrote: > > Fair enough, it looks neat, but doesn't deal with Martin Kreuzer's > original requirement to apply > s just the once, ie how should we handle the intermediate result, s? > > On the other hand, David Lambert and others propose variations on how to > factor the formula so > as to use the result of s. > > It's usually easy in explicit form, harder in tacit form. It seems to > me that using 13 : ... is very > helpful in developing a tacit form, but it often fails to spot > opportunities to save intermediate > results. 13 : ... isn't an optimising compiler - or is it? It certainly > doesn't spot the opportunity > to save the repeated (s y) in Linda's example. > > Somewhat to my surprise, a minor change to Linda's explicit expression > does result in a > single applicaton of s in a quite elegant tacit form: > > herona=: 13 :'%:*/sy,(sy=.s y)-y' > > herona 3 4 5 > > 6 > > herona 5 12 13 > > 30 > > herona > > [: %: [: */ s ([ , -) ] > > > Cheers, > > Mike > > On 07/09/2018 08:19, Linda Alvord wrote: > > It keeps getting simpler: > > > > s=: 13 :'-:+/y' > > heron=: 13 :'%:*/(s y),(s y)-y' > > heron 3 4 5 > > heron 4 5 6 > > d > > > > > > ;:'[: -: +/' > > > > heron > > > > ;:'[: %: [: */ s , s - ]' > > > > > > Explisit sentences are like English and the new language is the computers J > > anguage. First learn the words and then learn to read ghe ords in > > sentences. And just as you might when learning Spanish, you might in time > > begin to speak it. > > > > Linda > > > > > > -----Original Message----- > > From: Programming <programming-boun...@forums.jsoftware.com> On Behalf Of > > David Lambert > > Sent: Thursday, September 6, 2018 6:11 PM > > To: programming <programm...@jsoftware.com> > > Subject: Re: [Jprogramming] Tacit form: How to handle intermediate > > > > A hook can save recomputation. > > > > (computation with original data and reused me) (resuse me) > > > > > > test=: [: %: ([: -: +/) * [: */ ([: -: +/) - ] > > > > NB. play with the half factor > > f=: 4 %~ [: %: [: */ (([ , (- +:))~ +/) > > > > NB. shorter > > > > NB. c o m p u t a t i o n r e u s e > > g=: ([: %: [: */ [ , -)~ ([: -: +/) > > > > g2=: ([: %: [: */ [ , -)~ -:@:(+/) > > > > > > %/ (g , test) 3?@:$0 > > 1 > > > > > > On 09/04/2018 08:00 AM, programming-requ...@forums.jsoftware.com wrote: > >> Date: Tue, 04 Sep 2018 11:50:43 +0000 > >> From: Martin Kreuzer<i...@airkreuzer.com> To:programm...@jsoftware.com > >> Subject: [Jprogramming] Tacit form: How to handle intermediate > >> result..? > >> Message-ID: > >> <5b8e71a5.1c69fb81.65e5c.4a9esmtpin_added_miss...@mx.google.com> > >> Content-Type: text/plain; charset="us-ascii"; format=flowed > >> > >> Hi all - > >> > >> To calculate the area of a flat triangle, using Heron's formula, > >> A(a,b,c)= sqrt( s2*(s2-a)*(s2-b)*(s2-c) ) I wrote a simple function > >> doing this: > >> > >> * get the three sides (as list input y) > >> * compute the half perimeter s2 > >> * build the differences s2-y > >> * build product > >> * take square root > >> > >> My explicit solution looks like this > >> > >> taher=: 13 : '%: s2 * */ s2-y [ s2=. -: +/ y' > >> > >> and works > >> > >> taher 3 4 5 > >> 6 > >> > >> Suggested tacit version looks like this (and works too) > >> > >> tahert=: [: %: ([: -: +/) * [: */ ([: -: +/) - ] > >> > >> Q: Is there a way to reference the intermediate result of ([: -: +/) > >> the half perimeter s2 within the tacit expression, as has been done in > >> the explicit..? > >> [Guess the interpreter takes care of this anyway; my question aims at > >> whether a shorter formulation could be reached.] > >> > >> Thanks > >> -M > > ---------------------------------------------------------------------- > > For information about J forums see > > https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.jsoftware.com%2Fforums.htm&data=02%7C01%7C%7C8d2147240443485c7f8c08d61445ac18%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636718686798916834&sdata=Yuys8QE3yMvBtUraCohR9dRgPugZDeNaNh3BoBCzJjU%3D&reserved=0 > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > > > > --- > This email has been checked for viruses by Avast antivirus software. > https://www.avast.com/antivirus > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm