code: public static double det( DMatrix4x4 mat ) {
  
          double  a11 = mat.a22;
          double  a12 = mat.a23;
          double  a13 = mat.a24;
          double  a21 = mat.a32;
          double  a22 = mat.a33;
          double  a23 = mat.a34;
          double  a31 = mat.a42;
          double  a32 = mat.a43;
          double  a33 = mat.a44;
  
          double ret = 0;
          ret += mat.a11 * ( + a11*(a22*a33 - a23*a32) - a12*(a21*a33 - a23*a31) + a13*(a21*a32 - a22*a31));
          a11 = mat.a21;
          a21 = mat.a31;
          a31 = mat.a41;
          ret -= mat.a12 * ( + a11*(a22*a33 - a23*a32) - a12*(a21*a33 - a23*a31) + a13*(a21*a32 - a22*a31));
          a12 = mat.a22;
          a22 = mat.a32;
          a32 = mat.a42;
          ret += mat.a13 * ( + a11*(a22*a33 - a23*a32) - a12*(a21*a33 - a23*a31) + a13*(a21*a32 - a22*a31));
          a13 = mat.a23;
          a23 = mat.a33;
          a33 = mat.a43;
          ret -= mat.a14 * ( + a11*(a22*a33 - a23*a32) - a12*(a21*a33 - a23*a31) + a13*(a21*a32 - a22*a31));
  
          return ret;
      }
docs: Computes the determinant using minor matrices.<br>
  WARNING: Potentially less stable than using LU decomposition.
  
  @param mat Input matrix.  Not modified.
  @return The determinant.