There are a large number of programming problems that involve the use of matrices and linear algebra. And when you have a matrix, there may be times where you need to know its determinant. For calculating the determinant of a 2x2, or a 3x3 matrix, there’s a fairly straightforward formula. On the other hand, if you need a generic solution for a matrix of any size, you have to get a little more complicated.

One of Jarrod’s co-workers had their own “optimized” solution for this. It’s optimized in the sense that it doesn’t always return the right answer. This particular sample is for 3x3 matrices, but don’t worry: it’s been copy/pasted into all the spots that need to work with 4x4 matrices too.

N6& = 3
P6& = 3
DE1:
        For Q& = 2 To P6&
            For S& = 1 To Q& - 1
               If Z6& <> 0 Then Let Q& = N6&: Let S& = Q& - 1: Let Z6& = 0: GoTo DE1
               If A#(S&, S&) <> 0 Then GoTo DE3
               For U& = S& + 1 To P6&: If A#(U&, S&) <> 0 Then Let T& = -T&: GoTo DE2
               Next U&: GoTo DE4
DE2:
               For Z6& = 1 To P6&: A6# = A#(U&, Z6&): A#(U&, Z6&) = A#(S&, Z6&): A#(S&, Z6&) = A6#
               Next Z6&
DE3:
               V# = A#(Q&, S&) / A#(S&, S&)
               For R6& = 1 To P6&: A#(Q&, R6&) = A#(Q&, R6&) - V# * A#(S&, R6&): Next R6&
           Next S&
       Next Q&
       w# = 1
       For X6& = 1 To P6&: w# = w# * A#(X6&, X6&): Next X6&
DE4:
       Det# = (w# * T&)

Don’t let the unusual characters fool you. This was found in a Visual Basic program, although it started life in some other dialect.

[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!