42 lines
1.1 KiB
Text
42 lines
1.1 KiB
Text
DIM matrix(2,3)
|
|
matrix() = 1, 2, -1, -4, \
|
|
\ 2, 3, -1, -11, \
|
|
\ -2, 0, -3, 22
|
|
PROCrref(matrix())
|
|
FOR row% = 0 TO 2
|
|
FOR col% = 0 TO 3
|
|
PRINT matrix(row%,col%);
|
|
NEXT
|
|
PRINT
|
|
NEXT row%
|
|
END
|
|
|
|
DEF PROCrref(m())
|
|
LOCAL lead%, nrows%, ncols%, i%, j%, r%, n
|
|
nrows% = DIM(m(),1)+1
|
|
ncols% = DIM(m(),2)+1
|
|
FOR r% = 0 TO nrows%-1
|
|
IF lead% >= ncols% EXIT FOR
|
|
i% = r%
|
|
WHILE m(i%,lead%) = 0
|
|
i% += 1
|
|
IF i% = nrows% THEN
|
|
i% = r%
|
|
lead% += 1
|
|
IF lead% = ncols% EXIT FOR
|
|
ENDIF
|
|
ENDWHILE
|
|
FOR j% = 0 TO ncols%-1 : SWAP m(i%,j%),m(r%,j%) : NEXT
|
|
n = m(r%,lead%)
|
|
IF n <> 0 FOR j% = 0 TO ncols%-1 : m(r%,j%) /= n : NEXT
|
|
FOR i% = 0 TO nrows%-1
|
|
IF i% <> r% THEN
|
|
n = m(i%,lead%)
|
|
FOR j% = 0 TO ncols%-1
|
|
m(i%,j%) -= m(r%,j%) * n
|
|
NEXT
|
|
ENDIF
|
|
NEXT
|
|
lead% += 1
|
|
NEXT r%
|
|
ENDPROC
|