A couple of other more efficient equivalent expressions:

   ts '((-.x)*u y)+x*v y'
0.0627976 2.20212e7

   ts 'x}(u y),:v y'
0.0877125 2.93615e7

The last one generalizes to integer x and is described in
http://www.jsoftware.com/help/release/iamend.htm



----- Original Message -----
From: Roger Hui <[EMAIL PROTECTED]>
Date: Wednesday, March 5, 2008 7:47
Subject: Re: [Jprogramming] application different verbs to atoms
To: Programming forum <[email protected]>

> If u and v produce the same shape and same type result,
> it is often more efficient to simply apply u to the entire of y
> and v to the entire of y, and then pick out the values
> you want using x .  For example:
> 
>    x=: 4 5 [EMAIL PROTECTED] 2
>    y=: 4 5 [EMAIL PROTECTED] 10
>    u=: <:
>    v=: *:
>    x{"0 1 (u y) ,"0 v y
>  8 64 4 49  3
> _1  1 4 49 81
>  2  1 0  4 81
>  4  2 8  5  8
>    x [EMAIL PROTECTED]([EMAIL PROTECTED])@.["0 y
>  8 64 4 49  3
> _1  1 4 49 81
>  2  1 0  4 81
>  4  2 8  5  8
> 
> More efficient because each primitive "sees" a bigger slab 
> of the argument and so is able to amortize its fixed overhead
> over a larger number of atoms.
> 
>    x=: 1e6 [EMAIL PROTECTED] 2
>    y=: 1e6 [EMAIL PROTECTED] 10
>    (x{"0 1 (u y) ,"0 v y) -: x [EMAIL PROTECTED]([EMAIL PROTECTED])@.["0 y
> 1
> 
>    ts=: 6!:2 , 7!:[EMAIL PROTECTED]
>    ts 'x{"0 1 (u y) ,"0 v y'
> 0.555266 2.09734e7
>    ts 'x [EMAIL PROTECTED]([EMAIL PROTECTED])@.["0 y'
> 3.83144 2.1259e8
> 
> 
> 
> ----- Original Message -----
> From: "L.Tomei" <[EMAIL PROTECTED]>
> Date: Wednesday, March 5, 2008 5:35
> Subject: [Jprogramming] application different verbs to atoms
> To: [email protected]
> 
> > I have an array y, an array of booleans x (same shape of y), 
> and 
> > two monadic
> > verbs u and v.
> > How can I apply verb u to each atom of y when corresponding 
> > value of x is 0,
> > and verb v when corresponding value of x is 1?
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to