Pouring over some matrix theory on the weekends with APL. In APL: sqmat 2 3 7 4 sqmat_transposed ← ⍉sqmat sqmat_transposed 2 7 3 4 ⍝ the determinant of a square matrix is equal to the determinant of the transposed matrix det sqmat ¯13 det sqmat_transposed ¯13 ⍝ interchanging the rows or columns of a square matrix reverse the sign of its determinant det sqmat[2 1;1 2] 13 det sqmat[1 2;2 1] 13 ⍝ two identical rows or columns of a square matrix has determinant zero det (2 2⍴3 1 3 1) 0 det (2 2⍴3 3 4 4 ) 0 ⍝ From Rosetta code we have a simple definition for generating ⍝ a n×n identity matrix ID ← {∘.=/⍳¨ ⍵ ⍵} ⍝ create 2 vectors, build an outer product with an equal comparison ID 5 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 ⍝ Given Ax = b, we can solve it if we can find a matrix B such that AB = I ⍝ If det A = 0, then it implies no such matrix B exists that satisfies the above A ← 2 2⍴1 2 3 4 A 1 2 3 4 det A ¯2 C ← (2 2⍴1 ¯1 ¯1 1) × A[2 1; 2 1] ⍝ cofactor matrix C 4 ¯3 ¯2 1 ⍝ Since the determinant is non-zero, we have ⍝ B = (1/det A) × C_transposed C_transposed ← ⍉C C_transposed 4 ¯2 ¯3 1 (÷det A) ¯0.5 B ← (÷det A) × C_transposed B ¯2 1 1.5 ¯0.5 ⌹A ⍝ in APL we have this monadic symbol that gives the inverse of a matrix ¯2 1 1.5 ¯0.5 ⍝ matrix multiplication with +.× should yield the identity matrix (A +.× B) ≡ ⊃(ID 2) 1