def det4D(m):
<EOL>return (m[<NUM_LIT:0>][<NUM_LIT:3>]*m[<NUM_LIT:1>][<NUM_LIT:2>]*m[<NUM_LIT:2>][<NUM_LIT:1>]*m[<NUM_LIT:3>][<NUM_LIT:0>] - m[<NUM_LIT:0>][<NUM_LIT:2>]*m[<NUM_LIT:1>][<NUM_LIT:3>]*m[<NUM_LIT:2>][<NUM_LIT:1>]*m[<NUM_LIT:3>][<NUM_LIT:0>] -<EOL>m[<NUM_LIT:0>][<NUM_LIT:3>]*m[<NUM_LIT:1>][<NUM_LIT:1>]*m[<NUM_LIT:2>][<NUM_LIT:2>]*m[<NUM_LIT:3>][<NUM_LIT:0>] + m[<NUM_LIT:0>][<NUM_LIT:1>]*m[<NUM_LIT:1>][<NUM_LIT:3>]*m[<NUM_LIT:2>][<NUM_LIT:2>]*m[<NUM_LIT:3>][<NUM_LIT:0>] +<EOL>m[<NUM_LIT:0>][<NUM_LIT:2>]*m[<NUM_LIT:1>][<NUM_LIT:1>]*m[<NUM_LIT:2>][<NUM_LIT:3>]*m[<NUM_LIT:3>][<NUM_LIT:0>] - m[<NUM_LIT:0>][<NUM_LIT:1>]*m[<NUM_LIT:1>][<NUM_LIT:2>]*m[<NUM_LIT:2>][<NUM_LIT:3>]*m[<NUM_LIT:3>][<NUM_LIT:0>] -<EOL>m[<NUM_LIT:0>][<NUM_LIT:3>]*m[<NUM_LIT:1>][<NUM_LIT:2>]*m[<NUM_LIT:2>][<NUM_LIT:0>]*m[<NUM_LIT:3>][<NUM_LIT:1>] + m[<NUM_LIT:0>][<NUM_LIT:2>]*m[<NUM_LIT:1>][<NUM_LIT:3>]*m[<NUM_LIT:2>][<NUM_LIT:0>]*m[<NUM_LIT:3>][<NUM_LIT:1>] +<EOL>m[<NUM_LIT:0>][<NUM_LIT:3>]*m[<NUM_LIT:1>][<NUM_LIT:0>]*m[<NUM_LIT:2>][<NUM_LIT:2>]*m[<NUM_LIT:3>][<NUM_LIT:1>] - m[<NUM_LIT:0>][<NUM_LIT:0>]*m[<NUM_LIT:1>][<NUM_LIT:3>]*m[<NUM_LIT:2>][<NUM_LIT:2>]*m[<NUM_LIT:3>][<NUM_LIT:1>] -<EOL>m[<NUM_LIT:0>][<NUM_LIT:2>]*m[<NUM_LIT:1>][<NUM_LIT:0>]*m[<NUM_LIT:2>][<NUM_LIT:3>]*m[<NUM_LIT:3>][<NUM_LIT:1>] + m[<NUM_LIT:0>][<NUM_LIT:0>]*m[<NUM_LIT:1>][<NUM_LIT:2>]*m[<NUM_LIT:2>][<NUM_LIT:3>]*m[<NUM_LIT:3>][<NUM_LIT:1>] +<EOL>m[<NUM_LIT:0>][<NUM_LIT:3>]*m[<NUM_LIT:1>][<NUM_LIT:1>]*m[<NUM_LIT:2>][<NUM_LIT:0>]*m[<NUM_LIT:3>][<NUM_LIT:2>] - m[<NUM_LIT:0>][<NUM_LIT:1>]*m[<NUM_LIT:1>][<NUM_LIT:3>]*m[<NUM_LIT:2>][<NUM_LIT:0>]*m[<NUM_LIT:3>][<NUM_LIT:2>] -<EOL>m[<NUM_LIT:0>][<NUM_LIT:3>]*m[<NUM_LIT:1>][<NUM_LIT:0>]*m[<NUM_LIT:2>][<NUM_LIT:1>]*m[<NUM_LIT:3>][<NUM_LIT:2>] + m[<NUM_LIT:0>][<NUM_LIT:0>]*m[<NUM_LIT:1>][<NUM_LIT:3>]*m[<NUM_LIT:2>][<NUM_LIT:1>]*m[<NUM_LIT:3>][<NUM_LIT:2>] +<EOL>m[<NUM_LIT:0>][<NUM_LIT:1>]*m[<NUM_LIT:1>][<NUM_LIT:0>]*m[<NUM_LIT:2>][<NUM_LIT:3>]*m[<NUM_LIT:3>][<NUM_LIT:2>] - m[<NUM_LIT:0>][<NUM_LIT:0>]*m[<NUM_LIT:1>][<NUM_LIT:1>]*m[<NUM_LIT:2>][<NUM_LIT:3>]*m[<NUM_LIT:3>][<NUM_LIT:2>] -<EOL>m[<NUM_LIT:0>][<NUM_LIT:2>]*m[<NUM_LIT:1>][<NUM_LIT:1>]*m[<NUM_LIT:2>][<NUM_LIT:0>]*m[<NUM_LIT:3>][<NUM_LIT:3>] + m[<NUM_LIT:0>][<NUM_LIT:1>]*m[<NUM_LIT:1>][<NUM_LIT:2>]*m[<NUM_LIT:2>][<NUM_LIT:0>]*m[<NUM_LIT:3>][<NUM_LIT:3>] +<EOL>m[<NUM_LIT:0>][<NUM_LIT:2>]*m[<NUM_LIT:1>][<NUM_LIT:0>]*m[<NUM_LIT:2>][<NUM_LIT:1>]*m[<NUM_LIT:3>][<NUM_LIT:3>] - m[<NUM_LIT:0>][<NUM_LIT:0>]*m[<NUM_LIT:1>][<NUM_LIT:2>]*m[<NUM_LIT:2>][<NUM_LIT:1>]*m[<NUM_LIT:3>][<NUM_LIT:3>] -<EOL>m[<NUM_LIT:0>][<NUM_LIT:1>]*m[<NUM_LIT:1>][<NUM_LIT:0>]*m[<NUM_LIT:2>][<NUM_LIT:2>]*m[<NUM_LIT:3>][<NUM_LIT:3>] + m[<NUM_LIT:0>][<NUM_LIT:0>]*m[<NUM_LIT:1>][<NUM_LIT:1>]*m[<NUM_LIT:2>][<NUM_LIT:2>]*m[<NUM_LIT:3>][<NUM_LIT:3>])<EOL>
det4D(array) yields the determinate of the given matrix array, which may have more than 2
  dimensions, in which case the later dimensions are multiplied and added point-wise.