Recursive determinant evaluation

The site put off this minor project for fifteen long years, for good reasons: At the end, the analogue simulation section more or less shows the preferred way to evaluate a determinant. Another way, though surely not efficient unless the determinant is of very low order, is to break it up into minor determinants. There was little to do on a rainy summer afternoon, though, so the site picked up the list of forgotten projects: The program mainly serves as a demonstration of recursion.

The code is fairly straightforward- if you are not uncomfortable with recursion. The programming language used, however, checks the number and type of parameters to functions, and certainly does not like a variable number of arguments: In order to form determinants of a lower order, the number of rows which needs to be crossed out in successive stages is clearly increasing, so the row numbers are used to set bits in an integer (in corresponding positions). Eventually, of course, an integer runs out of bits, but so does patience and stack space, long before, in fact. You could use a string if you are concerned this approach is not general enough.