A function that works.  It is not simple. Remove the @

Linda

-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of EelVex
Sent: Saturday, November 26, 2011 9:15 AM
To: [email protected]
Cc: Programming forum
Subject: Re: [Jprogramming] FW: A simple function

On Sat, Nov 26, 2011 at 11:29 AM, m l <[email protected]> wrote:

>
> I`m a beginner in J programming.
> I need writing a simple function:
>
> round ( x * sqrt (x*y))
>
> Thanks in advance.
>
> Matxin
>
>
Among the gazillion ways to do this:

f =: [: <.0.5+ {. * %:@*/
f 15 30
318
------
1. If you have a list of two numbers: x,y, you multiply them with `*/`:
*/ 15 30
450

2. You then take the square root (`%:`) of (`@`) that:
(%: @ */) 15 30
21.2132

3. and multiply that by the first term of your list (`{.`)
({.  * (%: @ */)) 15 30
318.198

4. You then "apply" (`[:`) rounding (`<.0.5+`) to that:
([: <.0.5+ {. * (%:@*/)) 15 30
318

Note that the construct in step 3 is a train of 3 verbs (see:
http://www.jsoftware.com/help/learning/09.htm).
(f g h) y  == (f y) g (h y)
where
y = 15 30
f = {.  (take first)
g = *  (multiply)
h = %:@*/  (square root of product)

Also, you round a number n by taking the floor of (n + 0.5).
----------------------------------------------------------------------
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