(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