At 2018-09-08 17:44, you wrote:
Agreed on the "strong hint" in herona below. I
got into that habit years ago in Fortran....
btw, when using (13 :) in
f=. 13 : ' ... '
and afterwards calling (f)
is that a call to a special (symbolic) J compiler or
just to an interpreter module..?
And Sorry for the unintentional extra characters. (I'm seeing
A-circumflex where I'd typed space!) Just as well we're not talking APL!
Never mind - I'm beginning to get used of that.
It's a multi-layered/complex problem;
one probable contributor is my rather vintage
EMail Client (Qualcomm Eudora v7),
-which I still use on WinX (with some difficulty)-
others are foreign mail servers of certain providers.
-M
Mike
On 08/09/2018 09:40, Martin Kreuzer wrote:
@Linda
I think that your
  heron=: 13 :'%:*/(s y),(s y)-y'
looks superior to my initial approach as
it gathers _all four_ factors under the (*/) Times Insert.
btw "Hope you have good classes!"
For quite some time, I don't have classes any
more, but once in a while do private tutoring;
my last two students finished their 'matura' at
Easter this year (and one of them is on 'work &
travel' in New Zealand presently).
@Mike
Looking at your 'minor change' and the
resulting tacit code, methinks that (sy=. s -
y) is giving the interpreter a much stronger
hint that there's a re-used intemediate result
than the construct (' ... [ s2=. .... ') I used initially.
-M
At 2018-09-07 09:43, you 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
à à à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
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm