kill(all)$

van=facebook.com/LearningCalculus$

      Given an arbitrary 4x4 matrix:

M:matrix([a,b,c,d],[e,f,g,h],[i,j,k,l],[m,n,o,p]);

      Place it in echelon form:

echelon(M);

      Give the values new names, B=b/a and so forth:

N:matrix([1,B,C,D],[0,1,G,H],[0,0,1,L],[0,0,0,1]);

      Perform symbolic inversion of the simplified matrix,
      Bam! You're done, this method is fast also.
      You can precondition the matrix for stability by
      exchanging rows and columns also.

invert(N);