Transform M into row reduced echelon form (rref)

Gauss-Jordan Elimination

Mark first row (*) as next result row
M = * 00000000000000000000000000000001
      00000000000000000000001100000010
      00000000000000000000101000000100
      00000000000000000001011110001000
      00000000000000000001001010010000
      00000000000000000001110100100000
Highlight next pivot row and column
Find first row with leftmost bit set starting from next result row.
M = * 00000000000000000000000000000001
      00000000000000000000001100000010
      00000000000000000000101000000100
      00000000000000000001011110001000
      00000000000000000001001010010000
      00000000000000000001110100100000

Swap pivot row and next result row; Increment next result row.
M =   00000000000000000001011110001000
    * 00000000000000000000001100000010
      00000000000000000000101000000100
      00000000000000000000000000000001
      00000000000000000001001010010000
      00000000000000000001110100100000

Clear pivot column.
Add pivot row to all other rows with bit set in pivot column
M =   00000000000000000001011110001000
    * 00000000000000000000001100000010
      00000000000000000000101000000100
      00000000000000000000000000000001
      00000000000000000000010100011000
      00000000000000000000101010101000

Highlight next pivot row and column
Find first row with leftmost bit set starting from next result row.
M =   00000000000000000001011110001000
    * 00000000000000000000001100000010
      00000000000000000000101000000100
      00000000000000000000000000000001
      00000000000000000000010100011000
      00000000000000000000101010101000

Swap pivot row and next result row; Increment next result row.
M =   00000000000000000001011110001000
      00000000000000000000101000000100
    * 00000000000000000000001100000010
      00000000000000000000000000000001
      00000000000000000000010100011000
      00000000000000000000101010101000

Clear pivot column.
Add pivot row to all other rows with bit set in pivot column
M =   00000000000000000001011110001000
      00000000000000000000101000000100
    * 00000000000000000000001100000010
      00000000000000000000000000000001
      00000000000000000000010100011000
      00000000000000000000000010101100

Highlight next pivot row and column
Find first row with leftmost bit set starting from next result row.
M =   00000000000000000001011110001000
      00000000000000000000101000000100
    * 00000000000000000000001100000010
      00000000000000000000000000000001
      00000000000000000000010100011000
      00000000000000000000000010101100

Swap pivot row and next result row; Increment next result row.
M =   00000000000000000001011110001000
      00000000000000000000101000000100
      00000000000000000000010100011000
    * 00000000000000000000000000000001
      00000000000000000000001100000010
      00000000000000000000000010101100

Clear pivot column.
Add pivot row to all other rows with bit set in pivot column
M =   00000000000000000001001010010000
      00000000000000000000101000000100
      00000000000000000000010100011000
    * 00000000000000000000000000000001
      00000000000000000000001100000010
      00000000000000000000000010101100

Highlight next pivot row and column
Find first row with leftmost bit set starting from next result row.
M =   00000000000000000001001010010000
      00000000000000000000101000000100
      00000000000000000000010100011000
    * 00000000000000000000000000000001
      00000000000000000000001100000010
      00000000000000000000000010101100

Swap pivot row and next result row; Increment next result row.
M =   00000000000000000001001010010000
      00000000000000000000101000000100
      00000000000000000000010100011000
      00000000000000000000001100000010
    * 00000000000000000000000000000001
      00000000000000000000000010101100

Clear pivot column.
Add pivot row to all other rows with bit set in pivot column
M =   00000000000000000001000110010010
      00000000000000000000100100000110
      00000000000000000000010100011000
      00000000000000000000001100000010
    * 00000000000000000000000000000001
      00000000000000000000000010101100

Highlight next pivot row and column
Find first row with leftmost bit set starting from next result row.
M =   00000000000000000001000110010010
      00000000000000000000100100000110
      00000000000000000000010100011000
      00000000000000000000001100000010
    * 00000000000000000000000000000001
      00000000000000000000000010101100

Swap pivot row and next result row; Increment next result row.
M =   00000000000000000001000110010010
      00000000000000000000100100000110
      00000000000000000000010100011000
      00000000000000000000001100000010
      00000000000000000000000010101100
    * 00000000000000000000000000000001

Clear pivot column.
Add pivot row to all other rows with bit set in pivot column
M =   00000000000000000001000100111110
      00000000000000000000100100000110
      00000000000000000000010100011000
      00000000000000000000001100000010
      00000000000000000000000010101100
    * 00000000000000000000000000000001

Highlight next pivot row and column
Find first row with leftmost bit set starting from next result row.
M =   00000000000000000001000100111110
      00000000000000000000100100000110
      00000000000000000000010100011000
      00000000000000000000001100000010
      00000000000000000000000010101100
    * 00000000000000000000000000000001

Increment next result row.
M =   00000000000000000001000100111110
      00000000000000000000100100000110
      00000000000000000000010100011000
      00000000000000000000001100000010
      00000000000000000000000010101100
      00000000000000000000000000000001

Clear pivot column.
Add pivot row to all other rows with bit set in pivot column
M =   00000000000000000001000100111110
      00000000000000000000100100000110
      00000000000000000000010100011000
      00000000000000000000001100000010
      00000000000000000000000010101100
      00000000000000000000000000000001

Done.
M = 00000000000000000001000100111110
    00000000000000000000100100000110
    00000000000000000000010100011000
    00000000000000000000001100000010
    00000000000000000000000010101100
    00000000000000000000000000000001


See also: