Thanks Henry,

I woke up this morning realizing that the argument to & could be any value and 
that cleared up a lot of my fuzziness on what was going on. Thank you to Pascal 
as well for the explanation and Roger for twisting my brain for a few hours.

operand =. 2 2 2 $ 3 2 2 3 2 3 3 2

bitmask =. 2 2 2 $ 1 0 0 1 0 1 1 0

operator =. >:

   bitmask 0&(] operator) operand   NB. original
4 3
3 4

3 4
4 3
   bitmask 10&(] operator) operand   NB. 10&  same result
4 3
3 4

3 4
4 3
   bitmask ' '&(] operator) operand  NB. type is not even important - ' '& works
4 3
3 4

3 4
4 3

For efficiency, I don't see much difference between the two with these 
particular values
   1000 timespacex ' bitmask 0&(] operator)"0 operand'
1.013e_6 2816
   1000 timespacex  'bitmask (operator@]^:[)"0 operand'  
9.38e_7 2816

But the much simpler addition of the bitmask to the operand is 3 times faster 
and takes up half the space.
   1000 timespacex  'bitmask + operand'  
3.14e_7 1408

   bitmask + operand
4 2
2 4

2 4
4 2

Cheers, bob


> On Aug 17, 2020, at 07:20, Henry Rich <henryhr...@gmail.com> wrote:
> 
> In the example above, the 0& could be any value and is used only as a way of 
> getting the power function.

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to