title: Which method of matrix determinant calculation is this?
body: <p>This is the approach John Carmack uses to calculate the determinant of a 4x4 matrix. From my investigations i have determined that it starts out like the laplace expansion theorem but then goes on to calculate 3x3 determinants which doesn't seem to agree with any papers i've read.</p>
  
  <pre><code>    // 2x2 sub-determinants
      float det2_01_01 = mat[0][0] * mat[1][1] - mat[0][1] * mat[1][0];
      float det2_01_02 = mat[0][0] * mat[1][2] - mat[0][2] * mat[1][0];
      float det2_01_03 = mat[0][0] * mat[1][3] - mat[0][3] * mat[1][0];
      float det2_01_12 = mat[0][1] * mat[1][2] - mat[0][2] * mat[1][1];
      float det2_01_13 = mat[0][1] * mat[1][3] - mat[0][3] * mat[1][1];
      float det2_01_23 = mat[0][2] * mat[1][3] - mat[0][3] * mat[1][2];
  
      // 3x3 sub-determinants
      float det3_201_012 = mat[2][0] * det2_01_12 - mat[2][1] * det2_01_02 + mat[2][2] * det2_01_01;
      float det3_201_013 = mat[2][0] * det2_01_13 - mat[2][1] * det2_01_03 + mat[2][3] * det2_01_01;
      float det3_201_023 = mat[2][0] * det2_01_23 - mat[2][2] * det2_01_03 + mat[2][3] * det2_01_02;
      float det3_201_123 = mat[2][1] * det2_01_23 - mat[2][2] * det2_01_13 + mat[2][3] * det2_01_12;
  
      return ( - det3_201_123 * mat[3][0] + det3_201_023 * mat[3][1] - det3_201_013 * mat[3][2] + det3_201_012 * mat[3][3] );
  </code></pre>
  
  <p>Could someone explain to me how this approach works or point me to a good write up which uses the same approach?</p>
  
  <p><strong>NOTE</strong><br>
  If it matters this matrix is row major.</p>