Thanks Roger & Henry,
They are much simpler than the other way I just realised I had already created 
in the other thread.

ind0=: (1 , {:@$) *"1 [: (<. ,. 1&|) {:@$ %~ [: I. ,  NB. RS
ind1=: [:;(i.@:# ,.&.> <@I.)  NB. RS
ind2=: $ #: I.@,   NB. RH & HR
ind3=: , # (#: i.@(*/))@$  NB. HR

Interestingly ind0 is actually very competitive with ind2, but would need more 
work to sort out tolerance (and is specific to matrices).
   tmp=: 0.0000001>1e6 [EMAIL PROTECTED]
   +/+/tmp
9
   ts=: 6!:2 , 7!:[EMAIL PROTECTED]

   ts 'ind0 tmp'
0.264977043172 134218688
   ts 'ind1 tmp'
3.26141171573 221066560
   ts 'ind2 tmp'
0.2667722434 134218688
   ts 'ind3 tmp'
|out of memory: ind3
|       ind3 tmp

---Roger Hui wrote:
> ($tst) #: I. , tst
>
> Works for any rank array, not just matrices.
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to