Reply to Mr. Wilson Grey
you said
if H(M*N) can be splitted into two parts
{H1}
----
{H2}
H1 has full rank. H2 can be expressed by some rows of H1.
Then one can get G from H1. so C*transpose(H1)=0, C(1*N) is any code word generated by G. Because H2 can be expressed by some rows of H1. So C*transpose(H2)=0.
So any codeword C*H=0
can this algorithm solve the problem which the parity check H is singular
since H1 is nonsingular why not use H1 instead of H