(Ugly) improvement to handle matrix_3:

(testing if first row consists of only zero's)

    RREF matrix_3
1 2 0 0 3  4
0 0 1 0 0 _1
0 0 0 1 0  0
0 0 0 0 0  0
0 0 0 0 0  0


REF=: 3 :0
if. *./0={.y do. y return. end.
if. 0=#y do. i.0 0 return. end.
if. 0~:k=.{.ks=.{.y do.
     r1=. k%~}.ks
     (1,r1),0,. REF r1 (}.@]-(*{.))"1 }.y
else. if. 0=#z=. (#~0~:{."1) }.y do.
             0,. REF (}. ks),}."1 }.y
       else. REF (}.y),~ks+{.z
       end.
end.
)

reduceStep=: 3 :0
if. *./0={.y do. y return. end.
select. {.ks=.{.y
case. 1 do. ks, 0,. (}.-(}.ks)*{.)"1 }.y
case. 0 do. ({."1 y),"_1 reduceStep }."1 y
case.  do. y
end.
)

RREF =: ([:{.&> (reduceStep@}.&.>^:(1<#&>)^:a:@ <@reduceStep))&.|. @ REF



>>     matrix_3
>> 1  2  3  4  3  1
>> 2  4  6  2  6  2
>> 3  6 18  9  9 _6
>> 4  8 12 10 12  4
>> 5 10 24 11 15 _4

-- 
Met vriendelijke groet,
@@i = Arie Groeneveld

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

Reply via email to